]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
clk: qcom: clk-branch: Fix invert halt status bit check for votable clocks
authorAjit Pandey <quic_ajipan@quicinc.com>
Tue, 28 Jan 2025 11:38:35 +0000 (17:08 +0530)
committerBjorn Andersson <andersson@kernel.org>
Fri, 14 Feb 2025 17:08:22 +0000 (11:08 -0600)
BRANCH_HALT_ENABLE and BRANCH_HALT_ENABLE_VOTED flags are used to check
halt status of branch clocks, which have an inverted logic for the halt
bit in CBCR register. However, the current logic in the _check_halt()
method only compares the BRANCH_HALT_ENABLE flags, ignoring the votable
branch clocks.

Update the logic to correctly handle the invert logic for votable clocks
using the BRANCH_HALT_ENABLE_VOTED flags.

Fixes: 9092d1083a62 ("clk: qcom: branch: Extend the invert logic for branch2 clocks")
Cc: stable@vger.kernel.org
Signed-off-by: Ajit Pandey <quic_ajipan@quicinc.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://lore.kernel.org/r/20250128-push_fix-v1-1-fafec6747881@quicinc.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
drivers/clk/qcom/clk-branch.c

index 229480c5b075a0e70dc05b1cb15b88d29fd475ce..0f10090d4ae681babbdbbb1b6c68ffe77af7a784 100644 (file)
@@ -28,7 +28,7 @@ static bool clk_branch_in_hwcg_mode(const struct clk_branch *br)
 
 static bool clk_branch_check_halt(const struct clk_branch *br, bool enabling)
 {
-       bool invert = (br->halt_check == BRANCH_HALT_ENABLE);
+       bool invert = (br->halt_check & BRANCH_HALT_ENABLE);
        u32 val;
 
        regmap_read(br->clkr.regmap, br->halt_reg, &val);
@@ -44,7 +44,7 @@ static bool clk_branch2_check_halt(const struct clk_branch *br, bool enabling)
 {
        u32 val;
        u32 mask;
-       bool invert = (br->halt_check == BRANCH_HALT_ENABLE);
+       bool invert = (br->halt_check & BRANCH_HALT_ENABLE);
 
        mask = CBCR_NOC_FSM_STATUS;
        mask |= CBCR_CLK_OFF;