1
0
Fork 0

MLK-17739 tty: serial: imx: clear wakeup flag before enable wakeup interrupt

It is better to clear wakeup flag in status register before enable
wakeup interrupt bits, which can avoid system suspend fail during
devices no irq suspend stage.

Reviewed-by: Gao Pan <pandy.gao@nxp.com>
Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
pull/10/head
Fugang Duan 2018-03-06 17:41:14 +08:00 committed by Jason Liu
parent 60f25b3b5d
commit b518b9793f
1 changed files with 4 additions and 4 deletions

View File

@ -2361,6 +2361,10 @@ static void serial_imx_enable_wakeup(struct imx_port *sport, bool on)
{
unsigned int val;
val = readl(sport->port.membase + USR1);
if (val & (USR1_AWAKE | USR1_RTSD))
writel(USR1_AWAKE | USR1_RTSD, sport->port.membase + USR1);
val = readl(sport->port.membase + UCR3);
if (on)
val |= UCR3_AWAKEN;
@ -2404,7 +2408,6 @@ static int imx_serial_port_resume_noirq(struct device *dev)
{
struct platform_device *pdev = to_platform_device(dev);
struct imx_port *sport = platform_get_drvdata(pdev);
unsigned int val;
int ret;
pinctrl_pm_select_default_state(dev);
@ -2417,9 +2420,6 @@ static int imx_serial_port_resume_noirq(struct device *dev)
/* disable wakeup from i.MX UART */
serial_imx_enable_wakeup(sport, false);
val = readl(sport->port.membase + USR1);
if (val & (USR1_AWAKE | USR1_RTSD))
writel(USR1_AWAKE | USR1_RTSD, sport->port.membase + USR1);
clk_disable(sport->clk_ipg);