Commit d20a171c authored by Soeren Grunewald's avatar Soeren Grunewald Committed by Luis Henriques

serial: 8250_pci: Add support for 12 port Exar boards

commit be32c0cf 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: default avatarSoeren Grunewald <soeren.grunewald@desy.de>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarLuis Henriques <luis.henriques@canonical.com>
parent 3fd8b6af
...@@ -1802,6 +1802,7 @@ pci_wch_ch353_setup(struct serial_private *priv, ...@@ -1802,6 +1802,7 @@ pci_wch_ch353_setup(struct serial_private *priv,
#define PCI_DEVICE_ID_PERICOM_PI7C9X7954 0x7954 #define PCI_DEVICE_ID_PERICOM_PI7C9X7954 0x7954
#define PCI_DEVICE_ID_PERICOM_PI7C9X7958 0x7958 #define PCI_DEVICE_ID_PERICOM_PI7C9X7958 0x7958
#define PCI_DEVICE_ID_EXAR_XR17V4358 0x4358
#define PCI_DEVICE_ID_EXAR_XR17V8358 0x8358 #define PCI_DEVICE_ID_EXAR_XR17V8358 0x8358
/* Unknown vendors/cards - this should not be in linux/pci_ids.h */ /* Unknown vendors/cards - this should not be in linux/pci_ids.h */
...@@ -2283,6 +2284,13 @@ static struct pci_serial_quirk pci_serial_quirks[] __refdata = { ...@@ -2283,6 +2284,13 @@ static struct pci_serial_quirk pci_serial_quirks[] __refdata = {
.subdevice = PCI_ANY_ID, .subdevice = PCI_ANY_ID,
.setup = pci_xr17v35x_setup, .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, .vendor = PCI_VENDOR_ID_EXAR,
.device = PCI_DEVICE_ID_EXAR_XR17V8358, .device = PCI_DEVICE_ID_EXAR_XR17V8358,
...@@ -2738,6 +2746,7 @@ enum pci_board_num_t { ...@@ -2738,6 +2746,7 @@ enum pci_board_num_t {
pbn_exar_XR17V352, pbn_exar_XR17V352,
pbn_exar_XR17V354, pbn_exar_XR17V354,
pbn_exar_XR17V358, pbn_exar_XR17V358,
pbn_exar_XR17V4358,
pbn_exar_XR17V8358, pbn_exar_XR17V8358,
pbn_exar_ibm_saturn, pbn_exar_ibm_saturn,
pbn_pasemi_1682M, pbn_pasemi_1682M,
...@@ -3412,6 +3421,14 @@ static struct pciserial_board pci_boards[] = { ...@@ -3412,6 +3421,14 @@ static struct pciserial_board pci_boards[] = {
.reg_shift = 0, .reg_shift = 0,
.first_offset = 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] = { [pbn_exar_XR17V8358] = {
.flags = FL_BASE0, .flags = FL_BASE0,
.num_ports = 16, .num_ports = 16,
...@@ -4829,6 +4846,10 @@ static struct pci_device_id serial_pci_tbl[] = { ...@@ -4829,6 +4846,10 @@ static struct pci_device_id serial_pci_tbl[] = {
PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
0, 0,
0, pbn_exar_XR17V358 }, 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_VENDOR_ID_EXAR, PCI_DEVICE_ID_EXAR_XR17V8358,
PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
0, 0,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment