clk: imx: get stdout clk count from device tree
authorPeng Fan <peng.fan@nxp.com>
Wed, 4 Jan 2023 11:00:30 +0000 (19:00 +0800)
committerAbel Vesa <abel.vesa@linaro.org>
Sun, 29 Jan 2023 18:29:26 +0000 (20:29 +0200)
Currently the clk_count is specified by API users, but this
parameter is wrongly used, for example, i.MX8M clk driver use 4,
however the uart device tree node only use 2 clock entries. So
let using of_clk_get_parent_count to get the exact clock count.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Reviewed-by: Abel Vesa <abel.vesa@linaro.org>
Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
Link: https://lore.kernel.org/r/20230104110032.1220721-3-peng.fan@oss.nxp.com
drivers/clk/imx/clk.c

index 5b73a477f11fd13edba8cad4b25f70c50f3a7262..df810f0ee16d53f1355c6706cafe6713af37604f 100644 (file)
@@ -167,6 +167,8 @@ __setup_param("earlyprintk", imx_keep_uart_earlyprintk,
 
 void imx_register_uart_clocks(unsigned int clk_count)
 {
+       unsigned int num __maybe_unused;
+
        imx_enabled_uart_clocks = 0;
 
 /* i.MX boards use device trees now.  For build tests without CONFIG_OF, do nothing */
@@ -174,14 +176,18 @@ void imx_register_uart_clocks(unsigned int clk_count)
        if (imx_keep_uart_clocks) {
                int i;
 
-               imx_uart_clocks = kcalloc(clk_count, sizeof(struct clk *), GFP_KERNEL);
-               if (!imx_uart_clocks)
+               num = of_clk_get_parent_count(of_stdout);
+               if (!num)
                        return;
 
                if (!of_stdout)
                        return;
 
-               for (i = 0; i < clk_count; i++) {
+               imx_uart_clocks = kcalloc(num, sizeof(struct clk *), GFP_KERNEL);
+               if (!imx_uart_clocks)
+                       return;
+
+               for (i = 0; i < num; i++) {
                        imx_uart_clocks[imx_enabled_uart_clocks] = of_clk_get(of_stdout, i);
 
                        /* Stop if there are no more of_stdout references */