switch (pdev->device) {
case 0x081B:
+ case 0x08FC:
index = 0;
break;
case 0x081C:
+ case 0x08FD:
index = 1;
break;
case 0x081D:
+ case 0x08FE:
index = 2;
break;
case 0x081E:
+ case 0x08FF:
/* internal DMA controller */
index = 3;
break;
return;
/* For port 0/1/2, priv is the address of uart_hsu_port */
- if (pdev->device != 0x081E) {
+ if ((pdev->device != 0x081E) && (pdev->device != 0x08FF)) {
up = priv;
/* Moved cancel_work_sync call after up initialization */
cancel_work_sync(&up->qwork);
/* First 3 are UART ports, and the 4th is the DMA */
static const struct pci_device_id pci_ids[] __devinitdata = {
+ /* Penwell support */
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x081B) },
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x081C) },
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x081D) },
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x081E) },
+
+ /* Cloverview support */
+ { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x08FC) },
+ { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x08FD) },
+ { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x08FE) },
+ { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x08FF) },
{},
};
struct uart_hsu_port *up;
/* Make sure this is not the internal dma controller */
- if (priv && (pdev->device != 0x081E)) {
+ if (priv && (pdev->device != 0x081E) && (pdev->device != 0x08FF)) {
up = priv;
if (!allow_for_suspend(up))
return -EBUSY;
struct uart_hsu_port *up;
/* Make sure this is not the internal dma controller */
- if (priv && (pdev->device != 0x081E)) {
+ if (priv && (pdev->device != 0x081E) && (pdev->device != 0x08FF)) {
up = priv;
if (query_q(up))
void *priv = pci_get_drvdata(pdev);
struct uart_hsu_port *up;
- if (priv && (pdev->device != 0x081E)) {
+ if (priv && (pdev->device != 0x081E) && (pdev->device != 0x08FF)) {
up = priv;
if (up->suspended)