aboutsummaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorYang Xiwen <forbidden405@outlook.com>2023-11-19 06:10:06 +0800
committerSean Anderson <seanga2@gmail.com>2023-12-15 12:31:47 -0500
commit3fb2d3d6acbaad50d2e638f6abb4e9d7a511c462 (patch)
tree63128a6567e6ac39a9281e6c98b2e5d9c0b7759e /drivers
parent09844d0de5550e7f91246031220074a80b5a821a (diff)
downloadu-boot-3fb2d3d6acbaad50d2e638f6abb4e9d7a511c462.zip
u-boot-3fb2d3d6acbaad50d2e638f6abb4e9d7a511c462.tar.gz
u-boot-3fb2d3d6acbaad50d2e638f6abb4e9d7a511c462.tar.bz2
clk: get correct ops for clk_enable() and clk_disable()
assign clk_dev_ops(clkp->dev) to ops to ensure correct clk operations are called on clocks. This fixes the incorrect enable_count issue as described in [1]. [1]: https://lore.kernel.org/all/SEZPR06MB695927A6DEEEF8489A06897396A7A@SEZPR06MB6959.apcprd06.prod.outlook.com/ Signed-off-by: Yang Xiwen <forbidden405@outlook.com> Reviewed-by: Sean Anderson <seanga2@gmail.com> Link: https://lore.kernel.org/r/20231111-enable_count-v2-2-20e3728600b5@outlook.com
Diffstat (limited to 'drivers')
-rw-r--r--drivers/clk/clk-uclass.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/clk/clk-uclass.c b/drivers/clk/clk-uclass.c
index 3b5e3f9..3e9d68f 100644
--- a/drivers/clk/clk-uclass.c
+++ b/drivers/clk/clk-uclass.c
@@ -640,6 +640,7 @@ int clk_enable(struct clk *clk)
if (CONFIG_IS_ENABLED(CLK_CCF)) {
/* Take id 0 as a non-valid clk, such as dummy */
if (clk->id && !clk_get_by_id(clk->id, &clkp)) {
+ ops = clk_dev_ops(clkp->dev);
if (clkp->enable_count) {
clkp->enable_count++;
return 0;
@@ -699,6 +700,7 @@ int clk_disable(struct clk *clk)
if (CONFIG_IS_ENABLED(CLK_CCF)) {
if (clk->id && !clk_get_by_id(clk->id, &clkp)) {
+ ops = clk_dev_ops(clkp->dev);
if (clkp->flags & CLK_IS_CRITICAL)
return 0;