]> 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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 25 Apr 2025 08:45:33 +0000 (10:45 +0200)
commit 5eac348182d2b5ed1066459abedb7bc6b5466f81 upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/clk/qcom/clk-branch.c

index fc4735f74f0f1506fe227bb42ad346c643d1a190..fefbfe7c42e7ea1b9976fd2837e7da37b8675a3c 100644 (file)
@@ -27,7 +27,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);
@@ -43,7 +43,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;