浏览代码

serial: zynq: Change logic in putc

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>
Michal Simek 9 年之前
父节点
当前提交
6cd0f2a6cd
共有 1 个文件被更改,包括 2 次插入2 次删除
  1. 2 2
      drivers/serial/serial_zynq.c

+ 2 - 2
drivers/serial/serial_zynq.c

@@ -19,7 +19,7 @@
 
 
 DECLARE_GLOBAL_DATA_PTR;
 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_TXACTIVE	(1 << 11)  /* TX active */
 #define ZYNQ_UART_SR_RXEMPTY	0x00000002 /* RX FIFO empty */
 #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)
 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;
 		return -EAGAIN;
 
 
 	writel(c, &regs->tx_rx_fifo);
 	writel(c, &regs->tx_rx_fifo);