Message ID | 20240808-clk-rpmh-bcm-vote-fix-v1-1-109bd1d76189@quicinc.com |
---|---|
State | Superseded |
Headers | show |
Series | clk: qcom: clk-rpmh: Fix overflow in BCM vote | expand |
On 8/8/2024 12:35 PM, Imran Shaik wrote: > From: Mike Tipton <quic_mdtipton@quicinc.com> > > Valid frequencies may result in BCM votes that exceed the max HW value. > Set vote ceiling to BCM_TCS_CMD_VOTE_MASK to ensure the votes aren't > truncated, which can result in lower frequencies than desired. > > Fixes: 04053f4d23a4 ("clk: qcom: clk-rpmh: Add IPA clock support") > Cc: stable@vger.kernel.org > Signed-off-by: Mike Tipton <quic_mdtipton@quicinc.com> > Signed-off-by: Imran Shaik <quic_imrashai@quicinc.com> > --- > drivers/clk/qcom/clk-rpmh.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/clk/qcom/clk-rpmh.c b/drivers/clk/qcom/clk-rpmh.c > index bb82abeed88f..233ccd365a37 100644 > --- a/drivers/clk/qcom/clk-rpmh.c > +++ b/drivers/clk/qcom/clk-rpmh.c > @@ -263,6 +263,9 @@ static int clk_rpmh_bcm_send_cmd(struct clk_rpmh *c, bool enable) > cmd_state = 0; > } > > + if (cmd_state > BCM_TCS_CMD_VOTE_MASK) > + cmd_state = BCM_TCS_CMD_VOTE_MASK; > + > if (c->last_sent_aggr_state != cmd_state) { > cmd.addr = c->res_addr; > cmd.data = BCM_TCS_CMD(1, enable, 0, cmd_state); > Reviewed-by: Taniya Das <quic_tdas@quicinc.com>
On 8/9/2024 1:13 AM, Stephen Boyd wrote: > Quoting Imran Shaik (2024-08-08 00:05:02) >> From: Mike Tipton <quic_mdtipton@quicinc.com> >> >> Valid frequencies may result in BCM votes that exceed the max HW value. >> Set vote ceiling to BCM_TCS_CMD_VOTE_MASK to ensure the votes aren't >> truncated, which can result in lower frequencies than desired. >> >> Fixes: 04053f4d23a4 ("clk: qcom: clk-rpmh: Add IPA clock support") >> Cc: stable@vger.kernel.org >> Signed-off-by: Mike Tipton <quic_mdtipton@quicinc.com> >> Signed-off-by: Imran Shaik <quic_imrashai@quicinc.com> >> --- >> drivers/clk/qcom/clk-rpmh.c | 3 +++ >> 1 file changed, 3 insertions(+) >> >> diff --git a/drivers/clk/qcom/clk-rpmh.c b/drivers/clk/qcom/clk-rpmh.c >> index bb82abeed88f..233ccd365a37 100644 >> --- a/drivers/clk/qcom/clk-rpmh.c >> +++ b/drivers/clk/qcom/clk-rpmh.c >> @@ -263,6 +263,9 @@ static int clk_rpmh_bcm_send_cmd(struct clk_rpmh *c, bool enable) >> cmd_state = 0; >> } >> >> + if (cmd_state > BCM_TCS_CMD_VOTE_MASK) >> + cmd_state = BCM_TCS_CMD_VOTE_MASK; >> + > > This is > > cmd_state = min(cmd_state, BCM_TCS_CMD_VOTE_MASK); Sure, I will update this logic and post another series. Thanks, Imran
diff --git a/drivers/clk/qcom/clk-rpmh.c b/drivers/clk/qcom/clk-rpmh.c index bb82abeed88f..233ccd365a37 100644 --- a/drivers/clk/qcom/clk-rpmh.c +++ b/drivers/clk/qcom/clk-rpmh.c @@ -263,6 +263,9 @@ static int clk_rpmh_bcm_send_cmd(struct clk_rpmh *c, bool enable) cmd_state = 0; } + if (cmd_state > BCM_TCS_CMD_VOTE_MASK) + cmd_state = BCM_TCS_CMD_VOTE_MASK; + if (c->last_sent_aggr_state != cmd_state) { cmd.addr = c->res_addr; cmd.data = BCM_TCS_CMD(1, enable, 0, cmd_state);