diff options
-rw-r--r-- | drivers/serial/8250_pci.c | 25 | ||||
-rw-r--r-- | drivers/serial/Kconfig | 1 | ||||
-rw-r--r-- | drivers/serial/serial_core.c | 2 | ||||
-rw-r--r-- | include/linux/pci_ids.h | 3 |
4 files changed, 29 insertions, 2 deletions
diff --git a/drivers/serial/8250_pci.c b/drivers/serial/8250_pci.c index 2a912153321e..bb9ec28ccc2b 100644 --- a/drivers/serial/8250_pci.c +++ b/drivers/serial/8250_pci.c | |||
@@ -439,6 +439,20 @@ static int pci_siig_init(struct pci_dev *dev) | |||
439 | return -ENODEV; | 439 | return -ENODEV; |
440 | } | 440 | } |
441 | 441 | ||
442 | static int pci_siig_setup(struct serial_private *priv, | ||
443 | struct pciserial_board *board, | ||
444 | struct uart_port *port, int idx) | ||
445 | { | ||
446 | unsigned int bar = FL_GET_BASE(board->flags) + idx, offset = 0; | ||
447 | |||
448 | if (idx > 3) { | ||
449 | bar = 4; | ||
450 | offset = (idx - 4) * 8; | ||
451 | } | ||
452 | |||
453 | return setup_port(priv, port, bar, offset, 0); | ||
454 | } | ||
455 | |||
442 | /* | 456 | /* |
443 | * Timedia has an explosion of boards, and to avoid the PCI table from | 457 | * Timedia has an explosion of boards, and to avoid the PCI table from |
444 | * growing *huge*, we use this function to collapse some 70 entries | 458 | * growing *huge*, we use this function to collapse some 70 entries |
@@ -748,7 +762,7 @@ static struct pci_serial_quirk pci_serial_quirks[] = { | |||
748 | .subvendor = PCI_ANY_ID, | 762 | .subvendor = PCI_ANY_ID, |
749 | .subdevice = PCI_ANY_ID, | 763 | .subdevice = PCI_ANY_ID, |
750 | .init = pci_siig_init, | 764 | .init = pci_siig_init, |
751 | .setup = pci_default_setup, | 765 | .setup = pci_siig_setup, |
752 | }, | 766 | }, |
753 | /* | 767 | /* |
754 | * Titan cards | 768 | * Titan cards |
@@ -2141,6 +2155,15 @@ static struct pci_device_id serial_pci_tbl[] = { | |||
2141 | { PCI_VENDOR_ID_SIIG, PCI_DEVICE_ID_SIIG_4S_20x_850, | 2155 | { PCI_VENDOR_ID_SIIG, PCI_DEVICE_ID_SIIG_4S_20x_850, |
2142 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | 2156 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, |
2143 | pbn_b0_bt_4_921600 }, | 2157 | pbn_b0_bt_4_921600 }, |
2158 | { PCI_VENDOR_ID_SIIG, PCI_DEVICE_ID_SIIG_8S_20x_550, | ||
2159 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
2160 | pbn_b0_bt_8_921600 }, | ||
2161 | { PCI_VENDOR_ID_SIIG, PCI_DEVICE_ID_SIIG_8S_20x_650, | ||
2162 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
2163 | pbn_b0_bt_8_921600 }, | ||
2164 | { PCI_VENDOR_ID_SIIG, PCI_DEVICE_ID_SIIG_8S_20x_850, | ||
2165 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
2166 | pbn_b0_bt_8_921600 }, | ||
2144 | 2167 | ||
2145 | /* | 2168 | /* |
2146 | * Computone devices submitted by Doug McNash dmcnash@computone.com | 2169 | * Computone devices submitted by Doug McNash dmcnash@computone.com |
diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index ee4265d7a8c9..0f4361c8466b 100644 --- a/drivers/serial/Kconfig +++ b/drivers/serial/Kconfig | |||
@@ -98,6 +98,7 @@ config SERIAL_8250_NR_UARTS | |||
98 | config SERIAL_8250_RUNTIME_UARTS | 98 | config SERIAL_8250_RUNTIME_UARTS |
99 | int "Number of 8250/16550 serial ports to register at runtime" | 99 | int "Number of 8250/16550 serial ports to register at runtime" |
100 | depends on SERIAL_8250 | 100 | depends on SERIAL_8250 |
101 | range 0 SERIAL_8250_NR_UARTS | ||
101 | default "4" | 102 | default "4" |
102 | help | 103 | help |
103 | Set this to the maximum number of serial ports you want | 104 | Set this to the maximum number of serial ports you want |
diff --git a/drivers/serial/serial_core.c b/drivers/serial/serial_core.c index 0717abfdae06..95fb4939c675 100644 --- a/drivers/serial/serial_core.c +++ b/drivers/serial/serial_core.c | |||
@@ -2237,7 +2237,7 @@ int uart_add_one_port(struct uart_driver *drv, struct uart_port *port) | |||
2237 | * If this port is a console, then the spinlock is already | 2237 | * If this port is a console, then the spinlock is already |
2238 | * initialised. | 2238 | * initialised. |
2239 | */ | 2239 | */ |
2240 | if (!uart_console(port)) | 2240 | if (!(uart_console(port) && (port->cons->flags & CON_ENABLED))) |
2241 | spin_lock_init(&port->lock); | 2241 | spin_lock_init(&port->lock); |
2242 | 2242 | ||
2243 | uart_configure_port(drv, state, port); | 2243 | uart_configure_port(drv, state, port); |
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index b0b908f583c5..92a619ba163f 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
@@ -1670,6 +1670,9 @@ | |||
1670 | #define PCI_DEVICE_ID_SIIG_2S1P_20x_550 0x2060 | 1670 | #define PCI_DEVICE_ID_SIIG_2S1P_20x_550 0x2060 |
1671 | #define PCI_DEVICE_ID_SIIG_2S1P_20x_650 0x2061 | 1671 | #define PCI_DEVICE_ID_SIIG_2S1P_20x_650 0x2061 |
1672 | #define PCI_DEVICE_ID_SIIG_2S1P_20x_850 0x2062 | 1672 | #define PCI_DEVICE_ID_SIIG_2S1P_20x_850 0x2062 |
1673 | #define PCI_DEVICE_ID_SIIG_8S_20x_550 0x2080 | ||
1674 | #define PCI_DEVICE_ID_SIIG_8S_20x_650 0x2081 | ||
1675 | #define PCI_DEVICE_ID_SIIG_8S_20x_850 0x2082 | ||
1673 | #define PCI_SUBDEVICE_ID_SIIG_QUARTET_SERIAL 0x2050 | 1676 | #define PCI_SUBDEVICE_ID_SIIG_QUARTET_SERIAL 0x2050 |
1674 | 1677 | ||
1675 | #define PCI_VENDOR_ID_RADISYS 0x1331 | 1678 | #define PCI_VENDOR_ID_RADISYS 0x1331 |