Message ID | 20220426233508.1762345-1-bjorn.andersson@linaro.org |
---|---|
Headers | show |
Series | soc: qcom: rpmhpd: Add sc8280xp and sa8540p | expand |
On Tue, Apr 26, 2022 at 04:35:05PM -0700, Bjorn Andersson wrote: > Add compatibles and power-domain definitions for the sc8280xp and sa8540p > platforms. > > Bjorn Andersson (3): > dt-bindings: power: rpmpd: Add sc8280xp RPMh power-domains > soc: qcom: rpmhpd: Don't warn about sparse rpmhpd arrays > soc: qcom: rpmhpd: add sc8280xp & sa8540p rpmh power-domains Looks good. For the series: Reviewed-by: Johan Hovold <johan+linaro@kernel.org> Johan
On Tue, Apr 26, 2022 at 04:35:08PM -0700, Bjorn Andersson wrote: > The Qualcomm sc8280xp platform has 13 and the sa8540p platform has 11 > power-domains. Add compatibles, the typically used ones power-domains > and their relevant active-only variants, to the RPMh power-domain > driver. > > Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org> > --- > > Changes since v1: > - Added QPHY > - Split out sa8540 > - Sorted the entries alphabetically > > drivers/soc/qcom/rpmhpd.c | 53 +++++++++++++++++++++++++++++++++++++++ > 1 file changed, 53 insertions(+) > > diff --git a/drivers/soc/qcom/rpmhpd.c b/drivers/soc/qcom/rpmhpd.c > index f8d28e902942..05fff8691ee3 100644 > --- a/drivers/soc/qcom/rpmhpd.c > +++ b/drivers/soc/qcom/rpmhpd.c > @@ -180,6 +180,36 @@ static struct rpmhpd mxc_ao = { > .res_name = "mxc.lvl", > }; > > +static struct rpmhpd nsp = { > + .pd = { .name = "nsp", }, > + .res_name = "nsp.lvl", > +}; > + > +static struct rpmhpd qphy = { > + .pd = { .name = "qphy", }, > + .res_name = "qphy.lvl", > +}; > + > +/* SA8540P RPMH powerdomains */ > +static struct rpmhpd *sa8540p_rpmhpds[] = { > + [SC8280XP_CX] = &cx, > + [SC8280XP_CX_AO] = &cx_ao, > + [SC8280XP_EBI] = &ebi, > + [SC8280XP_GFX] = &gfx, > + [SC8280XP_LCX] = &lcx, > + [SC8280XP_LMX] = &lmx, > + [SC8280XP_MMCX] = &mmcx, > + [SC8280XP_MMCX_AO] = &mmcx_ao, > + [SC8280XP_MX] = &mx, > + [SC8280XP_MX_AO] = &mx_ao, > + [SC8280XP_NSP] = &nsp, > +}; > + > +static const struct rpmhpd_desc sa8540p_desc = { > + .rpmhpds = sa8540p_rpmhpds, > + .num_pds = ARRAY_SIZE(sa8540p_rpmhpds), > +}; > + > /* SDM845 RPMH powerdomains */ > static struct rpmhpd *sdm845_rpmhpds[] = { > [SDM845_CX] = &cx_w_mx_parent, > @@ -378,10 +408,33 @@ static const struct rpmhpd_desc sc8180x_desc = { > .num_pds = ARRAY_SIZE(sc8180x_rpmhpds), > }; > > +/* SC8280xp RPMH powerdomains */ > +static struct rpmhpd *sc8280xp_rpmhpds[] = { > + [SC8280XP_CX] = &cx, > + [SC8280XP_CX_AO] = &cx_ao, > + [SC8280XP_EBI] = &ebi, > + [SC8280XP_GFX] = &gfx, > + [SC8280XP_LCX] = &lcx, > + [SC8280XP_LMX] = &lmx, > + [SC8280XP_MMCX] = &mmcx, > + [SC8280XP_MMCX_AO] = &mmcx_ao, > + [SC8280XP_MX] = &mx, > + [SC8280XP_MX_AO] = &mx_ao, > + [SC8280XP_NSP] = &nsp, > + [SC8280XP_QPHY] = &qphy, > +}; The commit messages mention sc8280xp having 13 power domains, but here I only count 12. Good chance I'm just missing something obvious (not familiar with using power domains or rpmh) but I thought I should highlight it in case that was an error. I attempted to find where this sort of thing is defined downstream, but failed :( Thanks, Andrew > + > +static const struct rpmhpd_desc sc8280xp_desc = { > + .rpmhpds = sc8280xp_rpmhpds, > + .num_pds = ARRAY_SIZE(sc8280xp_rpmhpds), > +}; > + > static const struct of_device_id rpmhpd_match_table[] = { > + { .compatible = "qcom,sa8540p-rpmhpd", .data = &sa8540p_desc }, > { .compatible = "qcom,sc7180-rpmhpd", .data = &sc7180_desc }, > { .compatible = "qcom,sc7280-rpmhpd", .data = &sc7280_desc }, > { .compatible = "qcom,sc8180x-rpmhpd", .data = &sc8180x_desc }, > + { .compatible = "qcom,sc8280xp-rpmhpd", .data = &sc8280xp_desc }, > { .compatible = "qcom,sdm845-rpmhpd", .data = &sdm845_desc }, > { .compatible = "qcom,sdx55-rpmhpd", .data = &sdx55_desc}, > { .compatible = "qcom,sdx65-rpmhpd", .data = &sdx65_desc}, > -- > 2.35.1 >
On 27/04/2022 01:35, Bjorn Andersson wrote: > The sc8280xp has 13 power-domains controlled through the RPMh, document > the compatible and provide definitions for the power-domains - and their > active-only variants where applicable. > > The SA8540p differs slightly in the power domains exposed, so add a > separate compatible for this, but reuse the constants to allow sharing > the DeviceTree source. > > Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org> Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Best regards, Krzysztof
On Wed 27 Apr 05:38 PDT 2022, Andrew Halaney wrote: > On Tue, Apr 26, 2022 at 04:35:08PM -0700, Bjorn Andersson wrote: > > The Qualcomm sc8280xp platform has 13 and the sa8540p platform has 11 > > power-domains. Add compatibles, the typically used ones power-domains > > and their relevant active-only variants, to the RPMh power-domain > > driver. > > > > Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org> > > --- > > > > Changes since v1: > > - Added QPHY > > - Split out sa8540 > > - Sorted the entries alphabetically > > > > drivers/soc/qcom/rpmhpd.c | 53 +++++++++++++++++++++++++++++++++++++++ > > 1 file changed, 53 insertions(+) > > > > diff --git a/drivers/soc/qcom/rpmhpd.c b/drivers/soc/qcom/rpmhpd.c > > index f8d28e902942..05fff8691ee3 100644 > > --- a/drivers/soc/qcom/rpmhpd.c > > +++ b/drivers/soc/qcom/rpmhpd.c > > @@ -180,6 +180,36 @@ static struct rpmhpd mxc_ao = { > > .res_name = "mxc.lvl", > > }; > > > > +static struct rpmhpd nsp = { > > + .pd = { .name = "nsp", }, > > + .res_name = "nsp.lvl", > > +}; > > + > > +static struct rpmhpd qphy = { > > + .pd = { .name = "qphy", }, > > + .res_name = "qphy.lvl", > > +}; > > + > > +/* SA8540P RPMH powerdomains */ > > +static struct rpmhpd *sa8540p_rpmhpds[] = { > > + [SC8280XP_CX] = &cx, > > + [SC8280XP_CX_AO] = &cx_ao, > > + [SC8280XP_EBI] = &ebi, > > + [SC8280XP_GFX] = &gfx, > > + [SC8280XP_LCX] = &lcx, > > + [SC8280XP_LMX] = &lmx, > > + [SC8280XP_MMCX] = &mmcx, > > + [SC8280XP_MMCX_AO] = &mmcx_ao, > > + [SC8280XP_MX] = &mx, > > + [SC8280XP_MX_AO] = &mx_ao, > > + [SC8280XP_NSP] = &nsp, > > +}; > > + > > +static const struct rpmhpd_desc sa8540p_desc = { > > + .rpmhpds = sa8540p_rpmhpds, > > + .num_pds = ARRAY_SIZE(sa8540p_rpmhpds), > > +}; > > + > > /* SDM845 RPMH powerdomains */ > > static struct rpmhpd *sdm845_rpmhpds[] = { > > [SDM845_CX] = &cx_w_mx_parent, > > @@ -378,10 +408,33 @@ static const struct rpmhpd_desc sc8180x_desc = { > > .num_pds = ARRAY_SIZE(sc8180x_rpmhpds), > > }; > > > > +/* SC8280xp RPMH powerdomains */ > > +static struct rpmhpd *sc8280xp_rpmhpds[] = { > > + [SC8280XP_CX] = &cx, > > + [SC8280XP_CX_AO] = &cx_ao, > > + [SC8280XP_EBI] = &ebi, > > + [SC8280XP_GFX] = &gfx, > > + [SC8280XP_LCX] = &lcx, > > + [SC8280XP_LMX] = &lmx, > > + [SC8280XP_MMCX] = &mmcx, > > + [SC8280XP_MMCX_AO] = &mmcx_ao, > > + [SC8280XP_MX] = &mx, > > + [SC8280XP_MX_AO] = &mx_ao, > > + [SC8280XP_NSP] = &nsp, > > + [SC8280XP_QPHY] = &qphy, > > +}; > > The commit messages mention sc8280xp having 13 power domains, but here I > only count 12. Good chance I'm just missing something obvious (not > familiar with using power domains or rpmh) but I thought I should > highlight it in case that was an error. > The "typically used ones" in the commit message "captures" that. Further more _AO is just a variant of the non-_AO resources, referring to votes that should only apply when the CPU subsystem is not power collapsed. So what you have in this list is 10 power domains. I added defines for all 13 in the DT binding, so comparing with that you'll see that the missing ones are DDR, MSS and XO. I don't see how we would use these from Linux today. So let's postpone adding them until we have a use case. > I attempted to find where this sort of thing is defined downstream, but > failed :( > In direwolf-regulators.dtsi you'll find entries with qcom,resource-name of "*.lvl". These resource names are matches against the Command DB registry, which you can dump using the cmd-db file in debugfs. Regards, Bjorn > Thanks, > Andrew > > > + > > +static const struct rpmhpd_desc sc8280xp_desc = { > > + .rpmhpds = sc8280xp_rpmhpds, > > + .num_pds = ARRAY_SIZE(sc8280xp_rpmhpds), > > +}; > > + > > static const struct of_device_id rpmhpd_match_table[] = { > > + { .compatible = "qcom,sa8540p-rpmhpd", .data = &sa8540p_desc }, > > { .compatible = "qcom,sc7180-rpmhpd", .data = &sc7180_desc }, > > { .compatible = "qcom,sc7280-rpmhpd", .data = &sc7280_desc }, > > { .compatible = "qcom,sc8180x-rpmhpd", .data = &sc8180x_desc }, > > + { .compatible = "qcom,sc8280xp-rpmhpd", .data = &sc8280xp_desc }, > > { .compatible = "qcom,sdm845-rpmhpd", .data = &sdm845_desc }, > > { .compatible = "qcom,sdx55-rpmhpd", .data = &sdx55_desc}, > > { .compatible = "qcom,sdx65-rpmhpd", .data = &sdx65_desc}, > > -- > > 2.35.1 > > >
On Thu, Apr 28, 2022 at 08:48:17AM -0700, Bjorn Andersson wrote: > On Wed 27 Apr 05:38 PDT 2022, Andrew Halaney wrote: > > > On Tue, Apr 26, 2022 at 04:35:08PM -0700, Bjorn Andersson wrote: > > > The Qualcomm sc8280xp platform has 13 and the sa8540p platform has 11 > > > power-domains. Add compatibles, the typically used ones power-domains > > > and their relevant active-only variants, to the RPMh power-domain > > > driver. > > > > > > Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org> > > > --- > > > > > > Changes since v1: > > > - Added QPHY > > > - Split out sa8540 > > > - Sorted the entries alphabetically > > > > > > drivers/soc/qcom/rpmhpd.c | 53 +++++++++++++++++++++++++++++++++++++++ > > > 1 file changed, 53 insertions(+) > > > > > > diff --git a/drivers/soc/qcom/rpmhpd.c b/drivers/soc/qcom/rpmhpd.c > > > index f8d28e902942..05fff8691ee3 100644 > > > --- a/drivers/soc/qcom/rpmhpd.c > > > +++ b/drivers/soc/qcom/rpmhpd.c > > > @@ -180,6 +180,36 @@ static struct rpmhpd mxc_ao = { > > > .res_name = "mxc.lvl", > > > }; > > > > > > +static struct rpmhpd nsp = { > > > + .pd = { .name = "nsp", }, > > > + .res_name = "nsp.lvl", > > > +}; > > > + > > > +static struct rpmhpd qphy = { > > > + .pd = { .name = "qphy", }, > > > + .res_name = "qphy.lvl", > > > +}; > > > + > > > +/* SA8540P RPMH powerdomains */ > > > +static struct rpmhpd *sa8540p_rpmhpds[] = { > > > + [SC8280XP_CX] = &cx, > > > + [SC8280XP_CX_AO] = &cx_ao, > > > + [SC8280XP_EBI] = &ebi, > > > + [SC8280XP_GFX] = &gfx, > > > + [SC8280XP_LCX] = &lcx, > > > + [SC8280XP_LMX] = &lmx, > > > + [SC8280XP_MMCX] = &mmcx, > > > + [SC8280XP_MMCX_AO] = &mmcx_ao, > > > + [SC8280XP_MX] = &mx, > > > + [SC8280XP_MX_AO] = &mx_ao, > > > + [SC8280XP_NSP] = &nsp, > > > +}; > > > + > > > +static const struct rpmhpd_desc sa8540p_desc = { > > > + .rpmhpds = sa8540p_rpmhpds, > > > + .num_pds = ARRAY_SIZE(sa8540p_rpmhpds), > > > +}; > > > + > > > /* SDM845 RPMH powerdomains */ > > > static struct rpmhpd *sdm845_rpmhpds[] = { > > > [SDM845_CX] = &cx_w_mx_parent, > > > @@ -378,10 +408,33 @@ static const struct rpmhpd_desc sc8180x_desc = { > > > .num_pds = ARRAY_SIZE(sc8180x_rpmhpds), > > > }; > > > > > > +/* SC8280xp RPMH powerdomains */ > > > +static struct rpmhpd *sc8280xp_rpmhpds[] = { > > > + [SC8280XP_CX] = &cx, > > > + [SC8280XP_CX_AO] = &cx_ao, > > > + [SC8280XP_EBI] = &ebi, > > > + [SC8280XP_GFX] = &gfx, > > > + [SC8280XP_LCX] = &lcx, > > > + [SC8280XP_LMX] = &lmx, > > > + [SC8280XP_MMCX] = &mmcx, > > > + [SC8280XP_MMCX_AO] = &mmcx_ao, > > > + [SC8280XP_MX] = &mx, > > > + [SC8280XP_MX_AO] = &mx_ao, > > > + [SC8280XP_NSP] = &nsp, > > > + [SC8280XP_QPHY] = &qphy, > > > +}; > > > > The commit messages mention sc8280xp having 13 power domains, but here I > > only count 12. Good chance I'm just missing something obvious (not > > familiar with using power domains or rpmh) but I thought I should > > highlight it in case that was an error. > > > > The "typically used ones" in the commit message "captures" that. Further > more _AO is just a variant of the non-_AO resources, referring to votes > that should only apply when the CPU subsystem is not power collapsed. > > So what you have in this list is 10 power domains. > > I added defines for all 13 in the DT binding, so comparing with that > you'll see that the missing ones are DDR, MSS and XO. I don't see how we > would use these from Linux today. So let's postpone adding them until we > have a use case. > > > I attempted to find where this sort of thing is defined downstream, but > > failed :( > > > > In direwolf-regulators.dtsi you'll find entries with qcom,resource-name > of "*.lvl". These resource names are matches against the Command DB > registry, which you can dump using the cmd-db file in debugfs. > > Regards, > Bjorn Thanks, I really appreciate the explanation. This makes sense to me. > > > Thanks, > > Andrew > > > > > + > > > +static const struct rpmhpd_desc sc8280xp_desc = { > > > + .rpmhpds = sc8280xp_rpmhpds, > > > + .num_pds = ARRAY_SIZE(sc8280xp_rpmhpds), > > > +}; > > > + > > > static const struct of_device_id rpmhpd_match_table[] = { > > > + { .compatible = "qcom,sa8540p-rpmhpd", .data = &sa8540p_desc }, > > > { .compatible = "qcom,sc7180-rpmhpd", .data = &sc7180_desc }, > > > { .compatible = "qcom,sc7280-rpmhpd", .data = &sc7280_desc }, > > > { .compatible = "qcom,sc8180x-rpmhpd", .data = &sc8180x_desc }, > > > + { .compatible = "qcom,sc8280xp-rpmhpd", .data = &sc8280xp_desc }, > > > { .compatible = "qcom,sdm845-rpmhpd", .data = &sdm845_desc }, > > > { .compatible = "qcom,sdx55-rpmhpd", .data = &sdx55_desc}, > > > { .compatible = "qcom,sdx65-rpmhpd", .data = &sdx65_desc}, > > > -- > > > 2.35.1 > > > > > >