summaryrefslogtreecommitdiff
path: root/drivers/interconnect/qcom
diff options
context:
space:
mode:
authorKonrad Dybcio <konrad.dybcio@oss.qualcomm.com>2026-09-09 18:41:55 +0200
committerGeorgi Djakov <djakov@kernel.org>2026-09-16 15:31:06 +0300
commit40ea86fa389cf7fbc2280bebef353c36b1ec9b94 (patch)
tree2ea6ede232951c824516421c7b4218428b5d424e /drivers/interconnect/qcom
parent51797517fab74cba616b4932cbc2348c0fc04192 (diff)
interconnect: qcom: icc-rpm: Don't skip small votes
Small votes (such as 1 or 100) can end up being rounded down to 0 midway through the calculations. Use qcom_bw_div() when dividing to prevent that. Assisted-by: LLM Fixes: 30c8fa3ec61a ("interconnect: qcom: Add MSM8916 interconnect provider driver") Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com> Link: https://patch.msgid.link/20260909-topic-icc_rpm_smd_qol-v1-2-6dc5b5e97626@oss.qualcomm.com Signed-off-by: Georgi Djakov <djakov@kernel.org>
Diffstat (limited to 'drivers/interconnect/qcom')
-rw-r--r--drivers/interconnect/qcom/icc-rpm.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qcom/icc-rpm.c
index ca4c8a944755..f571f002ccbd 100644
--- a/drivers/interconnect/qcom/icc-rpm.c
+++ b/drivers/interconnect/qcom/icc-rpm.c
@@ -298,25 +298,25 @@ static u64 qcom_icc_calc_rate(struct qcom_icc_provider *qp, struct qcom_icc_node
u64 agg_avg_rate, agg_peak_rate, agg_rate;
if (qn->channels)
- agg_avg_rate = div_u64(qn->sum_avg[ctx], qn->channels);
+ agg_avg_rate = qcom_bw_div(qn->sum_avg[ctx], qn->channels);
else
agg_avg_rate = qn->sum_avg[ctx];
if (qn->ab_coeff) {
agg_avg_rate = agg_avg_rate * qn->ab_coeff;
- agg_avg_rate = div_u64(agg_avg_rate, 100);
+ agg_avg_rate = qcom_bw_div(agg_avg_rate, 100);
}
if (qn->ib_coeff) {
agg_peak_rate = qn->max_peak[ctx] * 100;
- agg_peak_rate = div_u64(agg_peak_rate, qn->ib_coeff);
+ agg_peak_rate = qcom_bw_div(agg_peak_rate, qn->ib_coeff);
} else {
agg_peak_rate = qn->max_peak[ctx];
}
agg_rate = max_t(u64, agg_avg_rate, agg_peak_rate);
- return div_u64(agg_rate, qn->buswidth);
+ return qcom_bw_div(agg_rate, qn->buswidth);
}
/**