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
This commit is contained in:
parent
09844d0de5
commit
3fb2d3d6ac
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user