diff options
author | Fabio Estevam <fabio.estevam@freescale.com> | 2015-07-27 15:15:59 -0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-07-27 11:26:56 -0700 |
commit | 458e2c82c5fbfbc431598636c05bdb21feb7056f (patch) | |
tree | 2c62f8b60480965e99abd41c75fe9fe3dda96c9c /drivers/tty | |
parent | 92311e46ecf2298d87f175c8449ab4d8c400a38e (diff) | |
download | linux-458e2c82c5fbfbc431598636c05bdb21feb7056f.tar.bz2 |
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 <bot@kernelci.org>
Cc: David Jander <david@protonic.nl>
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/tty')
-rw-r--r-- | drivers/tty/serial/imx.c | 32 |
1 files changed, 9 insertions, 23 deletions
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 @@ -1981,14 +1975,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. */ |