aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorStephen Chivers <schivers@shrike2a.aust.csc.com>2013-01-28 03:49:20 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-01-30 00:08:22 -0500
commitabd7bacae672298ec99ce6cfdc75ae1e1f9159b6 (patch)
tree4112407716ae3e3d73f9e563e65e2ad981319f8e /drivers
parent1651d0a9be0009460c5fdc822505749f295c5ba9 (diff)
serial/8250: Add suport for later SUNIX (TIMEDIA) boards.
Add support for later SUNIX (TIMEDIA) Universal PCI Single and Multi-Port Communications Boards. These boards have PCI Vendor ID 1fd4 with device ID 1999 but otherwise appear to be the same as the TIMEDIA boards already supported by 8250_pci and parport_serial. Tested with: a. the two port serial board part number SER5037A, b. the two port serial and one port parallel board part number MIO5079A. Signed-off-by: Stephen Chivers <schivers@csc.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/parport/parport_serial.c21
-rw-r--r--drivers/tty/serial/8250/8250_pci.c33
2 files changed, 54 insertions, 0 deletions
diff --git a/drivers/parport/parport_serial.c b/drivers/parport/parport_serial.c
index ef6169adb845..1b8bdb7e9bf4 100644
--- a/drivers/parport/parport_serial.c
+++ b/drivers/parport/parport_serial.c
@@ -63,6 +63,7 @@ enum parport_pc_pci_cards {
63 timedia_9079b, 63 timedia_9079b,
64 timedia_9079c, 64 timedia_9079c,
65 wch_ch353_2s1p, 65 wch_ch353_2s1p,
66 sunix_2s1p,
66}; 67};
67 68
68/* each element directly indexed from enum list, above */ 69/* each element directly indexed from enum list, above */
@@ -148,8 +149,12 @@ static struct parport_pc_pci cards[] = {
148 /* timedia_9079b */ { 1, { { 2, 3 }, } }, 149 /* timedia_9079b */ { 1, { { 2, 3 }, } },
149 /* timedia_9079c */ { 1, { { 2, 3 }, } }, 150 /* timedia_9079c */ { 1, { { 2, 3 }, } },
150 /* wch_ch353_2s1p*/ { 1, { { 2, -1}, } }, 151 /* wch_ch353_2s1p*/ { 1, { { 2, -1}, } },
152 /* sunix_2s1p */ { 1, { { 3, -1 }, } },
151}; 153};
152 154
155#define PCI_VENDOR_ID_SUNIX 0x1fd4
156#define PCI_DEVICE_ID_SUNIX_1999 0x1999
157
153static struct pci_device_id parport_serial_pci_tbl[] = { 158static struct pci_device_id parport_serial_pci_tbl[] = {
154 /* PCI cards */ 159 /* PCI cards */
155 { PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_110L, 160 { PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_110L,
@@ -246,8 +251,18 @@ static struct pci_device_id parport_serial_pci_tbl[] = {
246 { 0x1409, 0x7168, 0x1409, 0xb079, 0, 0, timedia_9079a }, 251 { 0x1409, 0x7168, 0x1409, 0xb079, 0, 0, timedia_9079a },
247 { 0x1409, 0x7168, 0x1409, 0xc079, 0, 0, timedia_9079b }, 252 { 0x1409, 0x7168, 0x1409, 0xc079, 0, 0, timedia_9079b },
248 { 0x1409, 0x7168, 0x1409, 0xd079, 0, 0, timedia_9079c }, 253 { 0x1409, 0x7168, 0x1409, 0xd079, 0, 0, timedia_9079c },
254
249 /* WCH CARDS */ 255 /* WCH CARDS */
250 { 0x4348, 0x7053, 0x4348, 0x3253, 0, 0, wch_ch353_2s1p}, 256 { 0x4348, 0x7053, 0x4348, 0x3253, 0, 0, wch_ch353_2s1p},
257
258 /*
259 * More SUNIX variations. At least one of these has part number
260 * '5079A but subdevice 0x102. That board reports 0x0708 as
261 * its PCI Class.
262 */
263 { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999, PCI_VENDOR_ID_SUNIX,
264 0x0102, 0, 0, sunix_2s1p },
265
251 { 0, } /* terminate list */ 266 { 0, } /* terminate list */
252}; 267};
253MODULE_DEVICE_TABLE(pci,parport_serial_pci_tbl); 268MODULE_DEVICE_TABLE(pci,parport_serial_pci_tbl);
@@ -470,6 +485,12 @@ static struct pciserial_board pci_parport_serial_boards[] = {
470 .base_baud = 115200, 485 .base_baud = 115200,
471 .uart_offset = 8, 486 .uart_offset = 8,
472 }, 487 },
488 [sunix_2s1p] = {
489 .flags = FL_BASE0|FL_BASE_BARS,
490 .num_ports = 2,
491 .base_baud = 921600,
492 .uart_offset = 8,
493 },
473}; 494};
474 495
475struct parport_serial_private { 496struct parport_serial_private {
diff --git a/drivers/tty/serial/8250/8250_pci.c b/drivers/tty/serial/8250/8250_pci.c
index 3cb333242912..791c5a77ec61 100644
--- a/drivers/tty/serial/8250/8250_pci.c
+++ b/drivers/tty/serial/8250/8250_pci.c
@@ -1565,6 +1565,9 @@ pci_wch_ch353_setup(struct serial_private *priv,
1565#define PCI_DEVICE_ID_COMMTECH_4222PCIE 0x0022 1565#define PCI_DEVICE_ID_COMMTECH_4222PCIE 0x0022
1566#define PCI_DEVICE_ID_BROADCOM_TRUMANAGE 0x160a 1566#define PCI_DEVICE_ID_BROADCOM_TRUMANAGE 0x160a
1567 1567
1568#define PCI_VENDOR_ID_SUNIX 0x1fd4
1569#define PCI_DEVICE_ID_SUNIX_1999 0x1999
1570
1568 1571
1569/* Unknown vendors/cards - this should not be in linux/pci_ids.h */ 1572/* Unknown vendors/cards - this should not be in linux/pci_ids.h */
1570#define PCI_SUBDEVICE_ID_UNKNOWN_0x1584 0x1584 1573#define PCI_SUBDEVICE_ID_UNKNOWN_0x1584 0x1584
@@ -1961,6 +1964,23 @@ static struct pci_serial_quirk pci_serial_quirks[] __refdata = {
1961 .setup = pci_timedia_setup, 1964 .setup = pci_timedia_setup,
1962 }, 1965 },
1963 /* 1966 /*
1967 * SUNIX (Timedia) cards
1968 * Do not "probe" for these cards as there is at least one combination
1969 * card that should be handled by parport_pc that doesn't match the
1970 * rule in pci_timedia_probe.
1971 * It is part number is MIO5079A but its subdevice ID is 0x0102.
1972 * There are some boards with part number SER5037AL that report
1973 * subdevice ID 0x0002.
1974 */
1975 {
1976 .vendor = PCI_VENDOR_ID_SUNIX,
1977 .device = PCI_DEVICE_ID_SUNIX_1999,
1978 .subvendor = PCI_VENDOR_ID_SUNIX,
1979 .subdevice = PCI_ANY_ID,
1980 .init = pci_timedia_init,
1981 .setup = pci_timedia_setup,
1982 },
1983 /*
1964 * Exar cards 1984 * Exar cards
1965 */ 1985 */
1966 { 1986 {
@@ -4211,6 +4231,19 @@ static struct pci_device_id serial_pci_tbl[] = {
4211 pbn_b0_bt_1_921600 }, 4231 pbn_b0_bt_1_921600 },
4212 4232
4213 /* 4233 /*
4234 * SUNIX (TIMEDIA)
4235 */
4236 { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999,
4237 PCI_VENDOR_ID_SUNIX, PCI_ANY_ID,
4238 PCI_CLASS_COMMUNICATION_SERIAL << 8, 0xffff00,
4239 pbn_b0_bt_1_921600 },
4240
4241 { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999,
4242 PCI_VENDOR_ID_SUNIX, PCI_ANY_ID,
4243 PCI_CLASS_COMMUNICATION_MULTISERIAL << 8, 0xffff00,
4244 pbn_b0_bt_1_921600 },
4245
4246 /*
4214 * AFAVLAB serial card, from Harald Welte <laforge@gnumonks.org> 4247 * AFAVLAB serial card, from Harald Welte <laforge@gnumonks.org>
4215 */ 4248 */
4216 { PCI_VENDOR_ID_AFAVLAB, PCI_DEVICE_ID_AFAVLAB_P028, 4249 { PCI_VENDOR_ID_AFAVLAB, PCI_DEVICE_ID_AFAVLAB_P028,