8250: Add more OxSemi devices
authorLee Howard <lee.howard@mainpine.com>
Tue, 21 Oct 2008 12:50:14 +0000 (13:50 +0100)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 23 Oct 2008 16:35:18 +0000 (09:35 -0700)
These have the Mainpine PCI identifier on however

Additional paranoia check for Tornado versions added by Alan Cox

(and this time I remembered to do an stg refresh so that the corrections ended
 up in these patches not randomly attached to another diff -- Alan)

Signed-off-by: Lee Howard <lee.howard@mainpine.com>
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/serial/8250_pci.c

index 1bdb08b41f7385f8b69deb586b21391f5002d418..5450a0e5ecdb37940e13cd47d62c56e3be6e3042 100644 (file)
@@ -1865,6 +1865,11 @@ static int pci_oxsemi_tornado_init(struct pci_dev *dev, struct pciserial_board *
        unsigned long deviceID;
        unsigned int  number_uarts;
 
        unsigned long deviceID;
        unsigned int  number_uarts;
 
+       /* OxSemi Tornado devices are all 0xCxxx */
+       if (dev->vendor == PCI_VENDOR_ID_OXSEMI &&
+           (dev->device & 0xF000) != 0xC000)
+               return 0;
+
        p = pci_iomap(dev, 0, 5);
        if (p == NULL)
                return -ENOMEM;
        p = pci_iomap(dev, 0, 5);
        if (p == NULL)
                return -ENOMEM;
@@ -1893,7 +1898,8 @@ pciserial_init_ports(struct pci_dev *dev, struct pciserial_board *board)
        /*
         * Find number of ports on board
         */
        /*
         * Find number of ports on board
         */
-       if (dev->vendor == PCI_VENDOR_ID_OXSEMI)
+       if (dev->vendor == PCI_VENDOR_ID_OXSEMI ||
+           dev->vendor == PCI_VENDOR_ID_MAINPINE)
                pci_oxsemi_tornado_init(dev, board);
 
        nr_ports = board->num_ports;
                pci_oxsemi_tornado_init(dev, board);
 
        nr_ports = board->num_ports;
@@ -2510,7 +2516,21 @@ static struct pci_device_id serial_pci_tbl[] = {
        {       PCI_VENDOR_ID_OXSEMI, 0xc4cf,    /* OXPCIe200 1 Native UART */
                PCI_ANY_ID, PCI_ANY_ID, 0, 0,
                pbn_oxsemi_1_4000000 },
        {       PCI_VENDOR_ID_OXSEMI, 0xc4cf,    /* OXPCIe200 1 Native UART */
                PCI_ANY_ID, PCI_ANY_ID, 0, 0,
                pbn_oxsemi_1_4000000 },
-
+       /*
+        * Mainpine Inc. IQ Express "Rev3" utilizing OxSemi Tornado
+        */
+       {       PCI_VENDOR_ID_MAINPINE, 0x4000, /* IQ Express 1 Port V.34 Super-G3 Fax */
+               PCI_VENDOR_ID_MAINPINE, 0x4001, 0, 0,
+               pbn_oxsemi_1_4000000 },
+       {       PCI_VENDOR_ID_MAINPINE, 0x4000, /* IQ Express 2 Port V.34 Super-G3 Fax */
+               PCI_VENDOR_ID_MAINPINE, 0x4002, 0, 0,
+               pbn_oxsemi_2_4000000 },
+       {       PCI_VENDOR_ID_MAINPINE, 0x4000, /* IQ Express 4 Port V.34 Super-G3 Fax */
+               PCI_VENDOR_ID_MAINPINE, 0x4004, 0, 0,
+               pbn_oxsemi_4_4000000 },
+       {       PCI_VENDOR_ID_MAINPINE, 0x4000, /* IQ Express 8 Port V.34 Super-G3 Fax */
+               PCI_VENDOR_ID_MAINPINE, 0x4008, 0, 0,
+               pbn_oxsemi_8_4000000 },
        /*
         * SBS Technologies, Inc. P-Octal and PMC-OCTPRO cards,
         * from skokodyn@yahoo.com
        /*
         * SBS Technologies, Inc. P-Octal and PMC-OCTPRO cards,
         * from skokodyn@yahoo.com