2023-08-12 11:35:16

by Adam Skladowski

[permalink] [raw]
Subject: [PATCH v3 1/7] drivers: genpd: qcom: rpmpd: Fix MSM8976 power domains setup

Downstream kernel parses resource names based on pm8950-rpm-regulator.dtsi
in such file qcom,resource-name takes three values: smpa,ldoa and clk0.
First appearance of RWSC/RWSM point to msm-4.4 kernel
which is way newer than what this platform was shipped with (msm-3.10).
For the max_state downstream code limit value to TURBO inside dts
with only one turbo_high being placed in msm-thermal bindings.
One of effects of requesting TURBO_HIGH vote is rebooting of device
which happens during voting inside WCNSS/IRIS,
this behavior was observed on LeEco S2 smartphone.
Fix regulator setup and drop unused resources.

Fixes: b1d522443b4b ("soc: qcom: rpmpd: Add rpm power domains for msm8976")
Signed-off-by: Adam Skladowski <[email protected]>
Reviewed-by: Dmitry Baryshkov <[email protected]>
---
drivers/genpd/qcom/rpmpd.c | 27 ++++++++++-----------------
1 file changed, 10 insertions(+), 17 deletions(-)

diff --git a/drivers/genpd/qcom/rpmpd.c b/drivers/genpd/qcom/rpmpd.c
index 3135dd1dafe0..59caa4e7b99a 100644
--- a/drivers/genpd/qcom/rpmpd.c
+++ b/drivers/genpd/qcom/rpmpd.c
@@ -166,13 +166,6 @@ static struct rpmpd cx_rwcx0_vfl = {
.key = KEY_FLOOR_LEVEL,
};

-static struct rpmpd cx_rwsc2_vfl = {
- .pd = { .name = "cx_vfl", },
- .res_type = RPMPD_RWSC,
- .res_id = 2,
- .key = KEY_FLOOR_LEVEL,
-};
-
static struct rpmpd cx_s1a_vfc = {
.pd = { .name = "cx_vfc", },
.res_type = RPMPD_SMPA,
@@ -329,6 +322,13 @@ static struct rpmpd mx_s6a_lvl_ao = {
.key = KEY_LEVEL,
};

+static struct rpmpd mx_s6a_vfl = {
+ .pd = { .name = "mx_vfl", },
+ .res_type = RPMPD_SMPA,
+ .res_id = 6,
+ .key = KEY_FLOOR_LEVEL,
+};
+
static struct rpmpd mx_s7a_lvl_ao;
static struct rpmpd mx_s7a_lvl = {
.pd = { .name = "mx", },
@@ -361,13 +361,6 @@ static struct rpmpd mx_rwmx0_vfl = {
.key = KEY_FLOOR_LEVEL,
};

-static struct rpmpd mx_rwsm6_vfl = {
- .pd = { .name = "mx_vfl", },
- .res_type = RPMPD_RWSM,
- .res_id = 6,
- .key = KEY_FLOOR_LEVEL,
-};
-
/* MD */
static struct rpmpd md_s1a_corner_ao;
static struct rpmpd md_s1a_corner = {
@@ -591,16 +584,16 @@ static const struct rpmpd_desc msm8953_desc = {
static struct rpmpd *msm8976_rpmpds[] = {
[MSM8976_VDDCX] = &cx_s2a_lvl,
[MSM8976_VDDCX_AO] = &cx_s2a_lvl_ao,
- [MSM8976_VDDCX_VFL] = &cx_rwsc2_vfl,
+ [MSM8976_VDDCX_VFL] = &cx_s2a_vfl,
[MSM8976_VDDMX] = &mx_s6a_lvl,
[MSM8976_VDDMX_AO] = &mx_s6a_lvl_ao,
- [MSM8976_VDDMX_VFL] = &mx_rwsm6_vfl,
+ [MSM8976_VDDMX_VFL] = &mx_s6a_vfl,
};

static const struct rpmpd_desc msm8976_desc = {
.rpmpds = msm8976_rpmpds,
.num_pds = ARRAY_SIZE(msm8976_rpmpds),
- .max_state = RPM_SMD_LEVEL_TURBO_HIGH,
+ .max_state = RPM_SMD_LEVEL_TURBO,
};

static struct rpmpd *msm8994_rpmpds[] = {
--
2.41.0



2023-09-13 19:07:43

by Bjorn Andersson

[permalink] [raw]
Subject: Re: [PATCH v3 1/7] drivers: genpd: qcom: rpmpd: Fix MSM8976 power domains setup

On Sat, Aug 12, 2023 at 01:24:44PM +0200, Adam Skladowski wrote:

Please drop the "drivers:" prefix in $subject, and resubmit this with
patch (alone should be fine) with the new maintainer, and appropriate
mailing list, included.

Thanks,
Bjorn

> Downstream kernel parses resource names based on pm8950-rpm-regulator.dtsi
> in such file qcom,resource-name takes three values: smpa,ldoa and clk0.
> First appearance of RWSC/RWSM point to msm-4.4 kernel
> which is way newer than what this platform was shipped with (msm-3.10).
> For the max_state downstream code limit value to TURBO inside dts
> with only one turbo_high being placed in msm-thermal bindings.
> One of effects of requesting TURBO_HIGH vote is rebooting of device
> which happens during voting inside WCNSS/IRIS,
> this behavior was observed on LeEco S2 smartphone.
> Fix regulator setup and drop unused resources.
>
> Fixes: b1d522443b4b ("soc: qcom: rpmpd: Add rpm power domains for msm8976")
> Signed-off-by: Adam Skladowski <[email protected]>
> Reviewed-by: Dmitry Baryshkov <[email protected]>
> ---
> drivers/genpd/qcom/rpmpd.c | 27 ++++++++++-----------------
> 1 file changed, 10 insertions(+), 17 deletions(-)
>
> diff --git a/drivers/genpd/qcom/rpmpd.c b/drivers/genpd/qcom/rpmpd.c
> index 3135dd1dafe0..59caa4e7b99a 100644
> --- a/drivers/genpd/qcom/rpmpd.c
> +++ b/drivers/genpd/qcom/rpmpd.c
> @@ -166,13 +166,6 @@ static struct rpmpd cx_rwcx0_vfl = {
> .key = KEY_FLOOR_LEVEL,
> };
>
> -static struct rpmpd cx_rwsc2_vfl = {
> - .pd = { .name = "cx_vfl", },
> - .res_type = RPMPD_RWSC,
> - .res_id = 2,
> - .key = KEY_FLOOR_LEVEL,
> -};
> -
> static struct rpmpd cx_s1a_vfc = {
> .pd = { .name = "cx_vfc", },
> .res_type = RPMPD_SMPA,
> @@ -329,6 +322,13 @@ static struct rpmpd mx_s6a_lvl_ao = {
> .key = KEY_LEVEL,
> };
>
> +static struct rpmpd mx_s6a_vfl = {
> + .pd = { .name = "mx_vfl", },
> + .res_type = RPMPD_SMPA,
> + .res_id = 6,
> + .key = KEY_FLOOR_LEVEL,
> +};
> +
> static struct rpmpd mx_s7a_lvl_ao;
> static struct rpmpd mx_s7a_lvl = {
> .pd = { .name = "mx", },
> @@ -361,13 +361,6 @@ static struct rpmpd mx_rwmx0_vfl = {
> .key = KEY_FLOOR_LEVEL,
> };
>
> -static struct rpmpd mx_rwsm6_vfl = {
> - .pd = { .name = "mx_vfl", },
> - .res_type = RPMPD_RWSM,
> - .res_id = 6,
> - .key = KEY_FLOOR_LEVEL,
> -};
> -
> /* MD */
> static struct rpmpd md_s1a_corner_ao;
> static struct rpmpd md_s1a_corner = {
> @@ -591,16 +584,16 @@ static const struct rpmpd_desc msm8953_desc = {
> static struct rpmpd *msm8976_rpmpds[] = {
> [MSM8976_VDDCX] = &cx_s2a_lvl,
> [MSM8976_VDDCX_AO] = &cx_s2a_lvl_ao,
> - [MSM8976_VDDCX_VFL] = &cx_rwsc2_vfl,
> + [MSM8976_VDDCX_VFL] = &cx_s2a_vfl,
> [MSM8976_VDDMX] = &mx_s6a_lvl,
> [MSM8976_VDDMX_AO] = &mx_s6a_lvl_ao,
> - [MSM8976_VDDMX_VFL] = &mx_rwsm6_vfl,
> + [MSM8976_VDDMX_VFL] = &mx_s6a_vfl,
> };
>
> static const struct rpmpd_desc msm8976_desc = {
> .rpmpds = msm8976_rpmpds,
> .num_pds = ARRAY_SIZE(msm8976_rpmpds),
> - .max_state = RPM_SMD_LEVEL_TURBO_HIGH,
> + .max_state = RPM_SMD_LEVEL_TURBO,
> };
>
> static struct rpmpd *msm8994_rpmpds[] = {
> --
> 2.41.0
>