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
parent
60f25b3b5d
commit
b518b9793f
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue