On Mon, Aug 10, 2015 at 10:35 PM, Eduardo Valentin <edubezval@xxxxxxxxx> wrote: > static int imx_poll_get_char(struct uart_port *port) > { > - if (!(readl_relaxed(port->membase + USR2) & USR2_RDR)) > - return NO_POLL_CHAR; > + int ret; > + > + pm_runtime_get_sync(sport->dev); > + if (!(readl_relaxed(port->membase + USR2) & USR2_RDR)) { > + ret = NO_POLL_CHAR; > + goto mark_last; > + } > > - return readl_relaxed(port->membase + URXD0) & URXD_RX_DATA; > + ret = readl_relaxed(port->membase + URXD0) & URXD_RX_DATA; > + > +mark_last: > + pm_runtime_mark_last_busy(sport->dev); > + pm_runtime_put_autosuspend(sport->dev); You should return ret here. > +static int serial_imx_runtime_resume(struct device *dev) > +{ > + struct imx_port *sport = dev_get_drvdata(dev); > + > + clk_enable(sport->clk_per); clk_enable() may fail. > + clk_enable(sport->clk_ipg); Same here. > @@ -2096,6 +2212,8 @@ static int imx_serial_port_resume(struct device *dev) > struct platform_device *pdev = to_platform_device(dev); > struct imx_port *sport = platform_get_drvdata(pdev); > > + clk_prepare_enable(sport->clk_per); clk_prepare_enable() may fail. > + clk_prepare_enable(sport->clk_ipg); Ditto. -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html