From: Fabio Estevam Date: Mon, 27 Jul 2015 18:15:59 +0000 (-0300) Subject: Revert "tty: serial: imx.c: Reset UART before activating interrupts" X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=458e2c82c5fbfbc431598636c05bdb21feb7056f;p=GitHub%2FLineageOS%2Fandroid_kernel_motorola_exynos9610.git Revert "tty: serial: imx.c: Reset UART before activating interrupts" This reverts commit e95044ba4fee93f5ea8a1a24b2d921e148503833. Commit e95044ba4fee93 ("tty: serial: imx.c: Reset UART before activating interrupts") terribly messes up with the console on mx6 boards, so let's revert it. Reported-by: kernelci.org bot Cc: David Jander Signed-off-by: Fabio Estevam Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c index e705149ba477..cf594ce7c54c 100644 --- a/drivers/tty/serial/imx.c +++ b/drivers/tty/serial/imx.c @@ -1098,23 +1098,10 @@ static void imx_disable_dma(struct imx_port *sport) /* half the RX buffer size */ #define CTSTL 16 -static inline void imx_reset(struct imx_port *sport) -{ - int i = 100; - unsigned long temp; - - temp = readl(sport->port.membase + UCR2); - temp &= ~UCR2_SRST; - writel(temp, sport->port.membase + UCR2); - - while (!(readl(sport->port.membase + UCR2) & UCR2_SRST) && (--i > 0)) - udelay(1); -} - static int imx_startup(struct uart_port *port) { struct imx_port *sport = (struct imx_port *)port; - int retval; + int retval, i; unsigned long flags, temp; retval = clk_prepare_enable(sport->clk_per); @@ -1141,7 +1128,14 @@ static int imx_startup(struct uart_port *port) spin_lock_irqsave(&sport->port.lock, flags); /* Reset fifo's and state machines */ - imx_reset(sport); + i = 100; + + temp = readl(sport->port.membase + UCR2); + temp &= ~UCR2_SRST; + writel(temp, sport->port.membase + UCR2); + + while (!(readl(sport->port.membase + UCR2) & UCR2_SRST) && (--i > 0)) + udelay(1); /* * Finally, clear and enable interrupts @@ -1980,14 +1974,6 @@ static int serial_imx_probe(struct platform_device *pdev) clk_disable_unprepare(sport->clk_ipg); - /* - * Perform a complete reset of the UART device. Needed if we don't - * come straight out of reset. - */ - writel(0, sport->port.membase + UCR2); - writel(0, sport->port.membase + UCR1); - imx_reset(sport); - /* * Allocate the IRQ(s) i.MX1 has three interrupts whereas later * chips only have one interrupt.