clk: imx27: retain early UART clocks during kernel init
authorLucas Stach <l.stach@pengutronix.de>
Mon, 21 Sep 2015 16:53:59 +0000 (18:53 +0200)
committerShawn Guo <shawnguo@kernel.org>
Sat, 26 Sep 2015 04:58:50 +0000 (21:58 -0700)
Make sure to keep UART clocks enabled during kernel init if
earlyprintk or earlycon are active.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
drivers/clk/imx/clk-imx27.c

index d9d50d54ef2aeaf5853728cb80b14e79847d78ec..0d7b8df04dfa8ed66463572f8d0d0a5b24cb3140 100644 (file)
@@ -47,6 +47,17 @@ static const char *ssi_sel_clks[] = { "spll_gate", "mpll", };
 static struct clk *clk[IMX27_CLK_MAX];
 static struct clk_onecell_data clk_data;
 
+static struct clk ** const uart_clks[] __initconst = {
+       &clk[IMX27_CLK_PER1_GATE],
+       &clk[IMX27_CLK_UART1_IPG_GATE],
+       &clk[IMX27_CLK_UART2_IPG_GATE],
+       &clk[IMX27_CLK_UART3_IPG_GATE],
+       &clk[IMX27_CLK_UART4_IPG_GATE],
+       &clk[IMX27_CLK_UART5_IPG_GATE],
+       &clk[IMX27_CLK_UART6_IPG_GATE],
+       NULL
+};
+
 static void __init _mx27_clocks_init(unsigned long fref)
 {
        BUG_ON(!ccm);
@@ -163,6 +174,8 @@ static void __init _mx27_clocks_init(unsigned long fref)
 
        clk_prepare_enable(clk[IMX27_CLK_EMI_AHB_GATE]);
 
+       imx_register_uart_clocks(uart_clks);
+
        imx_print_silicon_rev("i.MX27", mx27_revision());
 }