diff options
Diffstat (limited to 'drivers/tty/serial/8250')
-rw-r--r-- | drivers/tty/serial/8250/8250.c | 52 | ||||
-rw-r--r-- | drivers/tty/serial/8250/8250_pci.c | 21 | ||||
-rw-r--r-- | drivers/tty/serial/8250/8250_pnp.c | 12 |
3 files changed, 69 insertions, 16 deletions
diff --git a/drivers/tty/serial/8250/8250.c b/drivers/tty/serial/8250/8250.c index 0efc815a4968..cf6a5383748a 100644 --- a/drivers/tty/serial/8250/8250.c +++ b/drivers/tty/serial/8250/8250.c | |||
@@ -301,7 +301,28 @@ static const struct serial8250_config uart_config[] = { | |||
301 | }, | 301 | }, |
302 | [PORT_8250_CIR] = { | 302 | [PORT_8250_CIR] = { |
303 | .name = "CIR port" | 303 | .name = "CIR port" |
304 | } | 304 | }, |
305 | [PORT_ALTR_16550_F32] = { | ||
306 | .name = "Altera 16550 FIFO32", | ||
307 | .fifo_size = 32, | ||
308 | .tx_loadsz = 32, | ||
309 | .fcr = UART_FCR_ENABLE_FIFO | UART_FCR_R_TRIG_10, | ||
310 | .flags = UART_CAP_FIFO | UART_CAP_AFE, | ||
311 | }, | ||
312 | [PORT_ALTR_16550_F64] = { | ||
313 | .name = "Altera 16550 FIFO64", | ||
314 | .fifo_size = 64, | ||
315 | .tx_loadsz = 64, | ||
316 | .fcr = UART_FCR_ENABLE_FIFO | UART_FCR_R_TRIG_10, | ||
317 | .flags = UART_CAP_FIFO | UART_CAP_AFE, | ||
318 | }, | ||
319 | [PORT_ALTR_16550_F128] = { | ||
320 | .name = "Altera 16550 FIFO128", | ||
321 | .fifo_size = 128, | ||
322 | .tx_loadsz = 128, | ||
323 | .fcr = UART_FCR_ENABLE_FIFO | UART_FCR_R_TRIG_10, | ||
324 | .flags = UART_CAP_FIFO | UART_CAP_AFE, | ||
325 | }, | ||
305 | }; | 326 | }; |
306 | 327 | ||
307 | /* Uart divisor latch read */ | 328 | /* Uart divisor latch read */ |
@@ -3396,3 +3417,32 @@ module_param_array(probe_rsa, ulong, &probe_rsa_count, 0444); | |||
3396 | MODULE_PARM_DESC(probe_rsa, "Probe I/O ports for RSA"); | 3417 | MODULE_PARM_DESC(probe_rsa, "Probe I/O ports for RSA"); |
3397 | #endif | 3418 | #endif |
3398 | MODULE_ALIAS_CHARDEV_MAJOR(TTY_MAJOR); | 3419 | MODULE_ALIAS_CHARDEV_MAJOR(TTY_MAJOR); |
3420 | |||
3421 | #ifndef MODULE | ||
3422 | /* This module was renamed to 8250_core in 3.7. Keep the old "8250" name | ||
3423 | * working as well for the module options so we don't break people. We | ||
3424 | * need to keep the names identical and the convenient macros will happily | ||
3425 | * refuse to let us do that by failing the build with redefinition errors | ||
3426 | * of global variables. So we stick them inside a dummy function to avoid | ||
3427 | * those conflicts. The options still get parsed, and the redefined | ||
3428 | * MODULE_PARAM_PREFIX lets us keep the "8250." syntax alive. | ||
3429 | * | ||
3430 | * This is hacky. I'm sorry. | ||
3431 | */ | ||
3432 | static void __used s8250_options(void) | ||
3433 | { | ||
3434 | #undef MODULE_PARAM_PREFIX | ||
3435 | #define MODULE_PARAM_PREFIX "8250." | ||
3436 | |||
3437 | module_param_cb(share_irqs, ¶m_ops_uint, &share_irqs, 0644); | ||
3438 | module_param_cb(nr_uarts, ¶m_ops_uint, &nr_uarts, 0644); | ||
3439 | module_param_cb(skip_txen_test, ¶m_ops_uint, &skip_txen_test, 0644); | ||
3440 | #ifdef CONFIG_SERIAL_8250_RSA | ||
3441 | __module_param_call(MODULE_PARAM_PREFIX, probe_rsa, | ||
3442 | ¶m_array_ops, .arr = &__param_arr_probe_rsa, | ||
3443 | 0444, -1); | ||
3444 | #endif | ||
3445 | } | ||
3446 | #else | ||
3447 | MODULE_ALIAS("8250"); | ||
3448 | #endif | ||
diff --git a/drivers/tty/serial/8250/8250_pci.c b/drivers/tty/serial/8250/8250_pci.c index 791c5a77ec61..aa76825229dc 100644 --- a/drivers/tty/serial/8250/8250_pci.c +++ b/drivers/tty/serial/8250/8250_pci.c | |||
@@ -1571,6 +1571,7 @@ pci_wch_ch353_setup(struct serial_private *priv, | |||
1571 | 1571 | ||
1572 | /* 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 */ |
1573 | #define PCI_SUBDEVICE_ID_UNKNOWN_0x1584 0x1584 | 1573 | #define PCI_SUBDEVICE_ID_UNKNOWN_0x1584 0x1584 |
1574 | #define PCI_SUBDEVICE_ID_UNKNOWN_0x1588 0x1588 | ||
1574 | 1575 | ||
1575 | /* | 1576 | /* |
1576 | * Master list of serial port init/setup/exit quirks. | 1577 | * Master list of serial port init/setup/exit quirks. |
@@ -1852,15 +1853,6 @@ static struct pci_serial_quirk pci_serial_quirks[] __refdata = { | |||
1852 | }, | 1853 | }, |
1853 | { | 1854 | { |
1854 | .vendor = PCI_VENDOR_ID_PLX, | 1855 | .vendor = PCI_VENDOR_ID_PLX, |
1855 | .device = PCI_DEVICE_ID_PLX_9050, | ||
1856 | .subvendor = PCI_VENDOR_ID_PLX, | ||
1857 | .subdevice = PCI_SUBDEVICE_ID_UNKNOWN_0x1584, | ||
1858 | .init = pci_plx9050_init, | ||
1859 | .setup = pci_default_setup, | ||
1860 | .exit = pci_plx9050_exit, | ||
1861 | }, | ||
1862 | { | ||
1863 | .vendor = PCI_VENDOR_ID_PLX, | ||
1864 | .device = PCI_DEVICE_ID_PLX_ROMULUS, | 1856 | .device = PCI_DEVICE_ID_PLX_ROMULUS, |
1865 | .subvendor = PCI_VENDOR_ID_PLX, | 1857 | .subvendor = PCI_VENDOR_ID_PLX, |
1866 | .subdevice = PCI_DEVICE_ID_PLX_ROMULUS, | 1858 | .subdevice = PCI_DEVICE_ID_PLX_ROMULUS, |
@@ -3733,7 +3725,12 @@ static struct pci_device_id serial_pci_tbl[] = { | |||
3733 | { PCI_VENDOR_ID_PLX, PCI_DEVICE_ID_PLX_9050, | 3725 | { PCI_VENDOR_ID_PLX, PCI_DEVICE_ID_PLX_9050, |
3734 | PCI_VENDOR_ID_PLX, | 3726 | PCI_VENDOR_ID_PLX, |
3735 | PCI_SUBDEVICE_ID_UNKNOWN_0x1584, 0, 0, | 3727 | PCI_SUBDEVICE_ID_UNKNOWN_0x1584, 0, 0, |
3736 | pbn_b0_4_115200 }, | 3728 | pbn_b2_4_115200 }, |
3729 | /* Unknown card - subdevice 0x1588 */ | ||
3730 | { PCI_VENDOR_ID_PLX, PCI_DEVICE_ID_PLX_9050, | ||
3731 | PCI_VENDOR_ID_PLX, | ||
3732 | PCI_SUBDEVICE_ID_UNKNOWN_0x1588, 0, 0, | ||
3733 | pbn_b2_8_115200 }, | ||
3737 | { PCI_VENDOR_ID_PLX, PCI_DEVICE_ID_PLX_9050, | 3734 | { PCI_VENDOR_ID_PLX, PCI_DEVICE_ID_PLX_9050, |
3738 | PCI_SUBVENDOR_ID_KEYSPAN, | 3735 | PCI_SUBVENDOR_ID_KEYSPAN, |
3739 | PCI_SUBDEVICE_ID_KEYSPAN_SX2, 0, 0, | 3736 | PCI_SUBDEVICE_ID_KEYSPAN_SX2, 0, 0, |
@@ -4791,6 +4788,10 @@ static struct pci_device_id serial_pci_tbl[] = { | |||
4791 | PCI_VENDOR_ID_IBM, 0x0299, | 4788 | PCI_VENDOR_ID_IBM, 0x0299, |
4792 | 0, 0, pbn_b0_bt_2_115200 }, | 4789 | 0, 0, pbn_b0_bt_2_115200 }, |
4793 | 4790 | ||
4791 | { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9835, | ||
4792 | 0x1000, 0x0012, | ||
4793 | 0, 0, pbn_b0_bt_2_115200 }, | ||
4794 | |||
4794 | { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9901, | 4795 | { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9901, |
4795 | 0xA000, 0x1000, | 4796 | 0xA000, 0x1000, |
4796 | 0, 0, pbn_b0_1_115200 }, | 4797 | 0, 0, pbn_b0_1_115200 }, |
diff --git a/drivers/tty/serial/8250/8250_pnp.c b/drivers/tty/serial/8250/8250_pnp.c index 35d9ab95c5cb..b3455a970a1d 100644 --- a/drivers/tty/serial/8250/8250_pnp.c +++ b/drivers/tty/serial/8250/8250_pnp.c | |||
@@ -429,6 +429,7 @@ serial_pnp_probe(struct pnp_dev *dev, const struct pnp_device_id *dev_id) | |||
429 | { | 429 | { |
430 | struct uart_8250_port uart; | 430 | struct uart_8250_port uart; |
431 | int ret, line, flags = dev_id->driver_data; | 431 | int ret, line, flags = dev_id->driver_data; |
432 | struct resource *res = NULL; | ||
432 | 433 | ||
433 | if (flags & UNKNOWN_DEV) { | 434 | if (flags & UNKNOWN_DEV) { |
434 | ret = serial_pnp_guess_board(dev); | 435 | ret = serial_pnp_guess_board(dev); |
@@ -439,11 +440,12 @@ serial_pnp_probe(struct pnp_dev *dev, const struct pnp_device_id *dev_id) | |||
439 | memset(&uart, 0, sizeof(uart)); | 440 | memset(&uart, 0, sizeof(uart)); |
440 | if (pnp_irq_valid(dev, 0)) | 441 | if (pnp_irq_valid(dev, 0)) |
441 | uart.port.irq = pnp_irq(dev, 0); | 442 | uart.port.irq = pnp_irq(dev, 0); |
442 | if ((flags & CIR_PORT) && pnp_port_valid(dev, 2)) { | 443 | if ((flags & CIR_PORT) && pnp_port_valid(dev, 2)) |
443 | uart.port.iobase = pnp_port_start(dev, 2); | 444 | res = pnp_get_resource(dev, IORESOURCE_IO, 2); |
444 | uart.port.iotype = UPIO_PORT; | 445 | else if (pnp_port_valid(dev, 0)) |
445 | } else if (pnp_port_valid(dev, 0)) { | 446 | res = pnp_get_resource(dev, IORESOURCE_IO, 0); |
446 | uart.port.iobase = pnp_port_start(dev, 0); | 447 | if (pnp_resource_enabled(res)) { |
448 | uart.port.iobase = res->start; | ||
447 | uart.port.iotype = UPIO_PORT; | 449 | uart.port.iotype = UPIO_PORT; |
448 | } else if (pnp_mem_valid(dev, 0)) { | 450 | } else if (pnp_mem_valid(dev, 0)) { |
449 | uart.port.mapbase = pnp_mem_start(dev, 0); | 451 | uart.port.mapbase = pnp_mem_start(dev, 0); |