On Tue, Jun 04, 2013 at 09:59:33AM +0800, Huang Shijie wrote: > Current code opens the clocks when the uart driver is probed. > This will wastes some power if several uarts are enabled, but not really > used. > > So close these clocks for uart, and enable the clocks only when > the uart is used. > > Signed-off-by: Huang Shijie <b32955@xxxxxxxxxxxxx> Running linux-next 20130607, I just found that the serial console stops working due to this patch. I think the clocks need to be enabled for console as well. Shawn > --- > v1 --> v2: > check the return value of clk_prepare_enable(). > --- > drivers/tty/serial/imx.c | 17 ++++++++++++++--- > 1 files changed, 14 insertions(+), 3 deletions(-) > > diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c > index 72bc1db..7cc4810 100644 > --- a/drivers/tty/serial/imx.c > +++ b/drivers/tty/serial/imx.c > @@ -699,6 +699,14 @@ static int imx_startup(struct uart_port *port) > int retval; > unsigned long flags, temp; > > + retval = clk_prepare_enable(sport->clk_per); > + if (retval) > + goto error_out1; > + > + retval = clk_prepare_enable(sport->clk_ipg); > + if (retval) > + goto error_out1; > + > imx_setup_ufcr(sport, 0); > > /* disable the DREN bit (Data Ready interrupt enable) before > @@ -884,6 +892,9 @@ static void imx_shutdown(struct uart_port *port) > > writel(temp, sport->port.membase + UCR1); > spin_unlock_irqrestore(&sport->port.lock, flags); > + > + clk_disable_unprepare(sport->clk_per); > + clk_disable_unprepare(sport->clk_ipg); > } > > static void > @@ -1557,6 +1568,9 @@ static int serial_imx_probe(struct platform_device *pdev) > goto deinit; > platform_set_drvdata(pdev, sport); > > + clk_disable_unprepare(sport->clk_per); > + clk_disable_unprepare(sport->clk_ipg); > + > return 0; > deinit: > if (pdata && pdata->exit) > @@ -1578,9 +1592,6 @@ static int serial_imx_remove(struct platform_device *pdev) > > uart_remove_one_port(&imx_reg, &sport->port); > > - clk_disable_unprepare(sport->clk_per); > - clk_disable_unprepare(sport->clk_ipg); > - > if (pdata && pdata->exit) > pdata->exit(pdev); > > -- > 1.7.1 > > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel@xxxxxxxxxxxxxxxxxxx > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel -- 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