From 087633170d51f3b5307c145c3681968bfedbc8e6 Mon Sep 17 00:00:00 2001 From: Huibin Hong Date: Mon, 26 Sep 2016 16:09:10 +0800 Subject: [PATCH] rk_fiq_debugger: Reset and set uart to loopback mode before init The uart may be reinitialized when resume, if uart is in busy state, which would fail to configure the baud rate. So reset and set uart to loopback mode can make sure uart is in idle state. Change-Id: I54d9ac8de1531cd06da8c223583cd2e330178eff Signed-off-by: Huibin Hong --- drivers/soc/rockchip/rk_fiq_debugger.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/soc/rockchip/rk_fiq_debugger.c b/drivers/soc/rockchip/rk_fiq_debugger.c index e6f960894b89..d9d798f0d3c1 100755 --- a/drivers/soc/rockchip/rk_fiq_debugger.c +++ b/drivers/soc/rockchip/rk_fiq_debugger.c @@ -36,6 +36,7 @@ #include <../drivers/staging/android/fiq_debugger/fiq_debugger.h> #include #include +#include #include #ifdef CONFIG_FIQ_DEBUGGER_EL3_TO_EL1 @@ -48,6 +49,7 @@ #define UART_USR_TX_FIFO_EMPTY 0x04 /* Transmit FIFO empty */ #define UART_USR_TX_FIFO_NOT_FULL 0x02 /* Transmit FIFO not full */ #define UART_USR_BUSY 0x01 /* UART busy indicator */ +#define UART_SRR 0x22 /* software reset register */ struct rk_fiq_debugger { int irq; @@ -102,6 +104,11 @@ static int debug_port_init(struct platform_device *pdev) dll = 0xd; break; } + /* reset uart */ + rk_fiq_write(t, 0x07, UART_SRR); + udelay(10); + /* set uart to loop back mode */ + rk_fiq_write(t, 0x10, UART_MCR); rk_fiq_write(t, 0x83, UART_LCR); /* set baud rate */ @@ -118,6 +125,7 @@ static int debug_port_init(struct platform_device *pdev) found unregistered, so it is disable. hhb@rock-chips.com */ rk_fiq_write(t, 0xc1, UART_FCR); + rk_fiq_write(t, 0x0, UART_MCR); return 0; } -- 2.34.1