clk: qcom: gcc-msm8960: create tsens device if there are no child nodes
authorDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Sat, 21 May 2022 15:14:36 +0000 (18:14 +0300)
committerBjorn Andersson <bjorn.andersson@linaro.org>
Tue, 5 Jul 2022 02:58:39 +0000 (21:58 -0500)
Currently gcc-msm8960 driver manually creates tsens platform device
manually. It would be better to follow IPQ8064 approach, where tsens
device is defined as gcc's child device in the device tree. If nothing
else, it removes gcc's dependency on QFPROM, thus allowing clock
controller to be probed earlier.

Don't create it in case there are available child nodes (tsens) inside
the gcc's device tree node.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Link: https://lore.kernel.org/r/20220521151437.1489111-4-dmitry.baryshkov@linaro.org
drivers/clk/qcom/gcc-msm8960.c

index 051745ef99c85f6342dc03670e506dc610e1e440..a6e13b91e4c84f53306203eef29ab07161f079d0 100644 (file)
@@ -3641,6 +3641,9 @@ static int gcc_msm8960_probe(struct platform_device *pdev)
                hfpll_l2.d = &hfpll_l2_8064_data;
        }
 
+       if (of_get_available_child_count(pdev->dev.of_node) != 0)
+               return devm_of_platform_populate(&pdev->dev);
+
        tsens = platform_device_register_data(&pdev->dev, "qcom-tsens", -1,
                                              NULL, 0);
        if (IS_ERR(tsens))
@@ -3655,7 +3658,8 @@ static int gcc_msm8960_remove(struct platform_device *pdev)
 {
        struct platform_device *tsens = platform_get_drvdata(pdev);
 
-       platform_device_unregister(tsens);
+       if (tsens)
+               platform_device_unregister(tsens);
 
        return 0;
 }