From 0d3c3938ff9855d8996db4083efd62e86b8987eb Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Thu, 17 Apr 2008 08:43:14 +0100 Subject: [PATCH] [ARM] 4995/1: : Do not use URXD_CHARRDY for polling Do not use the URXD_CHARRDY bit for polling for new characters. This works on i.MX1, but on MX31 the datasheet states that this bit should not be used for polling. On MX27 it is even worse, here we get a bus error when we access the read FIFO when no character is present. Instead, use USR2_RDR (receive data ready) bit. Signed-off-by: Sascha Hauer Signed-off-by: Russell King --- drivers/serial/imx.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/serial/imx.c b/drivers/serial/imx.c index c637ae219126..f7596641f121 100644 --- a/drivers/serial/imx.c +++ b/drivers/serial/imx.c @@ -356,10 +356,12 @@ static irqreturn_t imx_rxint(int irq, void *dev_id) spin_lock_irqsave(&sport->port.lock,flags); - while ((rx = readl(sport->port.membase + URXD0)) & URXD_CHARRDY) { + while (readl(sport->port.membase + USR2) & USR2_RDR) { flg = TTY_NORMAL; sport->port.icount.rx++; + rx = readl(sport->port.membase + URXD0); + temp = readl(sport->port.membase + USR2); if (temp & USR2_BRCD) { writel(temp | USR2_BRCD, sport->port.membase + USR2); -- 2.20.1