diff options
-rw-r--r-- | drivers/tty/serial/8250_pci.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/drivers/tty/serial/8250_pci.c b/drivers/tty/serial/8250_pci.c index 762db97aecd3..4b4968a294b2 100644 --- a/drivers/tty/serial/8250_pci.c +++ b/drivers/tty/serial/8250_pci.c | |||
@@ -971,6 +971,14 @@ ce4100_serial_setup(struct serial_private *priv, | |||
971 | return ret; | 971 | return ret; |
972 | } | 972 | } |
973 | 973 | ||
974 | static int | ||
975 | pci_omegapci_setup(struct serial_private *priv, | ||
976 | struct pciserial_board *board, | ||
977 | struct uart_port *port, int idx) | ||
978 | { | ||
979 | return setup_port(priv, port, 2, idx * 8, 0); | ||
980 | } | ||
981 | |||
974 | static int skip_tx_en_setup(struct serial_private *priv, | 982 | static int skip_tx_en_setup(struct serial_private *priv, |
975 | const struct pciserial_board *board, | 983 | const struct pciserial_board *board, |
976 | struct uart_port *port, int idx) | 984 | struct uart_port *port, int idx) |
@@ -1011,6 +1019,7 @@ static int skip_tx_en_setup(struct serial_private *priv, | |||
1011 | #define PCI_DEVICE_ID_TITAN_200EISI 0xA017 | 1019 | #define PCI_DEVICE_ID_TITAN_200EISI 0xA017 |
1012 | #define PCI_DEVICE_ID_OXSEMI_16PCI958 0x9538 | 1020 | #define PCI_DEVICE_ID_OXSEMI_16PCI958 0x9538 |
1013 | #define PCIE_DEVICE_ID_NEO_2_OX_IBM 0x00F6 | 1021 | #define PCIE_DEVICE_ID_NEO_2_OX_IBM 0x00F6 |
1022 | #define PCI_DEVICE_ID_PLX_CRONYX_OMEGA 0xc001 | ||
1014 | 1023 | ||
1015 | /* Unknown vendors/cards - this should not be in linux/pci_ids.h */ | 1024 | /* Unknown vendors/cards - this should not be in linux/pci_ids.h */ |
1016 | #define PCI_SUBDEVICE_ID_UNKNOWN_0x1584 0x1584 | 1025 | #define PCI_SUBDEVICE_ID_UNKNOWN_0x1584 0x1584 |
@@ -1438,6 +1447,16 @@ static struct pci_serial_quirk pci_serial_quirks[] __refdata = { | |||
1438 | .setup = pci_default_setup, | 1447 | .setup = pci_default_setup, |
1439 | }, | 1448 | }, |
1440 | /* | 1449 | /* |
1450 | * Cronyx Omega PCI (PLX-chip based) | ||
1451 | */ | ||
1452 | { | ||
1453 | .vendor = PCI_VENDOR_ID_PLX, | ||
1454 | .device = PCI_DEVICE_ID_PLX_CRONYX_OMEGA, | ||
1455 | .subvendor = PCI_ANY_ID, | ||
1456 | .subdevice = PCI_ANY_ID, | ||
1457 | .setup = pci_omegapci_setup, | ||
1458 | }, | ||
1459 | /* | ||
1441 | * Default "match everything" terminator entry | 1460 | * Default "match everything" terminator entry |
1442 | */ | 1461 | */ |
1443 | { | 1462 | { |
@@ -1624,6 +1643,7 @@ enum pci_board_num_t { | |||
1624 | pbn_ADDIDATA_PCIe_4_3906250, | 1643 | pbn_ADDIDATA_PCIe_4_3906250, |
1625 | pbn_ADDIDATA_PCIe_8_3906250, | 1644 | pbn_ADDIDATA_PCIe_8_3906250, |
1626 | pbn_ce4100_1_115200, | 1645 | pbn_ce4100_1_115200, |
1646 | pbn_omegapci, | ||
1627 | }; | 1647 | }; |
1628 | 1648 | ||
1629 | /* | 1649 | /* |
@@ -2319,6 +2339,12 @@ static struct pciserial_board pci_boards[] __devinitdata = { | |||
2319 | .base_baud = 921600, | 2339 | .base_baud = 921600, |
2320 | .reg_shift = 2, | 2340 | .reg_shift = 2, |
2321 | }, | 2341 | }, |
2342 | [pbn_omegapci] = { | ||
2343 | .flags = FL_BASE0, | ||
2344 | .num_ports = 8, | ||
2345 | .base_baud = 115200, | ||
2346 | .uart_offset = 0x200, | ||
2347 | }, | ||
2322 | }; | 2348 | }; |
2323 | 2349 | ||
2324 | static const struct pci_device_id softmodem_blacklist[] = { | 2350 | static const struct pci_device_id softmodem_blacklist[] = { |
@@ -3816,6 +3842,12 @@ static struct pci_device_id serial_pci_tbl[] = { | |||
3816 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | 3842 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, |
3817 | pbn_ce4100_1_115200 }, | 3843 | pbn_ce4100_1_115200 }, |
3818 | 3844 | ||
3845 | /* | ||
3846 | * Cronyx Omega PCI | ||
3847 | */ | ||
3848 | { PCI_VENDOR_ID_PLX, PCI_DEVICE_ID_PLX_CRONYX_OMEGA, | ||
3849 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
3850 | pbn_omegapci }, | ||
3819 | 3851 | ||
3820 | /* | 3852 | /* |
3821 | * These entries match devices with class COMMUNICATION_SERIAL, | 3853 | * These entries match devices with class COMMUNICATION_SERIAL, |