]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
clk: ccf: correct the test on the parent uclass in clk_enable/clk_disable
authorPatrick Delaunay <patrick.delaunay@foss.st.com>
Mon, 24 Jan 2022 13:17:14 +0000 (14:17 +0100)
committerSean Anderson <seanga2@gmail.com>
Fri, 25 Feb 2022 06:41:04 +0000 (01:41 -0500)
It is safe to check if the uclass id on the device is UCLASS_CLK
before to call the clk_ functions, but today this comparison is
not done on the device used in API: clkp->dev->parent
but on the device himself: clkp->dev.

This patch corrects this behavior and tests if the parent device
is a clock device before to call the clock API, clk_enable or
clk_disable, on this device.

Fixes: 0520be0f67e3 ("clk: prograte clk enable/disable to parent")
Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
Reviewed-by: Sean Anderson <seanga2@gmail.com>
drivers/clk/clk-uclass.c

index fca4b8321a9d9890c2e464002c6f28904c75f691..c20c928bf1d1287428f4d56e1d980e26cce2e69b 100644 (file)
@@ -641,7 +641,7 @@ int clk_enable(struct clk *clk)
                                return 0;
                        }
                        if (clkp->dev->parent &&
-                           device_get_uclass_id(clkp->dev) == UCLASS_CLK) {
+                           device_get_uclass_id(clkp->dev->parent) == UCLASS_CLK) {
                                ret = clk_enable(dev_get_clk_ptr(clkp->dev->parent));
                                if (ret) {
                                        printf("Enable %s failed\n",
@@ -715,7 +715,7 @@ int clk_disable(struct clk *clk)
                }
 
                if (clkp && clkp->dev->parent &&
-                   device_get_uclass_id(clkp->dev) == UCLASS_CLK) {
+                   device_get_uclass_id(clkp->dev->parent) == UCLASS_CLK) {
                        ret = clk_disable(dev_get_clk_ptr(clkp->dev->parent));
                        if (ret) {
                                printf("Disable %s failed\n",