aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/serial
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/serial')
-rw-r--r--drivers/serial/8250.c2
-rw-r--r--drivers/serial/Kconfig14
-rw-r--r--drivers/serial/cpm_uart/cpm_uart_core.c12
-rw-r--r--drivers/serial/icom.c1
-rw-r--r--drivers/serial/jsm/jsm_neo.c7
-rw-r--r--drivers/serial/jsm/jsm_tty.c1
-rw-r--r--drivers/serial/mpc52xx_uart.c7
-rw-r--r--drivers/serial/of_serial.c4
-rw-r--r--drivers/serial/pmac_zilog.c8
-rw-r--r--drivers/serial/s3c2410.c6
-rw-r--r--drivers/serial/serial_txx9.c32
11 files changed, 39 insertions, 55 deletions
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
index c9832d963f1e..48e259a0167d 100644
--- a/drivers/serial/8250.c
+++ b/drivers/serial/8250.c
@@ -994,7 +994,6 @@ static void autoconfig(struct uart_8250_port *up, unsigned int probeflags)
994 * be frobbing the chips IRQ enable register to see if it exists. 994 * be frobbing the chips IRQ enable register to see if it exists.
995 */ 995 */
996 spin_lock_irqsave(&up->port.lock, flags); 996 spin_lock_irqsave(&up->port.lock, flags);
997// save_flags(flags); cli();
998 997
999 up->capabilities = 0; 998 up->capabilities = 0;
1000 up->bugs = 0; 999 up->bugs = 0;
@@ -1151,7 +1150,6 @@ static void autoconfig(struct uart_8250_port *up, unsigned int probeflags)
1151 1150
1152 out: 1151 out:
1153 spin_unlock_irqrestore(&up->port.lock, flags); 1152 spin_unlock_irqrestore(&up->port.lock, flags);
1154// restore_flags(flags);
1155 DEBUG_AUTOCONF("type=%s\n", uart_config[up->port.type].name); 1153 DEBUG_AUTOCONF("type=%s\n", uart_config[up->port.type].name);
1156} 1154}
1157 1155
diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig
index 924e9bd757f0..e8efe938c4e7 100644
--- a/drivers/serial/Kconfig
+++ b/drivers/serial/Kconfig
@@ -73,17 +73,21 @@ config SERIAL_8250_PCI
73 depends on SERIAL_8250 && PCI 73 depends on SERIAL_8250 && PCI
74 default SERIAL_8250 74 default SERIAL_8250
75 help 75 help
76 This builds standard PCI serial support. You may be able to 76 Say Y here if you have PCI serial ports.
77 disable this feature if you only need legacy serial support. 77
78 Saves about 9K. 78 To compile this driver as a module, choose M here: the module
79 will be called 8250_pci.
79 80
80config SERIAL_8250_PNP 81config SERIAL_8250_PNP
81 tristate "8250/16550 PNP device support" if EMBEDDED 82 tristate "8250/16550 PNP device support" if EMBEDDED
82 depends on SERIAL_8250 && PNP 83 depends on SERIAL_8250 && PNP
83 default SERIAL_8250 84 default SERIAL_8250
84 help 85 help
85 This builds standard PNP serial support. You may be able to 86 Say Y here if you have serial ports described by PNPBIOS or ACPI.
86 disable this feature if you only need legacy serial support. 87 These are typically ports built into the system board.
88
89 To compile this driver as a module, choose M here: the module
90 will be called 8250_pnp.
87 91
88config SERIAL_8250_HP300 92config SERIAL_8250_HP300
89 tristate 93 tristate
diff --git a/drivers/serial/cpm_uart/cpm_uart_core.c b/drivers/serial/cpm_uart/cpm_uart_core.c
index 7a3b97fdf8d1..f23972bc00c0 100644
--- a/drivers/serial/cpm_uart/cpm_uart_core.c
+++ b/drivers/serial/cpm_uart/cpm_uart_core.c
@@ -934,7 +934,7 @@ struct uart_cpm_port cpm_uart_ports[UART_NR] = {
934 .irq = SMC1_IRQ, 934 .irq = SMC1_IRQ,
935 .ops = &cpm_uart_pops, 935 .ops = &cpm_uart_pops,
936 .iotype = UPIO_MEM, 936 .iotype = UPIO_MEM,
937 .lock = SPIN_LOCK_UNLOCKED, 937 .lock = __SPIN_LOCK_UNLOCKED(cpm_uart_ports[UART_SMC1].port.lock),
938 }, 938 },
939 .flags = FLAG_SMC, 939 .flags = FLAG_SMC,
940 .tx_nrfifos = TX_NUM_FIFO, 940 .tx_nrfifos = TX_NUM_FIFO,
@@ -948,7 +948,7 @@ struct uart_cpm_port cpm_uart_ports[UART_NR] = {
948 .irq = SMC2_IRQ, 948 .irq = SMC2_IRQ,
949 .ops = &cpm_uart_pops, 949 .ops = &cpm_uart_pops,
950 .iotype = UPIO_MEM, 950 .iotype = UPIO_MEM,
951 .lock = SPIN_LOCK_UNLOCKED, 951 .lock = __SPIN_LOCK_UNLOCKED(cpm_uart_ports[UART_SMC2].port.lock),
952 }, 952 },
953 .flags = FLAG_SMC, 953 .flags = FLAG_SMC,
954 .tx_nrfifos = TX_NUM_FIFO, 954 .tx_nrfifos = TX_NUM_FIFO,
@@ -965,7 +965,7 @@ struct uart_cpm_port cpm_uart_ports[UART_NR] = {
965 .irq = SCC1_IRQ, 965 .irq = SCC1_IRQ,
966 .ops = &cpm_uart_pops, 966 .ops = &cpm_uart_pops,
967 .iotype = UPIO_MEM, 967 .iotype = UPIO_MEM,
968 .lock = SPIN_LOCK_UNLOCKED, 968 .lock = __SPIN_LOCK_UNLOCKED(cpm_uart_ports[UART_SCC1].port.lock),
969 }, 969 },
970 .tx_nrfifos = TX_NUM_FIFO, 970 .tx_nrfifos = TX_NUM_FIFO,
971 .tx_fifosize = TX_BUF_SIZE, 971 .tx_fifosize = TX_BUF_SIZE,
@@ -979,7 +979,7 @@ struct uart_cpm_port cpm_uart_ports[UART_NR] = {
979 .irq = SCC2_IRQ, 979 .irq = SCC2_IRQ,
980 .ops = &cpm_uart_pops, 980 .ops = &cpm_uart_pops,
981 .iotype = UPIO_MEM, 981 .iotype = UPIO_MEM,
982 .lock = SPIN_LOCK_UNLOCKED, 982 .lock = __SPIN_LOCK_UNLOCKED(cpm_uart_ports[UART_SCC2].port.lock),
983 }, 983 },
984 .tx_nrfifos = TX_NUM_FIFO, 984 .tx_nrfifos = TX_NUM_FIFO,
985 .tx_fifosize = TX_BUF_SIZE, 985 .tx_fifosize = TX_BUF_SIZE,
@@ -993,7 +993,7 @@ struct uart_cpm_port cpm_uart_ports[UART_NR] = {
993 .irq = SCC3_IRQ, 993 .irq = SCC3_IRQ,
994 .ops = &cpm_uart_pops, 994 .ops = &cpm_uart_pops,
995 .iotype = UPIO_MEM, 995 .iotype = UPIO_MEM,
996 .lock = SPIN_LOCK_UNLOCKED, 996 .lock = __SPIN_LOCK_UNLOCKED(cpm_uart_ports[UART_SCC3].port.lock),
997 }, 997 },
998 .tx_nrfifos = TX_NUM_FIFO, 998 .tx_nrfifos = TX_NUM_FIFO,
999 .tx_fifosize = TX_BUF_SIZE, 999 .tx_fifosize = TX_BUF_SIZE,
@@ -1007,7 +1007,7 @@ struct uart_cpm_port cpm_uart_ports[UART_NR] = {
1007 .irq = SCC4_IRQ, 1007 .irq = SCC4_IRQ,
1008 .ops = &cpm_uart_pops, 1008 .ops = &cpm_uart_pops,
1009 .iotype = UPIO_MEM, 1009 .iotype = UPIO_MEM,
1010 .lock = SPIN_LOCK_UNLOCKED, 1010 .lock = __SPIN_LOCK_UNLOCKED(cpm_uart_ports[UART_SCC4].port.lock),
1011 }, 1011 },
1012 .tx_nrfifos = TX_NUM_FIFO, 1012 .tx_nrfifos = TX_NUM_FIFO,
1013 .tx_fifosize = TX_BUF_SIZE, 1013 .tx_fifosize = TX_BUF_SIZE,
diff --git a/drivers/serial/icom.c b/drivers/serial/icom.c
index 246c5572667b..6202995e8211 100644
--- a/drivers/serial/icom.c
+++ b/drivers/serial/icom.c
@@ -47,7 +47,6 @@
47#include <linux/pci.h> 47#include <linux/pci.h>
48#include <linux/vmalloc.h> 48#include <linux/vmalloc.h>
49#include <linux/smp.h> 49#include <linux/smp.h>
50#include <linux/smp_lock.h>
51#include <linux/spinlock.h> 50#include <linux/spinlock.h>
52#include <linux/kobject.h> 51#include <linux/kobject.h>
53#include <linux/firmware.h> 52#include <linux/firmware.h>
diff --git a/drivers/serial/jsm/jsm_neo.c b/drivers/serial/jsm/jsm_neo.c
index 8be8da37f629..b2d6f5b1a7c2 100644
--- a/drivers/serial/jsm/jsm_neo.c
+++ b/drivers/serial/jsm/jsm_neo.c
@@ -581,8 +581,13 @@ static void neo_parse_modem(struct jsm_channel *ch, u8 signals)
581 return; 581 return;
582 582
583 /* Scrub off lower bits. They signify delta's, which I don't care about */ 583 /* Scrub off lower bits. They signify delta's, which I don't care about */
584 msignals &= 0xf0; 584 /* Keep DDCD and DDSR though */
585 msignals &= 0xf8;
585 586
587 if (msignals & UART_MSR_DDCD)
588 uart_handle_dcd_change(&ch->uart_port, msignals & UART_MSR_DCD);
589 if (msignals & UART_MSR_DDSR)
590 uart_handle_cts_change(&ch->uart_port, msignals & UART_MSR_CTS);
586 if (msignals & UART_MSR_DCD) 591 if (msignals & UART_MSR_DCD)
587 ch->ch_mistat |= UART_MSR_DCD; 592 ch->ch_mistat |= UART_MSR_DCD;
588 else 593 else
diff --git a/drivers/serial/jsm/jsm_tty.c b/drivers/serial/jsm/jsm_tty.c
index be22bbdbc8e5..281f23a371b2 100644
--- a/drivers/serial/jsm/jsm_tty.c
+++ b/drivers/serial/jsm/jsm_tty.c
@@ -448,6 +448,7 @@ int jsm_uart_port_init(struct jsm_board *brd)
448 continue; 448 continue;
449 449
450 brd->channels[i]->uart_port.irq = brd->irq; 450 brd->channels[i]->uart_port.irq = brd->irq;
451 brd->channels[i]->uart_port.uartclk = 14745600;
451 brd->channels[i]->uart_port.type = PORT_JSM; 452 brd->channels[i]->uart_port.type = PORT_JSM;
452 brd->channels[i]->uart_port.iotype = UPIO_MEM; 453 brd->channels[i]->uart_port.iotype = UPIO_MEM;
453 brd->channels[i]->uart_port.membase = brd->re_map_membase; 454 brd->channels[i]->uart_port.membase = brd->re_map_membase;
diff --git a/drivers/serial/mpc52xx_uart.c b/drivers/serial/mpc52xx_uart.c
index 8d24cd521056..35f8b86cc78f 100644
--- a/drivers/serial/mpc52xx_uart.c
+++ b/drivers/serial/mpc52xx_uart.c
@@ -257,9 +257,10 @@ mpc52xx_uart_shutdown(struct uart_port *port)
257{ 257{
258 struct mpc52xx_psc __iomem *psc = PSC(port); 258 struct mpc52xx_psc __iomem *psc = PSC(port);
259 259
260 /* Shut down the port, interrupt and all */ 260 /* Shut down the port. Leave TX active if on a console port */
261 out_8(&psc->command,MPC52xx_PSC_RST_RX); 261 out_8(&psc->command,MPC52xx_PSC_RST_RX);
262 out_8(&psc->command,MPC52xx_PSC_RST_TX); 262 if (!uart_console(port))
263 out_8(&psc->command,MPC52xx_PSC_RST_TX);
263 264
264 port->read_status_mask = 0; 265 port->read_status_mask = 0;
265 out_be16(&psc->mpc52xx_psc_imr,port->read_status_mask); 266 out_be16(&psc->mpc52xx_psc_imr,port->read_status_mask);
@@ -1069,7 +1070,7 @@ mpc52xx_uart_of_enumerate(void)
1069 continue; 1070 continue;
1070 1071
1071 /* Is a particular device number requested? */ 1072 /* Is a particular device number requested? */
1072 devno = get_property(np, "port-number", NULL); 1073 devno = of_get_property(np, "port-number", NULL);
1073 mpc52xx_uart_of_assign(of_node_get(np), devno ? *devno : -1); 1074 mpc52xx_uart_of_assign(of_node_get(np), devno ? *devno : -1);
1074 } 1075 }
1075 1076
diff --git a/drivers/serial/of_serial.c b/drivers/serial/of_serial.c
index 336d0f4580d9..7ffdaeaf0545 100644
--- a/drivers/serial/of_serial.c
+++ b/drivers/serial/of_serial.c
@@ -29,8 +29,8 @@ static int __devinit of_platform_serial_setup(struct of_device *ofdev,
29 int ret; 29 int ret;
30 30
31 memset(port, 0, sizeof *port); 31 memset(port, 0, sizeof *port);
32 spd = get_property(np, "current-speed", NULL); 32 spd = of_get_property(np, "current-speed", NULL);
33 clk = get_property(np, "clock-frequency", NULL); 33 clk = of_get_property(np, "clock-frequency", NULL);
34 if (!clk) { 34 if (!clk) {
35 dev_warn(&ofdev->dev, "no clock-frequency property set\n"); 35 dev_warn(&ofdev->dev, "no clock-frequency property set\n");
36 return -ENODEV; 36 return -ENODEV;
diff --git a/drivers/serial/pmac_zilog.c b/drivers/serial/pmac_zilog.c
index be8d75721a85..0fa9f6761763 100644
--- a/drivers/serial/pmac_zilog.c
+++ b/drivers/serial/pmac_zilog.c
@@ -1450,14 +1450,14 @@ no_dma:
1450 /* 1450 /*
1451 * Detect port type 1451 * Detect port type
1452 */ 1452 */
1453 if (device_is_compatible(np, "cobalt")) 1453 if (of_device_is_compatible(np, "cobalt"))
1454 uap->flags |= PMACZILOG_FLAG_IS_INTMODEM; 1454 uap->flags |= PMACZILOG_FLAG_IS_INTMODEM;
1455 conn = get_property(np, "AAPL,connector", &len); 1455 conn = of_get_property(np, "AAPL,connector", &len);
1456 if (conn && (strcmp(conn, "infrared") == 0)) 1456 if (conn && (strcmp(conn, "infrared") == 0))
1457 uap->flags |= PMACZILOG_FLAG_IS_IRDA; 1457 uap->flags |= PMACZILOG_FLAG_IS_IRDA;
1458 uap->port_type = PMAC_SCC_ASYNC; 1458 uap->port_type = PMAC_SCC_ASYNC;
1459 /* 1999 Powerbook G3 has slot-names property instead */ 1459 /* 1999 Powerbook G3 has slot-names property instead */
1460 slots = get_property(np, "slot-names", &len); 1460 slots = of_get_property(np, "slot-names", &len);
1461 if (slots && slots->count > 0) { 1461 if (slots && slots->count > 0) {
1462 if (strcmp(slots->name, "IrDA") == 0) 1462 if (strcmp(slots->name, "IrDA") == 0)
1463 uap->flags |= PMACZILOG_FLAG_IS_IRDA; 1463 uap->flags |= PMACZILOG_FLAG_IS_IRDA;
@@ -1471,7 +1471,7 @@ no_dma:
1471 of_find_node_by_name(NULL, "i2c-modem"); 1471 of_find_node_by_name(NULL, "i2c-modem");
1472 if (i2c_modem) { 1472 if (i2c_modem) {
1473 const char* mid = 1473 const char* mid =
1474 get_property(i2c_modem, "modem-id", NULL); 1474 of_get_property(i2c_modem, "modem-id", NULL);
1475 if (mid) switch(*mid) { 1475 if (mid) switch(*mid) {
1476 case 0x04 : 1476 case 0x04 :
1477 case 0x05 : 1477 case 0x05 :
diff --git a/drivers/serial/s3c2410.c b/drivers/serial/s3c2410.c
index 3ba9208ebd0c..10bc0209cd66 100644
--- a/drivers/serial/s3c2410.c
+++ b/drivers/serial/s3c2410.c
@@ -957,7 +957,7 @@ static struct uart_driver s3c24xx_uart_drv = {
957static struct s3c24xx_uart_port s3c24xx_serial_ports[NR_PORTS] = { 957static struct s3c24xx_uart_port s3c24xx_serial_ports[NR_PORTS] = {
958 [0] = { 958 [0] = {
959 .port = { 959 .port = {
960 .lock = SPIN_LOCK_UNLOCKED, 960 .lock = __SPIN_LOCK_UNLOCKED(s3c24xx_serial_ports[0].port.lock),
961 .iotype = UPIO_MEM, 961 .iotype = UPIO_MEM,
962 .irq = IRQ_S3CUART_RX0, 962 .irq = IRQ_S3CUART_RX0,
963 .uartclk = 0, 963 .uartclk = 0,
@@ -969,7 +969,7 @@ static struct s3c24xx_uart_port s3c24xx_serial_ports[NR_PORTS] = {
969 }, 969 },
970 [1] = { 970 [1] = {
971 .port = { 971 .port = {
972 .lock = SPIN_LOCK_UNLOCKED, 972 .lock = __SPIN_LOCK_UNLOCKED(s3c24xx_serial_ports[1].port.lock),
973 .iotype = UPIO_MEM, 973 .iotype = UPIO_MEM,
974 .irq = IRQ_S3CUART_RX1, 974 .irq = IRQ_S3CUART_RX1,
975 .uartclk = 0, 975 .uartclk = 0,
@@ -983,7 +983,7 @@ static struct s3c24xx_uart_port s3c24xx_serial_ports[NR_PORTS] = {
983 983
984 [2] = { 984 [2] = {
985 .port = { 985 .port = {
986 .lock = SPIN_LOCK_UNLOCKED, 986 .lock = __SPIN_LOCK_UNLOCKED(s3c24xx_serial_ports[2].port.lock),
987 .iotype = UPIO_MEM, 987 .iotype = UPIO_MEM,
988 .irq = IRQ_S3CUART_RX2, 988 .irq = IRQ_S3CUART_RX2,
989 .uartclk = 0, 989 .uartclk = 0,
diff --git a/drivers/serial/serial_txx9.c b/drivers/serial/serial_txx9.c
index 509ace7e6881..1deb5764326d 100644
--- a/drivers/serial/serial_txx9.c
+++ b/drivers/serial/serial_txx9.c
@@ -15,31 +15,6 @@
15 * published by the Free Software Foundation. 15 * published by the Free Software Foundation.
16 * 16 *
17 * Serial driver for TX3927/TX4927/TX4925/TX4938 internal SIO controller 17 * Serial driver for TX3927/TX4927/TX4925/TX4938 internal SIO controller
18 *
19 * Revision History:
20 * 0.30 Initial revision. (Renamed from serial_txx927.c)
21 * 0.31 Use save_flags instead of local_irq_save.
22 * 0.32 Support SCLK.
23 * 0.33 Switch TXX9_TTY_NAME by CONFIG_SERIAL_TXX9_STDSERIAL.
24 * Support TIOCSERGETLSR.
25 * 0.34 Support slow baudrate.
26 * 0.40 Merge codes from mainstream kernel (2.4.22).
27 * 0.41 Fix console checking in rs_shutdown_port().
28 * Disable flow-control in serial_console_write().
29 * 0.42 Fix minor compiler warning.
30 * 1.00 Kernel 2.6. Converted to new serial core (based on 8250.c).
31 * 1.01 Set fifosize to make tx_empry called properly.
32 * Use standard uart_get_divisor.
33 * 1.02 Cleanup. (import 8250.c changes)
34 * 1.03 Fix low-latency mode. (import 8250.c changes)
35 * 1.04 Remove usage of deprecated functions, cleanup.
36 * 1.05 More strict check in verify_port. Cleanup.
37 * 1.06 Do not insert a char caused previous overrun.
38 * Fix some spin_locks.
39 * Do not call uart_add_one_port for absent ports.
40 * 1.07 Use CONFIG_SERIAL_TXX9_NR_UARTS. Cleanup.
41 * 1.08 Use platform_device.
42 * Fix and cleanup suspend/resume/initialization codes.
43 */ 18 */
44 19
45#if defined(CONFIG_SERIAL_TXX9_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) 20#if defined(CONFIG_SERIAL_TXX9_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
@@ -62,7 +37,7 @@
62 37
63#include <asm/io.h> 38#include <asm/io.h>
64 39
65static char *serial_version = "1.08"; 40static char *serial_version = "1.09";
66static char *serial_name = "TX39/49 Serial driver"; 41static char *serial_name = "TX39/49 Serial driver";
67 42
68#define PASS_LIMIT 256 43#define PASS_LIMIT 256
@@ -70,13 +45,14 @@ static char *serial_name = "TX39/49 Serial driver";
70#if !defined(CONFIG_SERIAL_TXX9_STDSERIAL) 45#if !defined(CONFIG_SERIAL_TXX9_STDSERIAL)
71/* "ttyS" is used for standard serial driver */ 46/* "ttyS" is used for standard serial driver */
72#define TXX9_TTY_NAME "ttyTX" 47#define TXX9_TTY_NAME "ttyTX"
73#define TXX9_TTY_MINOR_START (64 + 64) /* ttyTX0(128), ttyTX1(129) */ 48#define TXX9_TTY_MINOR_START 196
49#define TXX9_TTY_MAJOR 204
74#else 50#else
75/* acts like standard serial driver */ 51/* acts like standard serial driver */
76#define TXX9_TTY_NAME "ttyS" 52#define TXX9_TTY_NAME "ttyS"
77#define TXX9_TTY_MINOR_START 64 53#define TXX9_TTY_MINOR_START 64
78#endif
79#define TXX9_TTY_MAJOR TTY_MAJOR 54#define TXX9_TTY_MAJOR TTY_MAJOR
55#endif
80 56
81/* flag aliases */ 57/* flag aliases */
82#define UPF_TXX9_HAVE_CTS_LINE UPF_BUGGY_UART 58#define UPF_TXX9_HAVE_CTS_LINE UPF_BUGGY_UART