]> git.ipfire.org Git - people/ms/u-boot.git/commitdiff
serial: zynq: Change logic in putc
authorMichal Simek <michal.simek@xilinx.com>
Wed, 3 Feb 2016 14:16:51 +0000 (15:16 +0100)
committerMichal Simek <michal.simek@xilinx.com>
Mon, 22 Feb 2016 15:21:04 +0000 (16:21 +0100)
Sync logic with Linux kernel where TX empty flag is checked before char
is sent.
This logic is fixing problem with console on zynqmp platform.

For example:
DRAM:  2 GiB
Enabling Caches...
EL Level: ��   sdhci@ff170000: 0
Using default environment

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Moritz Fischer <moritz.fischer@ettus.com>
drivers/serial/serial_zynq.c

index e79d997cbab722580f2c8c2876a7f518577a1f41..66d54e32ab3884df382ba452889d686236dc1fdf 100644 (file)
@@ -19,7 +19,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-#define ZYNQ_UART_SR_TXFULL    0x00000010 /* TX FIFO full */
+#define ZYNQ_UART_SR_TXEMPTY   (1 << 3) /* TX FIFO empty */
 #define ZYNQ_UART_SR_TXACTIVE  (1 << 11)  /* TX active */
 #define ZYNQ_UART_SR_RXEMPTY   0x00000002 /* RX FIFO empty */
 
@@ -97,7 +97,7 @@ static void _uart_zynq_serial_init(struct uart_zynq *regs)
 
 static int _uart_zynq_serial_putc(struct uart_zynq *regs, const char c)
 {
-       if (readl(&regs->channel_sts) & ZYNQ_UART_SR_TXFULL)
+       if (!(readl(&regs->channel_sts) & ZYNQ_UART_SR_TXEMPTY))
                return -EAGAIN;
 
        writel(c, &regs->tx_rx_fifo);