interconnect: qcom: bcm-voter: Use enable_maks for keepalive voting
authorKonrad Dybcio <konrad.dybcio@linaro.org>
Fri, 11 Aug 2023 23:16:16 +0000 (01:16 +0200)
committerGeorgi Djakov <djakov@kernel.org>
Mon, 21 Aug 2023 22:43:56 +0000 (01:43 +0300)
BCMs with an enable_mask expect to only have that specific value written
to them. The current implementation only works by miracle for BCMs with
enable mask == BIT(0), as the minimal vote we've been using so far just
so happens to be equal to that.

Use the correct value with keepalive voting.

Fixes: d8630f050d3f ("interconnect: qcom: Add support for mask-based BCMs")
Reported-by: Bjorn Andersson <quic_bjorande@quicinc.com>
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230811-topic-icc_fix_1he-v2-2-0620af8ac133@linaro.org
Signed-off-by: Georgi Djakov <djakov@kernel.org>
drivers/interconnect/qcom/bcm-voter.c

index d857eb8..a2d437a 100644 (file)
@@ -81,10 +81,10 @@ static void bcm_aggregate_mask(struct qcom_icc_bcm *bcm)
        }
 
        if (bcm->keepalive) {
-               bcm->vote_x[QCOM_ICC_BUCKET_AMC] = 1;
-               bcm->vote_x[QCOM_ICC_BUCKET_WAKE] = 1;
-               bcm->vote_y[QCOM_ICC_BUCKET_AMC] = 1;
-               bcm->vote_y[QCOM_ICC_BUCKET_WAKE] = 1;
+               bcm->vote_x[QCOM_ICC_BUCKET_AMC] = bcm->enable_mask;
+               bcm->vote_x[QCOM_ICC_BUCKET_WAKE] = bcm->enable_mask;
+               bcm->vote_y[QCOM_ICC_BUCKET_AMC] = bcm->enable_mask;
+               bcm->vote_y[QCOM_ICC_BUCKET_WAKE] = bcm->enable_mask;
        }
 }