diff options
author | Fugang Duan <b38611@freescale.com> | 2015-08-17 18:44:54 +0800 |
---|---|---|
committer | Nitin Garg <nitin.garg@nxp.com> | 2016-01-14 10:59:42 -0600 |
commit | d97da568f6d739e7b2d771cc3c27c4f03f7cecb7 (patch) | |
tree | 2b0c80c2ea5bfb6c889b3002bae7d717dc24731b /drivers/tty/serial/imx.c | |
parent | 89acf0691e24ac49485bf287816cae7d6f40f38f (diff) |
MLK-10225-1 tty: serial: imx: don't restore UBRC register
For i.MX7D, write the read-only register UBRC that causes unhandled fault.
Log:
Unhandled fault: imprecise external abort (0x1c06) at 0x76efd0ac
Bus error
For read-only registers, we don't need to restore it.
Signed-off-by: Fugang Duan <B38611@freescale.com>
(cherry picked from commit: 798f196501233449ce77fc35b26e76dcc6d9a730)
Diffstat (limited to 'drivers/tty/serial/imx.c')
-rw-r--r-- | drivers/tty/serial/imx.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c index 18274305a145..08f767954bd1 100644 --- a/drivers/tty/serial/imx.c +++ b/drivers/tty/serial/imx.c @@ -236,7 +236,7 @@ struct imx_port { unsigned int tx_bytes; unsigned int dma_tx_nents; wait_queue_head_t dma_wait; - unsigned int saved_reg[11]; + unsigned int saved_reg[10]; }; struct imx_port_ucrs { @@ -1857,8 +1857,7 @@ static int serial_imx_suspend(struct platform_device *dev, pm_message_t state) sport->saved_reg[6] = readl(sport->port.membase + UTIM); sport->saved_reg[7] = readl(sport->port.membase + UBIR); sport->saved_reg[8] = readl(sport->port.membase + UBMR); - sport->saved_reg[9] = readl(sport->port.membase + UBRC); - sport->saved_reg[10] = readl(sport->port.membase + IMX21_UTS); + sport->saved_reg[9] = readl(sport->port.membase + IMX21_UTS); return 0; } @@ -1873,8 +1872,7 @@ static int serial_imx_resume(struct platform_device *dev) writel(sport->saved_reg[6], sport->port.membase + UTIM); writel(sport->saved_reg[7], sport->port.membase + UBIR); writel(sport->saved_reg[8], sport->port.membase + UBMR); - writel(sport->saved_reg[9], sport->port.membase + UBRC); - writel(sport->saved_reg[10], sport->port.membase + IMX21_UTS); + writel(sport->saved_reg[9], sport->port.membase + IMX21_UTS); writel(sport->saved_reg[0], sport->port.membase + UCR1); writel(sport->saved_reg[1] | 0x1, sport->port.membase + UCR2); writel(sport->saved_reg[2], sport->port.membase + UCR3); |