]> git.ipfire.org Git - people/ms/linux.git/commitdiff
serial: 8250_pci: Add support for 12 port Exar boards
authorSoeren Grunewald <soeren.grunewald@desy.de>
Thu, 11 Jun 2015 07:25:04 +0000 (09:25 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 9 Nov 2015 20:50:26 +0000 (12:50 -0800)
commit be32c0cf0462c36f482b5ddcff1d8371be1e183c upstream.

The Exar XR17V358 can also be combined with a XR17V354 chip to act as a
single 12 port chip. This works the same way as the combining two XR17V358
chips. But the reported device id then is 0x4358.

Signed-off-by: Soeren Grunewald <soeren.grunewald@desy.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/8250/8250_pci.c

index 241b1cb9ee9c021fe8107280fdb0334777d08058..996f8f3fd423eabcb8f9a55be000a8219d2635a7 100644 (file)
@@ -1772,6 +1772,7 @@ pci_wch_ch353_setup(struct serial_private *priv,
 #define PCI_DEVICE_ID_SUNIX_1999       0x1999
 
 
+#define PCI_DEVICE_ID_EXAR_XR17V4358   0x4358
 #define PCI_DEVICE_ID_EXAR_XR17V8358   0x8358
 
 /* Unknown vendors/cards - this should not be in linux/pci_ids.h */
@@ -2268,6 +2269,13 @@ static struct pci_serial_quirk pci_serial_quirks[] __refdata = {
                .subdevice      = PCI_ANY_ID,
                .setup          = pci_xr17v35x_setup,
        },
+       {
+               .vendor = PCI_VENDOR_ID_EXAR,
+               .device = PCI_DEVICE_ID_EXAR_XR17V4358,
+               .subvendor      = PCI_ANY_ID,
+               .subdevice      = PCI_ANY_ID,
+               .setup          = pci_xr17v35x_setup,
+       },
        {
                .vendor = PCI_VENDOR_ID_EXAR,
                .device = PCI_DEVICE_ID_EXAR_XR17V8358,
@@ -2715,6 +2723,7 @@ enum pci_board_num_t {
        pbn_exar_XR17V352,
        pbn_exar_XR17V354,
        pbn_exar_XR17V358,
+       pbn_exar_XR17V4358,
        pbn_exar_XR17V8358,
        pbn_exar_ibm_saturn,
        pbn_pasemi_1682M,
@@ -3385,6 +3394,14 @@ static struct pciserial_board pci_boards[] = {
                .reg_shift      = 0,
                .first_offset   = 0,
        },
+       [pbn_exar_XR17V4358] = {
+               .flags          = FL_BASE0,
+               .num_ports      = 12,
+               .base_baud      = 7812500,
+               .uart_offset    = 0x400,
+               .reg_shift      = 0,
+               .first_offset   = 0,
+       },
        [pbn_exar_XR17V8358] = {
                .flags          = FL_BASE0,
                .num_ports      = 16,
@@ -4763,6 +4780,10 @@ static struct pci_device_id serial_pci_tbl[] = {
                PCI_ANY_ID, PCI_ANY_ID,
                0,
                0, pbn_exar_XR17V358 },
+       {       PCI_VENDOR_ID_EXAR, PCI_DEVICE_ID_EXAR_XR17V4358,
+               PCI_ANY_ID, PCI_ANY_ID,
+               0,
+               0, pbn_exar_XR17V4358 },
        {       PCI_VENDOR_ID_EXAR, PCI_DEVICE_ID_EXAR_XR17V8358,
                PCI_ANY_ID, PCI_ANY_ID,
                0,