diff options
author | James Morris <jmorris@namei.org> | 2011-04-19 07:32:41 -0400 |
---|---|---|
committer | James Morris <jmorris@namei.org> | 2011-04-19 07:32:41 -0400 |
commit | d4ab4e6a23f805abb8fc3cc34525eec3788aeca1 (patch) | |
tree | eefd82c155bc27469a85667d759cd90facf4a6e3 /drivers/tty/serial | |
parent | c0fa797ae6cd02ff87c0bfe0d509368a3b45640e (diff) | |
parent | 96fd2d57b8252e16dfacf8941f7a74a6119197f5 (diff) |
Merge branch 'master'; commit 'v2.6.39-rc3' into next
Diffstat (limited to 'drivers/tty/serial')
-rw-r--r-- | drivers/tty/serial/8250.c | 2 | ||||
-rw-r--r-- | drivers/tty/serial/8250_pci.c | 2 | ||||
-rw-r--r-- | drivers/tty/serial/Kconfig | 2 | ||||
-rw-r--r-- | drivers/tty/serial/amba-pl011.c | 2 | ||||
-rw-r--r-- | drivers/tty/serial/apbuart.c | 34 | ||||
-rw-r--r-- | drivers/tty/serial/icom.c | 2 | ||||
-rw-r--r-- | drivers/tty/serial/imx.c | 2 | ||||
-rw-r--r-- | drivers/tty/serial/ip22zilog.c | 2 | ||||
-rw-r--r-- | drivers/tty/serial/jsm/jsm.h | 2 | ||||
-rw-r--r-- | drivers/tty/serial/jsm/jsm_neo.c | 4 | ||||
-rw-r--r-- | drivers/tty/serial/max3107.h | 2 | ||||
-rw-r--r-- | drivers/tty/serial/mrst_max3110.c | 2 | ||||
-rw-r--r-- | drivers/tty/serial/mrst_max3110.h | 2 | ||||
-rw-r--r-- | drivers/tty/serial/msm_serial_hs.c | 4 | ||||
-rw-r--r-- | drivers/tty/serial/omap-serial.c | 2 | ||||
-rw-r--r-- | drivers/tty/serial/pmac_zilog.c | 6 | ||||
-rw-r--r-- | drivers/tty/serial/samsung.c | 4 | ||||
-rw-r--r-- | drivers/tty/serial/sh-sci.c | 27 | ||||
-rw-r--r-- | drivers/tty/serial/sn_console.c | 4 | ||||
-rw-r--r-- | drivers/tty/serial/sunzilog.c | 2 |
20 files changed, 48 insertions, 61 deletions
diff --git a/drivers/tty/serial/8250.c b/drivers/tty/serial/8250.c index b3b881bc4712..6611535f4440 100644 --- a/drivers/tty/serial/8250.c +++ b/drivers/tty/serial/8250.c | |||
@@ -1629,7 +1629,7 @@ static irqreturn_t serial8250_interrupt(int irq, void *dev_id) | |||
1629 | up->port.iotype == UPIO_DWAPB32) && | 1629 | up->port.iotype == UPIO_DWAPB32) && |
1630 | (iir & UART_IIR_BUSY) == UART_IIR_BUSY) { | 1630 | (iir & UART_IIR_BUSY) == UART_IIR_BUSY) { |
1631 | /* The DesignWare APB UART has an Busy Detect (0x07) | 1631 | /* The DesignWare APB UART has an Busy Detect (0x07) |
1632 | * interrupt meaning an LCR write attempt occured while the | 1632 | * interrupt meaning an LCR write attempt occurred while the |
1633 | * UART was busy. The interrupt must be cleared by reading | 1633 | * UART was busy. The interrupt must be cleared by reading |
1634 | * the UART status register (USR) and the LCR re-written. */ | 1634 | * the UART status register (USR) and the LCR re-written. */ |
1635 | unsigned int status; | 1635 | unsigned int status; |
diff --git a/drivers/tty/serial/8250_pci.c b/drivers/tty/serial/8250_pci.c index 8b8930f700b5..738cec9807d3 100644 --- a/drivers/tty/serial/8250_pci.c +++ b/drivers/tty/serial/8250_pci.c | |||
@@ -433,7 +433,7 @@ static void __devexit sbs_exit(struct pci_dev *dev) | |||
433 | /* | 433 | /* |
434 | * SIIG serial cards have an PCI interface chip which also controls | 434 | * SIIG serial cards have an PCI interface chip which also controls |
435 | * the UART clocking frequency. Each UART can be clocked independently | 435 | * the UART clocking frequency. Each UART can be clocked independently |
436 | * (except cards equiped with 4 UARTs) and initial clocking settings | 436 | * (except cards equipped with 4 UARTs) and initial clocking settings |
437 | * are stored in the EEPROM chip. It can cause problems because this | 437 | * are stored in the EEPROM chip. It can cause problems because this |
438 | * version of serial driver doesn't support differently clocked UART's | 438 | * version of serial driver doesn't support differently clocked UART's |
439 | * on single PCI card. To prevent this, initialization functions set | 439 | * on single PCI card. To prevent this, initialization functions set |
diff --git a/drivers/tty/serial/Kconfig b/drivers/tty/serial/Kconfig index e1aee37270f5..80484af781e1 100644 --- a/drivers/tty/serial/Kconfig +++ b/drivers/tty/serial/Kconfig | |||
@@ -1506,7 +1506,7 @@ config SERIAL_BCM63XX_CONSOLE | |||
1506 | 1506 | ||
1507 | config SERIAL_GRLIB_GAISLER_APBUART | 1507 | config SERIAL_GRLIB_GAISLER_APBUART |
1508 | tristate "GRLIB APBUART serial support" | 1508 | tristate "GRLIB APBUART serial support" |
1509 | depends on OF | 1509 | depends on OF && SPARC |
1510 | select SERIAL_CORE | 1510 | select SERIAL_CORE |
1511 | ---help--- | 1511 | ---help--- |
1512 | Add support for the GRLIB APBUART serial port. | 1512 | Add support for the GRLIB APBUART serial port. |
diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c index 57731e870085..6deee4e546be 100644 --- a/drivers/tty/serial/amba-pl011.c +++ b/drivers/tty/serial/amba-pl011.c | |||
@@ -520,7 +520,7 @@ static bool pl011_dma_tx_irq(struct uart_amba_port *uap) | |||
520 | 520 | ||
521 | /* | 521 | /* |
522 | * We don't have a TX buffer queued, so try to queue one. | 522 | * We don't have a TX buffer queued, so try to queue one. |
523 | * If we succesfully queued a buffer, mask the TX IRQ. | 523 | * If we successfully queued a buffer, mask the TX IRQ. |
524 | */ | 524 | */ |
525 | if (pl011_dma_tx_refill(uap) > 0) { | 525 | if (pl011_dma_tx_refill(uap) > 0) { |
526 | uap->im &= ~UART011_TXIM; | 526 | uap->im &= ~UART011_TXIM; |
diff --git a/drivers/tty/serial/apbuart.c b/drivers/tty/serial/apbuart.c index 1ab999b04ef3..19a943693e4c 100644 --- a/drivers/tty/serial/apbuart.c +++ b/drivers/tty/serial/apbuart.c | |||
@@ -555,10 +555,9 @@ static struct uart_driver grlib_apbuart_driver = { | |||
555 | 555 | ||
556 | static int __devinit apbuart_probe(struct platform_device *op) | 556 | static int __devinit apbuart_probe(struct platform_device *op) |
557 | { | 557 | { |
558 | int i = -1; | 558 | int i; |
559 | struct uart_port *port = NULL; | 559 | struct uart_port *port = NULL; |
560 | 560 | ||
561 | i = 0; | ||
562 | for (i = 0; i < grlib_apbuart_port_nr; i++) { | 561 | for (i = 0; i < grlib_apbuart_port_nr; i++) { |
563 | if (op->dev.of_node == grlib_apbuart_nodes[i]) | 562 | if (op->dev.of_node == grlib_apbuart_nodes[i]) |
564 | break; | 563 | break; |
@@ -566,6 +565,7 @@ static int __devinit apbuart_probe(struct platform_device *op) | |||
566 | 565 | ||
567 | port = &grlib_apbuart_ports[i]; | 566 | port = &grlib_apbuart_ports[i]; |
568 | port->dev = &op->dev; | 567 | port->dev = &op->dev; |
568 | port->irq = op->archdata.irqs[0]; | ||
569 | 569 | ||
570 | uart_add_one_port(&grlib_apbuart_driver, (struct uart_port *) port); | 570 | uart_add_one_port(&grlib_apbuart_driver, (struct uart_port *) port); |
571 | 571 | ||
@@ -598,24 +598,12 @@ static struct platform_driver grlib_apbuart_of_driver = { | |||
598 | 598 | ||
599 | static int grlib_apbuart_configure(void) | 599 | static int grlib_apbuart_configure(void) |
600 | { | 600 | { |
601 | struct device_node *np, *rp; | 601 | struct device_node *np; |
602 | const u32 *prop; | 602 | int line = 0; |
603 | int freq_khz, line = 0; | ||
604 | |||
605 | /* Get bus frequency */ | ||
606 | rp = of_find_node_by_path("/"); | ||
607 | if (!rp) | ||
608 | return -ENODEV; | ||
609 | rp = of_get_next_child(rp, NULL); | ||
610 | if (!rp) | ||
611 | return -ENODEV; | ||
612 | prop = of_get_property(rp, "clock-frequency", NULL); | ||
613 | if (!prop) | ||
614 | return -ENODEV; | ||
615 | freq_khz = *prop; | ||
616 | 603 | ||
617 | for_each_matching_node(np, apbuart_match) { | 604 | for_each_matching_node(np, apbuart_match) { |
618 | const int *irqs, *ampopts; | 605 | const int *ampopts; |
606 | const u32 *freq_hz; | ||
619 | const struct amba_prom_registers *regs; | 607 | const struct amba_prom_registers *regs; |
620 | struct uart_port *port; | 608 | struct uart_port *port; |
621 | unsigned long addr; | 609 | unsigned long addr; |
@@ -623,11 +611,11 @@ static int grlib_apbuart_configure(void) | |||
623 | ampopts = of_get_property(np, "ampopts", NULL); | 611 | ampopts = of_get_property(np, "ampopts", NULL); |
624 | if (ampopts && (*ampopts == 0)) | 612 | if (ampopts && (*ampopts == 0)) |
625 | continue; /* Ignore if used by another OS instance */ | 613 | continue; /* Ignore if used by another OS instance */ |
626 | |||
627 | irqs = of_get_property(np, "interrupts", NULL); | ||
628 | regs = of_get_property(np, "reg", NULL); | 614 | regs = of_get_property(np, "reg", NULL); |
615 | /* Frequency of APB Bus is frequency of UART */ | ||
616 | freq_hz = of_get_property(np, "freq", NULL); | ||
629 | 617 | ||
630 | if (!irqs || !regs) | 618 | if (!regs || !freq_hz || (*freq_hz == 0)) |
631 | continue; | 619 | continue; |
632 | 620 | ||
633 | grlib_apbuart_nodes[line] = np; | 621 | grlib_apbuart_nodes[line] = np; |
@@ -638,12 +626,12 @@ static int grlib_apbuart_configure(void) | |||
638 | 626 | ||
639 | port->mapbase = addr; | 627 | port->mapbase = addr; |
640 | port->membase = ioremap(addr, sizeof(struct grlib_apbuart_regs_map)); | 628 | port->membase = ioremap(addr, sizeof(struct grlib_apbuart_regs_map)); |
641 | port->irq = *irqs; | 629 | port->irq = 0; |
642 | port->iotype = UPIO_MEM; | 630 | port->iotype = UPIO_MEM; |
643 | port->ops = &grlib_apbuart_ops; | 631 | port->ops = &grlib_apbuart_ops; |
644 | port->flags = UPF_BOOT_AUTOCONF; | 632 | port->flags = UPF_BOOT_AUTOCONF; |
645 | port->line = line; | 633 | port->line = line; |
646 | port->uartclk = freq_khz * 1000; | 634 | port->uartclk = *freq_hz; |
647 | port->fifosize = apbuart_scan_fifo_size((struct uart_port *) port, line); | 635 | port->fifosize = apbuart_scan_fifo_size((struct uart_port *) port, line); |
648 | line++; | 636 | line++; |
649 | 637 | ||
diff --git a/drivers/tty/serial/icom.c b/drivers/tty/serial/icom.c index 53a468227056..8a869e58f6d7 100644 --- a/drivers/tty/serial/icom.c +++ b/drivers/tty/serial/icom.c | |||
@@ -1248,7 +1248,7 @@ static void icom_set_termios(struct uart_port *port, | |||
1248 | } | 1248 | } |
1249 | } | 1249 | } |
1250 | 1250 | ||
1251 | /* Enable Transmitter and Reciever */ | 1251 | /* Enable Transmitter and Receiver */ |
1252 | offset = | 1252 | offset = |
1253 | (unsigned long) &ICOM_PORT->statStg->rcv[0] - | 1253 | (unsigned long) &ICOM_PORT->statStg->rcv[0] - |
1254 | (unsigned long) ICOM_PORT->statStg; | 1254 | (unsigned long) ICOM_PORT->statStg; |
diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c index dfcf4b1878aa..cb36b0d4ef3c 100644 --- a/drivers/tty/serial/imx.c +++ b/drivers/tty/serial/imx.c | |||
@@ -78,7 +78,7 @@ | |||
78 | #define URXD_FRMERR (1<<12) | 78 | #define URXD_FRMERR (1<<12) |
79 | #define URXD_BRK (1<<11) | 79 | #define URXD_BRK (1<<11) |
80 | #define URXD_PRERR (1<<10) | 80 | #define URXD_PRERR (1<<10) |
81 | #define UCR1_ADEN (1<<15) /* Auto dectect interrupt */ | 81 | #define UCR1_ADEN (1<<15) /* Auto detect interrupt */ |
82 | #define UCR1_ADBR (1<<14) /* Auto detect baud rate */ | 82 | #define UCR1_ADBR (1<<14) /* Auto detect baud rate */ |
83 | #define UCR1_TRDYEN (1<<13) /* Transmitter ready interrupt enable */ | 83 | #define UCR1_TRDYEN (1<<13) /* Transmitter ready interrupt enable */ |
84 | #define UCR1_IDEN (1<<12) /* Idle condition interrupt */ | 84 | #define UCR1_IDEN (1<<12) /* Idle condition interrupt */ |
diff --git a/drivers/tty/serial/ip22zilog.c b/drivers/tty/serial/ip22zilog.c index ebff4a1d4bcc..7b1cda59ebb5 100644 --- a/drivers/tty/serial/ip22zilog.c +++ b/drivers/tty/serial/ip22zilog.c | |||
@@ -375,7 +375,7 @@ static void ip22zilog_transmit_chars(struct uart_ip22zilog_port *up, | |||
375 | * be nice to transmit console writes just like we normally would for | 375 | * be nice to transmit console writes just like we normally would for |
376 | * a TTY line. (ie. buffered and TX interrupt driven). That is not | 376 | * a TTY line. (ie. buffered and TX interrupt driven). That is not |
377 | * easy because console writes cannot sleep. One solution might be | 377 | * easy because console writes cannot sleep. One solution might be |
378 | * to poll on enough port->xmit space becomming free. -DaveM | 378 | * to poll on enough port->xmit space becoming free. -DaveM |
379 | */ | 379 | */ |
380 | if (!(status & Tx_BUF_EMP)) | 380 | if (!(status & Tx_BUF_EMP)) |
381 | return; | 381 | return; |
diff --git a/drivers/tty/serial/jsm/jsm.h b/drivers/tty/serial/jsm/jsm.h index 38a509c684cd..b704c8ce0d71 100644 --- a/drivers/tty/serial/jsm/jsm.h +++ b/drivers/tty/serial/jsm/jsm.h | |||
@@ -273,7 +273,7 @@ struct neo_uart_struct { | |||
273 | u8 fctr; /* WR FCTR - Feature Control Reg */ | 273 | u8 fctr; /* WR FCTR - Feature Control Reg */ |
274 | u8 efr; /* WR EFR - Enhanced Function Reg */ | 274 | u8 efr; /* WR EFR - Enhanced Function Reg */ |
275 | u8 tfifo; /* WR TXCNT/TXTRG - Transmit FIFO Reg */ | 275 | u8 tfifo; /* WR TXCNT/TXTRG - Transmit FIFO Reg */ |
276 | u8 rfifo; /* WR RXCNT/RXTRG - Recieve FIFO Reg */ | 276 | u8 rfifo; /* WR RXCNT/RXTRG - Receive FIFO Reg */ |
277 | u8 xoffchar1; /* WR XOFF 1 - XOff Character 1 Reg */ | 277 | u8 xoffchar1; /* WR XOFF 1 - XOff Character 1 Reg */ |
278 | u8 xoffchar2; /* WR XOFF 2 - XOff Character 2 Reg */ | 278 | u8 xoffchar2; /* WR XOFF 2 - XOff Character 2 Reg */ |
279 | u8 xonchar1; /* WR XON 1 - Xon Character 1 Reg */ | 279 | u8 xonchar1; /* WR XON 1 - Xon Character 1 Reg */ |
diff --git a/drivers/tty/serial/jsm/jsm_neo.c b/drivers/tty/serial/jsm/jsm_neo.c index 7960d9633c15..4538c3e3646e 100644 --- a/drivers/tty/serial/jsm/jsm_neo.c +++ b/drivers/tty/serial/jsm/jsm_neo.c | |||
@@ -381,7 +381,7 @@ static void neo_copy_data_from_uart_to_queue(struct jsm_channel *ch) | |||
381 | /* Copy data from uart to the queue */ | 381 | /* Copy data from uart to the queue */ |
382 | memcpy_fromio(ch->ch_rqueue + head, &ch->ch_neo_uart->txrxburst, n); | 382 | memcpy_fromio(ch->ch_rqueue + head, &ch->ch_neo_uart->txrxburst, n); |
383 | /* | 383 | /* |
384 | * Since RX_FIFO_DATA_ERROR was 0, we are guarenteed | 384 | * Since RX_FIFO_DATA_ERROR was 0, we are guaranteed |
385 | * that all the data currently in the FIFO is free of | 385 | * that all the data currently in the FIFO is free of |
386 | * breaks and parity/frame/orun errors. | 386 | * breaks and parity/frame/orun errors. |
387 | */ | 387 | */ |
@@ -1210,7 +1210,7 @@ static irqreturn_t neo_intr(int irq, void *voidbrd) | |||
1210 | * Why would I check EVERY possibility of type of | 1210 | * Why would I check EVERY possibility of type of |
1211 | * interrupt, when we know its TXRDY??? | 1211 | * interrupt, when we know its TXRDY??? |
1212 | * Becuz for some reason, even tho we got triggered for TXRDY, | 1212 | * Becuz for some reason, even tho we got triggered for TXRDY, |
1213 | * it seems to be occassionally wrong. Instead of TX, which | 1213 | * it seems to be occasionally wrong. Instead of TX, which |
1214 | * it should be, I was getting things like RXDY too. Weird. | 1214 | * it should be, I was getting things like RXDY too. Weird. |
1215 | */ | 1215 | */ |
1216 | neo_parse_isr(brd, port); | 1216 | neo_parse_isr(brd, port); |
diff --git a/drivers/tty/serial/max3107.h b/drivers/tty/serial/max3107.h index 7ab632392502..8415fc723b96 100644 --- a/drivers/tty/serial/max3107.h +++ b/drivers/tty/serial/max3107.h | |||
@@ -369,7 +369,7 @@ struct max3107_port { | |||
369 | struct spi_device *spi; | 369 | struct spi_device *spi; |
370 | 370 | ||
371 | #if defined(CONFIG_GPIOLIB) | 371 | #if defined(CONFIG_GPIOLIB) |
372 | /* GPIO chip stucture */ | 372 | /* GPIO chip structure */ |
373 | struct gpio_chip chip; | 373 | struct gpio_chip chip; |
374 | #endif | 374 | #endif |
375 | 375 | ||
diff --git a/drivers/tty/serial/mrst_max3110.c b/drivers/tty/serial/mrst_max3110.c index 37e13c3d91d9..2f548af4e98a 100644 --- a/drivers/tty/serial/mrst_max3110.c +++ b/drivers/tty/serial/mrst_max3110.c | |||
@@ -23,7 +23,7 @@ | |||
23 | * 1 word. If SPI master controller doesn't support sclk frequency change, | 23 | * 1 word. If SPI master controller doesn't support sclk frequency change, |
24 | * then the char need be sent out one by one with some delay | 24 | * then the char need be sent out one by one with some delay |
25 | * | 25 | * |
26 | * 2. Currently only RX availabe interrrupt is used, no need for waiting TXE | 26 | * 2. Currently only RX available interrrupt is used, no need for waiting TXE |
27 | * interrupt for a low speed UART device | 27 | * interrupt for a low speed UART device |
28 | */ | 28 | */ |
29 | 29 | ||
diff --git a/drivers/tty/serial/mrst_max3110.h b/drivers/tty/serial/mrst_max3110.h index d1ef43af397c..c37ea48c825a 100644 --- a/drivers/tty/serial/mrst_max3110.h +++ b/drivers/tty/serial/mrst_max3110.h | |||
@@ -21,7 +21,7 @@ | |||
21 | 21 | ||
22 | #define WC_IRQ_MASK (0xF << 8) | 22 | #define WC_IRQ_MASK (0xF << 8) |
23 | #define WC_TXE_IRQ_ENABLE (1 << 11) /* TX empty irq */ | 23 | #define WC_TXE_IRQ_ENABLE (1 << 11) /* TX empty irq */ |
24 | #define WC_RXA_IRQ_ENABLE (1 << 10) /* RX availabe irq */ | 24 | #define WC_RXA_IRQ_ENABLE (1 << 10) /* RX available irq */ |
25 | #define WC_PAR_HIGH_IRQ_ENABLE (1 << 9) | 25 | #define WC_PAR_HIGH_IRQ_ENABLE (1 << 9) |
26 | #define WC_REC_ACT_IRQ_ENABLE (1 << 8) | 26 | #define WC_REC_ACT_IRQ_ENABLE (1 << 8) |
27 | 27 | ||
diff --git a/drivers/tty/serial/msm_serial_hs.c b/drivers/tty/serial/msm_serial_hs.c index b906f11f7c1a..624701f8138a 100644 --- a/drivers/tty/serial/msm_serial_hs.c +++ b/drivers/tty/serial/msm_serial_hs.c | |||
@@ -495,7 +495,7 @@ static void msm_hs_pm(struct uart_port *uport, unsigned int state, | |||
495 | * | 495 | * |
496 | * Interrupts should be disabled before we are called, as | 496 | * Interrupts should be disabled before we are called, as |
497 | * we modify Set Baud rate | 497 | * we modify Set Baud rate |
498 | * Set receive stale interrupt level, dependant on Bit Rate | 498 | * Set receive stale interrupt level, dependent on Bit Rate |
499 | * Goal is to have around 8 ms before indicate stale. | 499 | * Goal is to have around 8 ms before indicate stale. |
500 | * roundup (((Bit Rate * .008) / 10) + 1 | 500 | * roundup (((Bit Rate * .008) / 10) + 1 |
501 | */ | 501 | */ |
@@ -1350,7 +1350,7 @@ static irqreturn_t msm_hs_rx_wakeup_isr(int irq, void *dev) | |||
1350 | 1350 | ||
1351 | spin_lock_irqsave(&uport->lock, flags); | 1351 | spin_lock_irqsave(&uport->lock, flags); |
1352 | if (msm_uport->clk_state == MSM_HS_CLK_OFF) { | 1352 | if (msm_uport->clk_state == MSM_HS_CLK_OFF) { |
1353 | /* ignore the first irq - it is a pending irq that occured | 1353 | /* ignore the first irq - it is a pending irq that occurred |
1354 | * before enable_irq() */ | 1354 | * before enable_irq() */ |
1355 | if (msm_uport->rx_wakeup.ignore) | 1355 | if (msm_uport->rx_wakeup.ignore) |
1356 | msm_uport->rx_wakeup.ignore = 0; | 1356 | msm_uport->rx_wakeup.ignore = 0; |
diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c index 763537943a53..47cadf474149 100644 --- a/drivers/tty/serial/omap-serial.c +++ b/drivers/tty/serial/omap-serial.c | |||
@@ -13,7 +13,7 @@ | |||
13 | * the Free Software Foundation; either version 2 of the License, or | 13 | * the Free Software Foundation; either version 2 of the License, or |
14 | * (at your option) any later version. | 14 | * (at your option) any later version. |
15 | * | 15 | * |
16 | * Note: This driver is made seperate from 8250 driver as we cannot | 16 | * Note: This driver is made separate from 8250 driver as we cannot |
17 | * over load 8250 driver with omap platform specific configuration for | 17 | * over load 8250 driver with omap platform specific configuration for |
18 | * features like DMA, it makes easier to implement features like DMA and | 18 | * features like DMA, it makes easier to implement features like DMA and |
19 | * hardware flow control and software flow control configuration with | 19 | * hardware flow control and software flow control configuration with |
diff --git a/drivers/tty/serial/pmac_zilog.c b/drivers/tty/serial/pmac_zilog.c index 5b9cde79e4ea..e1c8d4f1ce58 100644 --- a/drivers/tty/serial/pmac_zilog.c +++ b/drivers/tty/serial/pmac_zilog.c | |||
@@ -330,7 +330,7 @@ static struct tty_struct *pmz_receive_chars(struct uart_pmac_port *uap) | |||
330 | * When that happens, I disable the receive side of the driver. | 330 | * When that happens, I disable the receive side of the driver. |
331 | * Note that what I've been experiencing is a real irq loop where | 331 | * Note that what I've been experiencing is a real irq loop where |
332 | * I'm getting flooded regardless of the actual port speed. | 332 | * I'm getting flooded regardless of the actual port speed. |
333 | * Something stange is going on with the HW | 333 | * Something strange is going on with the HW |
334 | */ | 334 | */ |
335 | if ((++loops) > 1000) | 335 | if ((++loops) > 1000) |
336 | goto flood; | 336 | goto flood; |
@@ -396,7 +396,7 @@ static void pmz_transmit_chars(struct uart_pmac_port *uap) | |||
396 | * be nice to transmit console writes just like we normally would for | 396 | * be nice to transmit console writes just like we normally would for |
397 | * a TTY line. (ie. buffered and TX interrupt driven). That is not | 397 | * a TTY line. (ie. buffered and TX interrupt driven). That is not |
398 | * easy because console writes cannot sleep. One solution might be | 398 | * easy because console writes cannot sleep. One solution might be |
399 | * to poll on enough port->xmit space becomming free. -DaveM | 399 | * to poll on enough port->xmit space becoming free. -DaveM |
400 | */ | 400 | */ |
401 | if (!(status & Tx_BUF_EMP)) | 401 | if (!(status & Tx_BUF_EMP)) |
402 | return; | 402 | return; |
@@ -809,7 +809,7 @@ static int pmz_set_scc_power(struct uart_pmac_port *uap, int state) | |||
809 | #endif /* !CONFIG_PPC_PMAC */ | 809 | #endif /* !CONFIG_PPC_PMAC */ |
810 | 810 | ||
811 | /* | 811 | /* |
812 | * FixZeroBug....Works around a bug in the SCC receving channel. | 812 | * FixZeroBug....Works around a bug in the SCC receiving channel. |
813 | * Inspired from Darwin code, 15 Sept. 2000 -DanM | 813 | * Inspired from Darwin code, 15 Sept. 2000 -DanM |
814 | * | 814 | * |
815 | * The following sequence prevents a problem that is seen with O'Hare ASICs | 815 | * The following sequence prevents a problem that is seen with O'Hare ASICs |
diff --git a/drivers/tty/serial/samsung.c b/drivers/tty/serial/samsung.c index 2335edafe903..9e2fa8d784e2 100644 --- a/drivers/tty/serial/samsung.c +++ b/drivers/tty/serial/samsung.c | |||
@@ -64,7 +64,7 @@ | |||
64 | #define tx_enabled(port) ((port)->unused[0]) | 64 | #define tx_enabled(port) ((port)->unused[0]) |
65 | #define rx_enabled(port) ((port)->unused[1]) | 65 | #define rx_enabled(port) ((port)->unused[1]) |
66 | 66 | ||
67 | /* flag to ignore all characters comming in */ | 67 | /* flag to ignore all characters coming in */ |
68 | #define RXSTAT_DUMMY_READ (0x10000000) | 68 | #define RXSTAT_DUMMY_READ (0x10000000) |
69 | 69 | ||
70 | static inline struct s3c24xx_uart_port *to_ourport(struct uart_port *port) | 70 | static inline struct s3c24xx_uart_port *to_ourport(struct uart_port *port) |
@@ -291,7 +291,7 @@ static irqreturn_t s3c24xx_serial_tx_chars(int irq, void *id) | |||
291 | goto out; | 291 | goto out; |
292 | } | 292 | } |
293 | 293 | ||
294 | /* if there isnt anything more to transmit, or the uart is now | 294 | /* if there isn't anything more to transmit, or the uart is now |
295 | * stopped, disable the uart and exit | 295 | * stopped, disable the uart and exit |
296 | */ | 296 | */ |
297 | 297 | ||
diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c index eb7958c675a8..920a6f929c8b 100644 --- a/drivers/tty/serial/sh-sci.c +++ b/drivers/tty/serial/sh-sci.c | |||
@@ -812,7 +812,7 @@ static irqreturn_t sci_mpxed_interrupt(int irq, void *ptr) | |||
812 | } | 812 | } |
813 | 813 | ||
814 | /* | 814 | /* |
815 | * Here we define a transistion notifier so that we can update all of our | 815 | * Here we define a transition notifier so that we can update all of our |
816 | * ports' baud rate when the peripheral clock changes. | 816 | * ports' baud rate when the peripheral clock changes. |
817 | */ | 817 | */ |
818 | static int sci_notifier(struct notifier_block *self, | 818 | static int sci_notifier(struct notifier_block *self, |
@@ -1836,6 +1836,12 @@ static int __devinit serial_console_setup(struct console *co, char *options) | |||
1836 | sci_port = &sci_ports[co->index]; | 1836 | sci_port = &sci_ports[co->index]; |
1837 | port = &sci_port->port; | 1837 | port = &sci_port->port; |
1838 | 1838 | ||
1839 | /* | ||
1840 | * Refuse to handle uninitialized ports. | ||
1841 | */ | ||
1842 | if (!port->ops) | ||
1843 | return -ENODEV; | ||
1844 | |||
1839 | ret = sci_remap_port(port); | 1845 | ret = sci_remap_port(port); |
1840 | if (unlikely(ret != 0)) | 1846 | if (unlikely(ret != 0)) |
1841 | return ret; | 1847 | return ret; |
@@ -1866,13 +1872,6 @@ static struct console serial_console = { | |||
1866 | .data = &sci_uart_driver, | 1872 | .data = &sci_uart_driver, |
1867 | }; | 1873 | }; |
1868 | 1874 | ||
1869 | static int __init sci_console_init(void) | ||
1870 | { | ||
1871 | register_console(&serial_console); | ||
1872 | return 0; | ||
1873 | } | ||
1874 | console_initcall(sci_console_init); | ||
1875 | |||
1876 | static struct console early_serial_console = { | 1875 | static struct console early_serial_console = { |
1877 | .name = "early_ttySC", | 1876 | .name = "early_ttySC", |
1878 | .write = serial_console_write, | 1877 | .write = serial_console_write, |
@@ -1901,18 +1900,18 @@ static int __devinit sci_probe_earlyprintk(struct platform_device *pdev) | |||
1901 | register_console(&early_serial_console); | 1900 | register_console(&early_serial_console); |
1902 | return 0; | 1901 | return 0; |
1903 | } | 1902 | } |
1903 | |||
1904 | #define SCI_CONSOLE (&serial_console) | ||
1905 | |||
1904 | #else | 1906 | #else |
1905 | static inline int __devinit sci_probe_earlyprintk(struct platform_device *pdev) | 1907 | static inline int __devinit sci_probe_earlyprintk(struct platform_device *pdev) |
1906 | { | 1908 | { |
1907 | return -EINVAL; | 1909 | return -EINVAL; |
1908 | } | 1910 | } |
1909 | #endif /* CONFIG_SERIAL_SH_SCI_CONSOLE */ | ||
1910 | 1911 | ||
1911 | #if defined(CONFIG_SERIAL_SH_SCI_CONSOLE) | 1912 | #define SCI_CONSOLE NULL |
1912 | #define SCI_CONSOLE (&serial_console) | 1913 | |
1913 | #else | 1914 | #endif /* CONFIG_SERIAL_SH_SCI_CONSOLE */ |
1914 | #define SCI_CONSOLE 0 | ||
1915 | #endif | ||
1916 | 1915 | ||
1917 | static char banner[] __initdata = | 1916 | static char banner[] __initdata = |
1918 | KERN_INFO "SuperH SCI(F) driver initialized\n"; | 1917 | KERN_INFO "SuperH SCI(F) driver initialized\n"; |
diff --git a/drivers/tty/serial/sn_console.c b/drivers/tty/serial/sn_console.c index cff9a306660f..377ae74e7154 100644 --- a/drivers/tty/serial/sn_console.c +++ b/drivers/tty/serial/sn_console.c | |||
@@ -146,7 +146,7 @@ static struct sn_sal_ops intr_ops = { | |||
146 | }; | 146 | }; |
147 | 147 | ||
148 | /* the console does output in two distinctly different ways: | 148 | /* the console does output in two distinctly different ways: |
149 | * synchronous (raw) and asynchronous (buffered). initally, early_printk | 149 | * synchronous (raw) and asynchronous (buffered). initially, early_printk |
150 | * does synchronous output. any data written goes directly to the SAL | 150 | * does synchronous output. any data written goes directly to the SAL |
151 | * to be output (incidentally, it is internally buffered by the SAL) | 151 | * to be output (incidentally, it is internally buffered by the SAL) |
152 | * after interrupts and timers are initialized and available for use, | 152 | * after interrupts and timers are initialized and available for use, |
@@ -481,7 +481,7 @@ sn_receive_chars(struct sn_cons_port *port, unsigned long flags) | |||
481 | while (port->sc_ops->sal_input_pending()) { | 481 | while (port->sc_ops->sal_input_pending()) { |
482 | ch = port->sc_ops->sal_getc(); | 482 | ch = port->sc_ops->sal_getc(); |
483 | if (ch < 0) { | 483 | if (ch < 0) { |
484 | printk(KERN_ERR "sn_console: An error occured while " | 484 | printk(KERN_ERR "sn_console: An error occurred while " |
485 | "obtaining data from the console (0x%0x)\n", ch); | 485 | "obtaining data from the console (0x%0x)\n", ch); |
486 | break; | 486 | break; |
487 | } | 487 | } |
diff --git a/drivers/tty/serial/sunzilog.c b/drivers/tty/serial/sunzilog.c index 99ff9abf57ce..8e916e76b7b5 100644 --- a/drivers/tty/serial/sunzilog.c +++ b/drivers/tty/serial/sunzilog.c | |||
@@ -474,7 +474,7 @@ static void sunzilog_transmit_chars(struct uart_sunzilog_port *up, | |||
474 | * be nice to transmit console writes just like we normally would for | 474 | * be nice to transmit console writes just like we normally would for |
475 | * a TTY line. (ie. buffered and TX interrupt driven). That is not | 475 | * a TTY line. (ie. buffered and TX interrupt driven). That is not |
476 | * easy because console writes cannot sleep. One solution might be | 476 | * easy because console writes cannot sleep. One solution might be |
477 | * to poll on enough port->xmit space becomming free. -DaveM | 477 | * to poll on enough port->xmit space becoming free. -DaveM |
478 | */ | 478 | */ |
479 | if (!(status & Tx_BUF_EMP)) | 479 | if (!(status & Tx_BUF_EMP)) |
480 | return; | 480 | return; |