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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 13 Sep 2023 07:42:56 +0000 (09:42 +0200)
[ Upstream commit 1a70ca71547be051769f0628aa09717694f508f0 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/interconnect/qcom/bcm-voter.c

index d857eb8838b95d7881d97551172bba399f966874..a2d437a05a11fa7325f944865c81a3ac7dbb203e 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;
        }
 }