diff options
Diffstat (limited to 'drivers/serial')
-rw-r--r-- | drivers/serial/8250.c | 8 | ||||
-rw-r--r-- | drivers/serial/8250_pnp.c | 3 | ||||
-rw-r--r-- | drivers/serial/icom.c | 9 | ||||
-rw-r--r-- | drivers/serial/icom.h | 1 | ||||
-rw-r--r-- | drivers/serial/sh-sci.c | 11 |
5 files changed, 18 insertions, 14 deletions
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c index c129a0e8e807..90621c3312bc 100644 --- a/drivers/serial/8250.c +++ b/drivers/serial/8250.c | |||
@@ -1310,7 +1310,8 @@ static unsigned int check_modem_status(struct uart_8250_port *up) | |||
1310 | { | 1310 | { |
1311 | unsigned int status = serial_in(up, UART_MSR); | 1311 | unsigned int status = serial_in(up, UART_MSR); |
1312 | 1312 | ||
1313 | if (status & UART_MSR_ANY_DELTA && up->ier & UART_IER_MSI) { | 1313 | if (status & UART_MSR_ANY_DELTA && up->ier & UART_IER_MSI && |
1314 | up->port.info != NULL) { | ||
1314 | if (status & UART_MSR_TERI) | 1315 | if (status & UART_MSR_TERI) |
1315 | up->port.icount.rng++; | 1316 | up->port.icount.rng++; |
1316 | if (status & UART_MSR_DDSR) | 1317 | if (status & UART_MSR_DDSR) |
@@ -1333,8 +1334,9 @@ static inline void | |||
1333 | serial8250_handle_port(struct uart_8250_port *up) | 1334 | serial8250_handle_port(struct uart_8250_port *up) |
1334 | { | 1335 | { |
1335 | unsigned int status; | 1336 | unsigned int status; |
1337 | unsigned long flags; | ||
1336 | 1338 | ||
1337 | spin_lock(&up->port.lock); | 1339 | spin_lock_irqsave(&up->port.lock, flags); |
1338 | 1340 | ||
1339 | status = serial_inp(up, UART_LSR); | 1341 | status = serial_inp(up, UART_LSR); |
1340 | 1342 | ||
@@ -1346,7 +1348,7 @@ serial8250_handle_port(struct uart_8250_port *up) | |||
1346 | if (status & UART_LSR_THRE) | 1348 | if (status & UART_LSR_THRE) |
1347 | transmit_chars(up); | 1349 | transmit_chars(up); |
1348 | 1350 | ||
1349 | spin_unlock(&up->port.lock); | 1351 | spin_unlock_irqrestore(&up->port.lock, flags); |
1350 | } | 1352 | } |
1351 | 1353 | ||
1352 | /* | 1354 | /* |
diff --git a/drivers/serial/8250_pnp.c b/drivers/serial/8250_pnp.c index cde5db44abf6..301c8c0be9d7 100644 --- a/drivers/serial/8250_pnp.c +++ b/drivers/serial/8250_pnp.c | |||
@@ -340,6 +340,9 @@ static const struct pnp_device_id pnp_dev_table[] = { | |||
340 | { "FUJ02B8", 0 }, | 340 | { "FUJ02B8", 0 }, |
341 | { "FUJ02B9", 0 }, | 341 | { "FUJ02B9", 0 }, |
342 | { "FUJ02BC", 0 }, | 342 | { "FUJ02BC", 0 }, |
343 | /* Fujitsu Wacom Tablet PC devices */ | ||
344 | { "FUJ02E5", 0 }, | ||
345 | { "FUJ02E6", 0 }, | ||
343 | /* Rockwell's (PORALiNK) 33600 INT PNP */ | 346 | /* Rockwell's (PORALiNK) 33600 INT PNP */ |
344 | { "WCI0003", 0 }, | 347 | { "WCI0003", 0 }, |
345 | /* Unkown PnP modems */ | 348 | /* Unkown PnP modems */ |
diff --git a/drivers/serial/icom.c b/drivers/serial/icom.c index 41431d0d5512..246c5572667b 100644 --- a/drivers/serial/icom.c +++ b/drivers/serial/icom.c | |||
@@ -164,7 +164,7 @@ static void free_port_memory(struct icom_port *icom_port) | |||
164 | } | 164 | } |
165 | } | 165 | } |
166 | 166 | ||
167 | static int __init get_port_memory(struct icom_port *icom_port) | 167 | static int __devinit get_port_memory(struct icom_port *icom_port) |
168 | { | 168 | { |
169 | int index; | 169 | int index; |
170 | unsigned long stgAddr; | 170 | unsigned long stgAddr; |
@@ -1380,7 +1380,7 @@ static void icom_port_active(struct icom_port *icom_port, struct icom_adapter *i | |||
1380 | 0x8024 + 2 - 2 * (icom_port->port - 2); | 1380 | 0x8024 + 2 - 2 * (icom_port->port - 2); |
1381 | } | 1381 | } |
1382 | } | 1382 | } |
1383 | static int __init icom_load_ports(struct icom_adapter *icom_adapter) | 1383 | static int __devinit icom_load_ports(struct icom_adapter *icom_adapter) |
1384 | { | 1384 | { |
1385 | struct icom_port *icom_port; | 1385 | struct icom_port *icom_port; |
1386 | int port_num; | 1386 | int port_num; |
@@ -1473,7 +1473,7 @@ static void icom_remove_adapter(struct icom_adapter *icom_adapter) | |||
1473 | } | 1473 | } |
1474 | } | 1474 | } |
1475 | 1475 | ||
1476 | free_irq(icom_adapter->irq_number, (void *) icom_adapter); | 1476 | free_irq(icom_adapter->pci_dev->irq, (void *) icom_adapter); |
1477 | iounmap(icom_adapter->base_addr); | 1477 | iounmap(icom_adapter->base_addr); |
1478 | icom_free_adapter(icom_adapter); | 1478 | icom_free_adapter(icom_adapter); |
1479 | pci_release_regions(icom_adapter->pci_dev); | 1479 | pci_release_regions(icom_adapter->pci_dev); |
@@ -1539,7 +1539,6 @@ static int __devinit icom_probe(struct pci_dev *dev, | |||
1539 | } | 1539 | } |
1540 | 1540 | ||
1541 | icom_adapter->base_addr_pci = pci_resource_start(dev, 0); | 1541 | icom_adapter->base_addr_pci = pci_resource_start(dev, 0); |
1542 | icom_adapter->irq_number = dev->irq; | ||
1543 | icom_adapter->pci_dev = dev; | 1542 | icom_adapter->pci_dev = dev; |
1544 | icom_adapter->version = ent->driver_data; | 1543 | icom_adapter->version = ent->driver_data; |
1545 | icom_adapter->subsystem_id = ent->subdevice; | 1544 | icom_adapter->subsystem_id = ent->subdevice; |
@@ -1570,7 +1569,7 @@ static int __devinit icom_probe(struct pci_dev *dev, | |||
1570 | icom_port = &icom_adapter->port_info[index]; | 1569 | icom_port = &icom_adapter->port_info[index]; |
1571 | 1570 | ||
1572 | if (icom_port->status == ICOM_PORT_ACTIVE) { | 1571 | if (icom_port->status == ICOM_PORT_ACTIVE) { |
1573 | icom_port->uart_port.irq = icom_port->adapter->irq_number; | 1572 | icom_port->uart_port.irq = icom_port->adapter->pci_dev->irq; |
1574 | icom_port->uart_port.type = PORT_ICOM; | 1573 | icom_port->uart_port.type = PORT_ICOM; |
1575 | icom_port->uart_port.iotype = UPIO_MEM; | 1574 | icom_port->uart_port.iotype = UPIO_MEM; |
1576 | icom_port->uart_port.membase = | 1575 | icom_port->uart_port.membase = |
diff --git a/drivers/serial/icom.h b/drivers/serial/icom.h index 798f1ef23712..e8578d8cd35e 100644 --- a/drivers/serial/icom.h +++ b/drivers/serial/icom.h | |||
@@ -258,7 +258,6 @@ struct icom_port { | |||
258 | struct icom_adapter { | 258 | struct icom_adapter { |
259 | void __iomem * base_addr; | 259 | void __iomem * base_addr; |
260 | unsigned long base_addr_pci; | 260 | unsigned long base_addr_pci; |
261 | unsigned char irq_number; | ||
262 | struct pci_dev *pci_dev; | 261 | struct pci_dev *pci_dev; |
263 | struct icom_port port_info[4]; | 262 | struct icom_port port_info[4]; |
264 | int index; | 263 | int index; |
diff --git a/drivers/serial/sh-sci.c b/drivers/serial/sh-sci.c index c53b69610a51..46c40bbc4bc6 100644 --- a/drivers/serial/sh-sci.c +++ b/drivers/serial/sh-sci.c | |||
@@ -17,6 +17,9 @@ | |||
17 | * License. See the file "COPYING" in the main directory of this archive | 17 | * License. See the file "COPYING" in the main directory of this archive |
18 | * for more details. | 18 | * for more details. |
19 | */ | 19 | */ |
20 | #if defined(CONFIG_SERIAL_SH_SCI_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) | ||
21 | #define SUPPORT_SYSRQ | ||
22 | #endif | ||
20 | 23 | ||
21 | #undef DEBUG | 24 | #undef DEBUG |
22 | 25 | ||
@@ -49,11 +52,6 @@ | |||
49 | #endif | 52 | #endif |
50 | 53 | ||
51 | #include <asm/sci.h> | 54 | #include <asm/sci.h> |
52 | |||
53 | #if defined(CONFIG_SERIAL_SH_SCI_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) | ||
54 | #define SUPPORT_SYSRQ | ||
55 | #endif | ||
56 | |||
57 | #include "sh-sci.h" | 55 | #include "sh-sci.h" |
58 | 56 | ||
59 | struct sci_port { | 57 | struct sci_port { |
@@ -645,6 +643,9 @@ static inline int sci_handle_breaks(struct uart_port *port) | |||
645 | struct tty_struct *tty = port->info->tty; | 643 | struct tty_struct *tty = port->info->tty; |
646 | struct sci_port *s = &sci_ports[port->line]; | 644 | struct sci_port *s = &sci_ports[port->line]; |
647 | 645 | ||
646 | if (uart_handle_break(port)) | ||
647 | return 0; | ||
648 | |||
648 | if (!s->break_flag && status & SCxSR_BRK(port)) { | 649 | if (!s->break_flag && status & SCxSR_BRK(port)) { |
649 | #if defined(CONFIG_CPU_SH3) | 650 | #if defined(CONFIG_CPU_SH3) |
650 | /* Debounce break */ | 651 | /* Debounce break */ |