When uart port (non-console port) in dma mode and use uart as remote wakeup
source, after resume back, the AWAKE bit is not cleared most of interrupts
are disabled. And then let system suspend state, system resume back immediately
without any wake up action. So we need to clear the AWAKE bit after resume
back in DMA mode.
Merge comments: it is necessary to clear AWAKE or RTSD bit.
Signed-off-by: Fugang Duan <B38611@freescale.com>
(merge patch from commit:
d4b6b6b20eb2c5cca47292f89ab588b15d3be0a9)
{
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);
/* 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);