aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/tty
diff options
context:
space:
mode:
authorAntony Pavlov <antony@niisi.msk.ru>2011-05-18 14:38:30 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2011-05-19 19:51:02 -0400
commitd9a0fbfd7bc5d2c42f0fa9bcbdab62c4942d0388 (patch)
tree6416aad4a5773307bdf97bd2f85dfc97c5fd83ce /drivers/tty
parent5f873bae704cf8b7cbd64b5720912266286c9146 (diff)
serial: 8250_pci: add support for Cronyx Omega PCI multiserial board.
This patch adds support for the Omega-PCI, an 8-port asynchronous multiport adapter for computers with PCI bus [1]. [1] http://www.cronyx.ru/hardware/ompci.html Signed-off-by: Antony Pavlov <antony@niisi.msk.ru> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/tty')
-rw-r--r--drivers/tty/serial/8250_pci.c32
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
974static int
975pci_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
974static int skip_tx_en_setup(struct serial_private *priv, 982static 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
2324static const struct pci_device_id softmodem_blacklist[] = { 2350static 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,