]> git.karo-electronics.de Git - linux-beck.git/commitdiff
serial: imx: enable the clocks for console
authorHuang Shijie <b32955@freescale.com>
Sun, 9 Jun 2013 02:01:19 +0000 (10:01 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 9 Jun 2013 05:31:47 +0000 (22:31 -0700)
The console's clocks are disabled after the uart driver is probed.
It makes that we can see less log from the console now
(though we still can get all the log by the `dmesg`).

So enable the clocks for console, and we can see all the log again.

This patch also disables the sport->clk_per when we fail to enable
the sport->clk_ipg;

Signed-off-by: Huang Shijie <b32955@freescale.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/imx.c

index 7a761f7c9781dd28a6402ae754eb57f42d50ef3f..78f809759ed73dc15d8458ef2e8133d7bdf4a6d6 100644 (file)
@@ -702,13 +702,16 @@ 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;
+       if (!uart_console(port)) {
+               retval = clk_prepare_enable(sport->clk_per);
+               if (retval)
+                       goto error_out1;
+               retval = clk_prepare_enable(sport->clk_ipg);
+               if (retval) {
+                       clk_disable_unprepare(sport->clk_per);
+                       goto error_out1;
+               }
+       }
 
        imx_setup_ufcr(sport, 0);
 
@@ -1578,8 +1581,10 @@ 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);
+       if (!uart_console(&sport->port)) {
+               clk_disable_unprepare(sport->clk_per);
+               clk_disable_unprepare(sport->clk_ipg);
+       }
 
        return 0;
 deinit: