diff options
Diffstat (limited to 'drivers/serial')
-rw-r--r-- | drivers/serial/Kconfig | 3 | ||||
-rw-r--r-- | drivers/serial/atmel_serial.c | 3 | ||||
-rw-r--r-- | drivers/serial/imx.c | 14 |
3 files changed, 11 insertions, 9 deletions
diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index 2978c09860ee..09f8bff1fbd1 100644 --- a/drivers/serial/Kconfig +++ b/drivers/serial/Kconfig | |||
@@ -262,7 +262,8 @@ config SERIAL_AMBA_PL010 | |||
262 | select SERIAL_CORE | 262 | select SERIAL_CORE |
263 | help | 263 | help |
264 | This selects the ARM(R) AMBA(R) PrimeCell PL010 UART. If you have | 264 | This selects the ARM(R) AMBA(R) PrimeCell PL010 UART. If you have |
265 | an Integrator/AP or Integrator/PP2 platform, say Y or M here. | 265 | an Integrator/AP or Integrator/PP2 platform, or if you have a |
266 | Cirrus Logic EP93xx CPU, say Y or M here. | ||
266 | 267 | ||
267 | If unsure, say N. | 268 | If unsure, say N. |
268 | 269 | ||
diff --git a/drivers/serial/atmel_serial.c b/drivers/serial/atmel_serial.c index 881f886b91c6..071564790993 100644 --- a/drivers/serial/atmel_serial.c +++ b/drivers/serial/atmel_serial.c | |||
@@ -33,12 +33,13 @@ | |||
33 | #include <linux/sysrq.h> | 33 | #include <linux/sysrq.h> |
34 | #include <linux/tty_flip.h> | 34 | #include <linux/tty_flip.h> |
35 | #include <linux/platform_device.h> | 35 | #include <linux/platform_device.h> |
36 | #include <linux/atmel_pdc.h> | ||
36 | 37 | ||
37 | #include <asm/io.h> | 38 | #include <asm/io.h> |
38 | 39 | ||
39 | #include <asm/mach/serial_at91.h> | 40 | #include <asm/mach/serial_at91.h> |
40 | #include <asm/arch/board.h> | 41 | #include <asm/arch/board.h> |
41 | #include <asm/arch/at91_pdc.h> | 42 | |
42 | #ifdef CONFIG_ARM | 43 | #ifdef CONFIG_ARM |
43 | #include <asm/arch/cpu.h> | 44 | #include <asm/arch/cpu.h> |
44 | #include <asm/arch/gpio.h> | 45 | #include <asm/arch/gpio.h> |
diff --git a/drivers/serial/imx.c b/drivers/serial/imx.c index e216dcf29376..04cc88cc528c 100644 --- a/drivers/serial/imx.c +++ b/drivers/serial/imx.c | |||
@@ -154,7 +154,7 @@ static inline void imx_transmit_buffer(struct imx_port *sport) | |||
154 | { | 154 | { |
155 | struct circ_buf *xmit = &sport->port.info->xmit; | 155 | struct circ_buf *xmit = &sport->port.info->xmit; |
156 | 156 | ||
157 | do { | 157 | while (!(UTS((u32)sport->port.membase) & UTS_TXFULL)) { |
158 | /* send xmit->buf[xmit->tail] | 158 | /* send xmit->buf[xmit->tail] |
159 | * out the port here */ | 159 | * out the port here */ |
160 | URTX0((u32)sport->port.membase) = xmit->buf[xmit->tail]; | 160 | URTX0((u32)sport->port.membase) = xmit->buf[xmit->tail]; |
@@ -163,7 +163,7 @@ static inline void imx_transmit_buffer(struct imx_port *sport) | |||
163 | sport->port.icount.tx++; | 163 | sport->port.icount.tx++; |
164 | if (uart_circ_empty(xmit)) | 164 | if (uart_circ_empty(xmit)) |
165 | break; | 165 | break; |
166 | } while (!(UTS((u32)sport->port.membase) & UTS_TXFULL)); | 166 | } |
167 | 167 | ||
168 | if (uart_circ_empty(xmit)) | 168 | if (uart_circ_empty(xmit)) |
169 | imx_stop_tx(&sport->port); | 169 | imx_stop_tx(&sport->port); |
@@ -178,8 +178,7 @@ static void imx_start_tx(struct uart_port *port) | |||
178 | 178 | ||
179 | UCR1((u32)sport->port.membase) |= UCR1_TXMPTYEN; | 179 | UCR1((u32)sport->port.membase) |= UCR1_TXMPTYEN; |
180 | 180 | ||
181 | if(UTS((u32)sport->port.membase) & UTS_TXEMPTY) | 181 | imx_transmit_buffer(sport); |
182 | imx_transmit_buffer(sport); | ||
183 | } | 182 | } |
184 | 183 | ||
185 | static irqreturn_t imx_rtsint(int irq, void *dev_id) | 184 | static irqreturn_t imx_rtsint(int irq, void *dev_id) |
@@ -404,7 +403,8 @@ static int imx_startup(struct uart_port *port) | |||
404 | if (retval) goto error_out2; | 403 | if (retval) goto error_out2; |
405 | 404 | ||
406 | retval = request_irq(sport->rtsirq, imx_rtsint, | 405 | retval = request_irq(sport->rtsirq, imx_rtsint, |
407 | IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING, | 406 | (sport->rtsirq < IMX_IRQS) ? 0 : |
407 | IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING, | ||
408 | DRIVER_NAME, sport); | 408 | DRIVER_NAME, sport); |
409 | if (retval) goto error_out3; | 409 | if (retval) goto error_out3; |
410 | 410 | ||
@@ -678,7 +678,7 @@ static struct imx_port imx_ports[] = { | |||
678 | .mapbase = IMX_UART1_BASE, /* FIXME */ | 678 | .mapbase = IMX_UART1_BASE, /* FIXME */ |
679 | .irq = UART1_MINT_RX, | 679 | .irq = UART1_MINT_RX, |
680 | .uartclk = 16000000, | 680 | .uartclk = 16000000, |
681 | .fifosize = 8, | 681 | .fifosize = 32, |
682 | .flags = UPF_BOOT_AUTOCONF, | 682 | .flags = UPF_BOOT_AUTOCONF, |
683 | .ops = &imx_pops, | 683 | .ops = &imx_pops, |
684 | .line = 0, | 684 | .line = 0, |
@@ -694,7 +694,7 @@ static struct imx_port imx_ports[] = { | |||
694 | .mapbase = IMX_UART2_BASE, /* FIXME */ | 694 | .mapbase = IMX_UART2_BASE, /* FIXME */ |
695 | .irq = UART2_MINT_RX, | 695 | .irq = UART2_MINT_RX, |
696 | .uartclk = 16000000, | 696 | .uartclk = 16000000, |
697 | .fifosize = 8, | 697 | .fifosize = 32, |
698 | .flags = UPF_BOOT_AUTOCONF, | 698 | .flags = UPF_BOOT_AUTOCONF, |
699 | .ops = &imx_pops, | 699 | .ops = &imx_pops, |
700 | .line = 1, | 700 | .line = 1, |