[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAPDyKFpid-LEqqSXBHYRc6CKdHpmT+FnS3xrCTt7Z0RhcCSfCg@mail.gmail.com>
Date: Tue, 9 Jul 2024 13:14:32 +0200
From: Ulf Hansson <ulf.hansson@...aro.org>
To: Taniya Das <quic_tdas@...cinc.com>
Cc: Bjorn Andersson <andersson@...nel.org>, Konrad Dybcio <konrad.dybcio@...aro.org>,
Andy Gross <agross@...nel.org>, linux-arm-msm@...r.kernel.org, linux-pm@...r.kernel.org,
linux-kernel@...r.kernel.org, quic_jkona@...cinc.com,
quic_imrashai@...cinc.com, stable@...r.kernel.org
Subject: Re: [PATCH v2] pmdomain: qcom: rpmhpd: Skip retention level for Power Domains
On Tue, 25 Jun 2024 at 06:33, Taniya Das <quic_tdas@...cinc.com> wrote:
>
> In the cases where the power domain connected to logics is allowed to
> transition from a level(L)-->power collapse(0)-->retention(1) or
> vice versa retention(1)-->power collapse(0)-->level(L) will cause the
> logic to lose the configurations. The ARC does not support retention
> to collapse transition on MxC rails.
>
> The targets from SM8450 onwards the PLL logics of clock controllers are
> connected to MxC rails and the recommended configurations are carried
> out during the clock controller probes. The MxC transition as mentioned
> above should be skipped to ensure the PLL settings are intact across
> clock controller power on & off.
>
> On older targets that do not split MX into MxA and MxC does not collapse
> the logic and it is parked always at RETENTION, thus this issue is never
> observed on those targets.
>
> Cc: stable@...r.kernel.org # v5.17
> Reviewed-by: Bjorn Andersson <andersson@...nel.org>
> Signed-off-by: Taniya Das <quic_tdas@...cinc.com>
Applied for fixes, thanks!
Kind regards
Uffe
> ---
> [Changes in v2]: Incorporate the comments in the commit text.
> ---
> drivers/pmdomain/qcom/rpmhpd.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/drivers/pmdomain/qcom/rpmhpd.c b/drivers/pmdomain/qcom/rpmhpd.c
> index de9121ef4216..d2cb4271a1ca 100644
> --- a/drivers/pmdomain/qcom/rpmhpd.c
> +++ b/drivers/pmdomain/qcom/rpmhpd.c
> @@ -40,6 +40,7 @@
> * @addr: Resource address as looped up using resource name from
> * cmd-db
> * @state_synced: Indicator that sync_state has been invoked for the rpmhpd resource
> + * @skip_retention_level: Indicate that retention level should not be used for the power domain
> */
> struct rpmhpd {
> struct device *dev;
> @@ -56,6 +57,7 @@ struct rpmhpd {
> const char *res_name;
> u32 addr;
> bool state_synced;
> + bool skip_retention_level;
> };
>
> struct rpmhpd_desc {
> @@ -173,6 +175,7 @@ static struct rpmhpd mxc = {
> .pd = { .name = "mxc", },
> .peer = &mxc_ao,
> .res_name = "mxc.lvl",
> + .skip_retention_level = true,
> };
>
> static struct rpmhpd mxc_ao = {
> @@ -180,6 +183,7 @@ static struct rpmhpd mxc_ao = {
> .active_only = true,
> .peer = &mxc,
> .res_name = "mxc.lvl",
> + .skip_retention_level = true,
> };
>
> static struct rpmhpd nsp = {
> @@ -819,6 +823,9 @@ static int rpmhpd_update_level_mapping(struct rpmhpd *rpmhpd)
> return -EINVAL;
>
> for (i = 0; i < rpmhpd->level_count; i++) {
> + if (rpmhpd->skip_retention_level && buf[i] == RPMH_REGULATOR_LEVEL_RETENTION)
> + continue;
> +
> rpmhpd->level[i] = buf[i];
>
> /* Remember the first corner with non-zero level */
>
> ---
> base-commit: 62c97045b8f720c2eac807a5f38e26c9ed512371
> change-id: 20240625-avoid_mxc_retention-b095a761d981
>
> Best regards,
> --
> Taniya Das <quic_tdas@...cinc.com>
>
Powered by blists - more mailing lists