These changes are a raw update to a vanilla kernel 4.1.10, with the
[kvmfornfv.git] / kernel / drivers / tty / serial / 8250 / 8250_pci.c
index 46bcebb..9373cca 100644 (file)
@@ -2000,6 +2000,12 @@ pci_wch_ch38x_setup(struct serial_private *priv,
 
 #define PCI_DEVICE_ID_EXAR_XR17V8358   0x8358
 
+#define PCI_VENDOR_ID_PERICOM                  0x12D8
+#define PCI_DEVICE_ID_PERICOM_PI7C9X7951       0x7951
+#define PCI_DEVICE_ID_PERICOM_PI7C9X7952       0x7952
+#define PCI_DEVICE_ID_PERICOM_PI7C9X7954       0x7954
+#define PCI_DEVICE_ID_PERICOM_PI7C9X7958       0x7958
+
 /* Unknown vendors/cards - this should not be in linux/pci_ids.h */
 #define PCI_SUBDEVICE_ID_UNKNOWN_0x1584        0x1584
 #define PCI_SUBDEVICE_ID_UNKNOWN_0x1588        0x1588
@@ -2314,27 +2320,12 @@ static struct pci_serial_quirk pci_serial_quirks[] __refdata = {
         * Pericom
         */
        {
-               .vendor         = 0x12d8,
-               .device         = 0x7952,
-               .subvendor      = PCI_ANY_ID,
-               .subdevice      = PCI_ANY_ID,
-               .setup          = pci_pericom_setup,
-       },
-       {
-               .vendor         = 0x12d8,
-               .device         = 0x7954,
-               .subvendor      = PCI_ANY_ID,
-               .subdevice      = PCI_ANY_ID,
-               .setup          = pci_pericom_setup,
-       },
-       {
-               .vendor         = 0x12d8,
-               .device         = 0x7958,
-               .subvendor      = PCI_ANY_ID,
-               .subdevice      = PCI_ANY_ID,
-               .setup          = pci_pericom_setup,
+               .vendor         = PCI_VENDOR_ID_PERICOM,
+               .device         = PCI_ANY_ID,
+               .subvendor      = PCI_ANY_ID,
+               .subdevice      = PCI_ANY_ID,
+               .setup          = pci_pericom_setup,
        },
-
        /*
         * PLX
         */
@@ -3031,6 +3022,10 @@ enum pci_board_num_t {
        pbn_fintek_8,
        pbn_fintek_12,
        pbn_wch384_4,
+       pbn_pericom_PI7C9X7951,
+       pbn_pericom_PI7C9X7952,
+       pbn_pericom_PI7C9X7954,
+       pbn_pericom_PI7C9X7958,
 };
 
 /*
@@ -3848,7 +3843,6 @@ static struct pciserial_board pci_boards[] = {
                .base_baud      = 115200,
                .first_offset   = 0x40,
        },
-
        [pbn_wch384_4] = {
                .flags          = FL_BASE0,
                .num_ports      = 4,
@@ -3856,6 +3850,33 @@ static struct pciserial_board pci_boards[] = {
                .uart_offset    = 8,
                .first_offset   = 0xC0,
        },
+       /*
+        * Pericom PI7C9X795[1248] Uno/Dual/Quad/Octal UART
+        */
+       [pbn_pericom_PI7C9X7951] = {
+               .flags          = FL_BASE0,
+               .num_ports      = 1,
+               .base_baud      = 921600,
+               .uart_offset    = 0x8,
+       },
+       [pbn_pericom_PI7C9X7952] = {
+               .flags          = FL_BASE0,
+               .num_ports      = 2,
+               .base_baud      = 921600,
+               .uart_offset    = 0x8,
+       },
+       [pbn_pericom_PI7C9X7954] = {
+               .flags          = FL_BASE0,
+               .num_ports      = 4,
+               .base_baud      = 921600,
+               .uart_offset    = 0x8,
+       },
+       [pbn_pericom_PI7C9X7958] = {
+               .flags          = FL_BASE0,
+               .num_ports      = 8,
+               .base_baud      = 921600,
+               .uart_offset    = 0x8,
+       },
 };
 
 static const struct pci_device_id blacklist[] = {
@@ -5116,6 +5137,25 @@ static struct pci_device_id serial_pci_tbl[] = {
                PCI_ANY_ID, PCI_ANY_ID,
                0,
                0, pbn_exar_XR17V8358 },
+       /*
+        * Pericom PI7C9X795[1248] Uno/Dual/Quad/Octal UART
+        */
+       {   PCI_VENDOR_ID_PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7951,
+               PCI_ANY_ID, PCI_ANY_ID,
+               0,
+               0, pbn_pericom_PI7C9X7951 },
+       {   PCI_VENDOR_ID_PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7952,
+               PCI_ANY_ID, PCI_ANY_ID,
+               0,
+               0, pbn_pericom_PI7C9X7952 },
+       {   PCI_VENDOR_ID_PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7954,
+               PCI_ANY_ID, PCI_ANY_ID,
+               0,
+               0, pbn_pericom_PI7C9X7954 },
+       {   PCI_VENDOR_ID_PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7958,
+               PCI_ANY_ID, PCI_ANY_ID,
+               0,
+               0, pbn_pericom_PI7C9X7958 },
        /*
         * Topic TP560 Data/Fax/Voice 56k modem (reported by Evan Clarke)
         */