diff options
| author | Stephen Chivers <schivers@shrike2a.aust.csc.com> | 2013-01-28 03:49:20 -0500 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-01-30 00:08:22 -0500 |
| commit | abd7bacae672298ec99ce6cfdc75ae1e1f9159b6 (patch) | |
| tree | 4112407716ae3e3d73f9e563e65e2ad981319f8e | |
| parent | 1651d0a9be0009460c5fdc822505749f295c5ba9 (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>
| -rw-r--r-- | drivers/parport/parport_serial.c | 21 | ||||
| -rw-r--r-- | drivers/tty/serial/8250/8250_pci.c | 33 |
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 | |||
| 153 | static struct pci_device_id parport_serial_pci_tbl[] = { | 158 | static 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 | }; |
| 253 | MODULE_DEVICE_TABLE(pci,parport_serial_pci_tbl); | 268 | MODULE_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 | ||
| 475 | struct parport_serial_private { | 496 | struct 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, |
