* [PATCH v1 1/7] dt-bindings: power: rpmpd: Add IPQ9574 power domains
2024-06-20 8:14 [PATCH v1 0/7] Enable CPR for IPQ9574 Varadarajan Narayanan
@ 2024-06-20 8:14 ` Varadarajan Narayanan
2024-06-20 13:26 ` Krzysztof Kozlowski
2024-06-20 8:14 ` [PATCH v1 2/7] dt-bindings: soc: qcom: cpr3: Add bindings for IPQ9574 Varadarajan Narayanan
` (6 subsequent siblings)
7 siblings, 1 reply; 19+ messages in thread
From: Varadarajan Narayanan @ 2024-06-20 8:14 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, angelogioacchino.delregno, andersson,
konrad.dybcio, mturquette, sboyd, ulf.hansson, quic_sibis,
quic_rjendra, luca, abel.vesa, quic_varada, quic_rohiagar, danila,
otto.pflueger, linux-arm-msm, devicetree, linux-kernel, linux-clk,
linux-pm
Add the compatibles and indexes for the rpmpd in IPQ9574.
Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
---
Documentation/devicetree/bindings/power/qcom,rpmpd.yaml | 1 +
include/dt-bindings/power/qcom-rpmpd.h | 3 +++
2 files changed, 4 insertions(+)
diff --git a/Documentation/devicetree/bindings/power/qcom,rpmpd.yaml b/Documentation/devicetree/bindings/power/qcom,rpmpd.yaml
index 929b7ef9c1bc..e20ba25fa094 100644
--- a/Documentation/devicetree/bindings/power/qcom,rpmpd.yaml
+++ b/Documentation/devicetree/bindings/power/qcom,rpmpd.yaml
@@ -17,6 +17,7 @@ properties:
compatible:
oneOf:
- enum:
+ - qcom,ipq9574-rpmpd
- qcom,mdm9607-rpmpd
- qcom,msm8226-rpmpd
- qcom,msm8909-rpmpd
diff --git a/include/dt-bindings/power/qcom-rpmpd.h b/include/dt-bindings/power/qcom-rpmpd.h
index 608087fb9a3d..0538370bfbb4 100644
--- a/include/dt-bindings/power/qcom-rpmpd.h
+++ b/include/dt-bindings/power/qcom-rpmpd.h
@@ -402,6 +402,9 @@
#define QCM2290_VDD_LPI_CX 6
#define QCM2290_VDD_LPI_MX 7
+/* IPQ9574 Power Domains */
+#define IPQ9574_VDDAPC 0
+
/* RPM SMD Power Domain performance levels */
#define RPM_SMD_LEVEL_RETENTION 16
#define RPM_SMD_LEVEL_RETENTION_PLUS 32
--
2.34.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* Re: [PATCH v1 1/7] dt-bindings: power: rpmpd: Add IPQ9574 power domains
2024-06-20 8:14 ` [PATCH v1 1/7] dt-bindings: power: rpmpd: Add IPQ9574 power domains Varadarajan Narayanan
@ 2024-06-20 13:26 ` Krzysztof Kozlowski
0 siblings, 0 replies; 19+ messages in thread
From: Krzysztof Kozlowski @ 2024-06-20 13:26 UTC (permalink / raw)
To: Varadarajan Narayanan, robh, krzk+dt, conor+dt,
angelogioacchino.delregno, andersson, konrad.dybcio, mturquette,
sboyd, ulf.hansson, quic_sibis, quic_rjendra, luca, abel.vesa,
quic_rohiagar, danila, otto.pflueger, linux-arm-msm, devicetree,
linux-kernel, linux-clk, linux-pm
On 20/06/2024 10:14, Varadarajan Narayanan wrote:
> Add the compatibles and indexes for the rpmpd in IPQ9574.
>
> Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
> ---
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v1 2/7] dt-bindings: soc: qcom: cpr3: Add bindings for IPQ9574
2024-06-20 8:14 [PATCH v1 0/7] Enable CPR for IPQ9574 Varadarajan Narayanan
2024-06-20 8:14 ` [PATCH v1 1/7] dt-bindings: power: rpmpd: Add IPQ9574 power domains Varadarajan Narayanan
@ 2024-06-20 8:14 ` Varadarajan Narayanan
2024-06-20 13:28 ` Krzysztof Kozlowski
2024-06-20 8:14 ` [PATCH v1 3/7] pmdomain: qcom: rpmpd: Add IPQ9574 power domains Varadarajan Narayanan
` (5 subsequent siblings)
7 siblings, 1 reply; 19+ messages in thread
From: Varadarajan Narayanan @ 2024-06-20 8:14 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, angelogioacchino.delregno, andersson,
konrad.dybcio, mturquette, sboyd, ulf.hansson, quic_sibis,
quic_rjendra, luca, abel.vesa, quic_varada, quic_rohiagar, danila,
otto.pflueger, linux-arm-msm, devicetree, linux-kernel, linux-clk,
linux-pm
Add the bindings for the IPQ9574 CPR3 driver to the documentation.
Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
---
.../bindings/soc/qcom/qcom,cpr3.yaml | 32 +++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/Documentation/devicetree/bindings/soc/qcom/qcom,cpr3.yaml b/Documentation/devicetree/bindings/soc/qcom/qcom,cpr3.yaml
index acf2e294866b..d5e02505c863 100644
--- a/Documentation/devicetree/bindings/soc/qcom/qcom,cpr3.yaml
+++ b/Documentation/devicetree/bindings/soc/qcom/qcom,cpr3.yaml
@@ -24,6 +24,7 @@ properties:
- const: qcom,cpr4
- items:
- enum:
+ - qcom,ipq9574-cprh
- qcom,msm8998-cprh
- qcom,sdm630-cprh
- const: qcom,cprh
@@ -52,9 +53,11 @@ properties:
nvmem-cells:
description: Cells containing the fuse corners and revision data
+ minItems: 17
maxItems: 32
nvmem-cell-names:
+ minItems: 17
maxItems: 32
operating-points-v2: true
@@ -74,6 +77,35 @@ required:
additionalProperties: false
allOf:
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - qcom,ipq9574-cprh
+ then:
+ properties:
+
+ nvmem-cell-names:
+ items:
+ - const: cpr_speed_bin
+ - const: cpr_fuse_revision
+ - const: cpr0_quotient1
+ - const: cpr0_quotient2
+ - const: cpr0_quotient3
+ - const: cpr0_quotient4
+ - const: cpr0_quotient_offset2
+ - const: cpr0_quotient_offset3
+ - const: cpr0_quotient_offset4
+ - const: cpr0_init_voltage1
+ - const: cpr0_init_voltage2
+ - const: cpr0_init_voltage3
+ - const: cpr0_init_voltage4
+ - const: cpr0_ring_osc1
+ - const: cpr0_ring_osc2
+ - const: cpr0_ring_osc3
+ - const: cpr0_ring_osc4
+
- if:
properties:
compatible:
--
2.34.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* Re: [PATCH v1 2/7] dt-bindings: soc: qcom: cpr3: Add bindings for IPQ9574
2024-06-20 8:14 ` [PATCH v1 2/7] dt-bindings: soc: qcom: cpr3: Add bindings for IPQ9574 Varadarajan Narayanan
@ 2024-06-20 13:28 ` Krzysztof Kozlowski
0 siblings, 0 replies; 19+ messages in thread
From: Krzysztof Kozlowski @ 2024-06-20 13:28 UTC (permalink / raw)
To: Varadarajan Narayanan, robh, krzk+dt, conor+dt,
angelogioacchino.delregno, andersson, konrad.dybcio, mturquette,
sboyd, ulf.hansson, quic_sibis, quic_rjendra, luca, abel.vesa,
quic_rohiagar, danila, otto.pflueger, linux-arm-msm, devicetree,
linux-kernel, linux-clk, linux-pm
On 20/06/2024 10:14, Varadarajan Narayanan wrote:
> Add the bindings for the IPQ9574 CPR3 driver to the documentation.
>
> Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
> ---
> .../bindings/soc/qcom/qcom,cpr3.yaml | 32 +++++++++++++++++++
> 1 file changed, 32 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/soc/qcom/qcom,cpr3.yaml b/Documentation/devicetree/bindings/soc/qcom/qcom,cpr3.yaml
> index acf2e294866b..d5e02505c863 100644
> --- a/Documentation/devicetree/bindings/soc/qcom/qcom,cpr3.yaml
> +++ b/Documentation/devicetree/bindings/soc/qcom/qcom,cpr3.yaml
> @@ -24,6 +24,7 @@ properties:
> - const: qcom,cpr4
> - items:
> - enum:
> + - qcom,ipq9574-cprh
> - qcom,msm8998-cprh
> - qcom,sdm630-cprh
> - const: qcom,cprh
> @@ -52,9 +53,11 @@ properties:
>
> nvmem-cells:
> description: Cells containing the fuse corners and revision data
> + minItems: 17
> maxItems: 32
>
> nvmem-cell-names:
> + minItems: 17
> maxItems: 32
>
> operating-points-v2: true
> @@ -74,6 +77,35 @@ required:
> additionalProperties: false
>
> allOf:
> + - if:
> + properties:
> + compatible:
> + contains:
> + enum:
> + - qcom,ipq9574-cprh
> + then:
> + properties:
> +
No need for blank line.
Constrain nvmem-cells. Also constrain the other variant.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v1 3/7] pmdomain: qcom: rpmpd: Add IPQ9574 power domains
2024-06-20 8:14 [PATCH v1 0/7] Enable CPR for IPQ9574 Varadarajan Narayanan
2024-06-20 8:14 ` [PATCH v1 1/7] dt-bindings: power: rpmpd: Add IPQ9574 power domains Varadarajan Narayanan
2024-06-20 8:14 ` [PATCH v1 2/7] dt-bindings: soc: qcom: cpr3: Add bindings for IPQ9574 Varadarajan Narayanan
@ 2024-06-20 8:14 ` Varadarajan Narayanan
2024-06-20 15:09 ` Dmitry Baryshkov
2024-06-20 8:14 ` [PATCH v1 4/7] dt-bindings: clock: Add CPR clock defines for IPQ9574 Varadarajan Narayanan
` (4 subsequent siblings)
7 siblings, 1 reply; 19+ messages in thread
From: Varadarajan Narayanan @ 2024-06-20 8:14 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, angelogioacchino.delregno, andersson,
konrad.dybcio, mturquette, sboyd, ulf.hansson, quic_sibis,
quic_rjendra, luca, abel.vesa, quic_varada, quic_rohiagar, danila,
otto.pflueger, linux-arm-msm, devicetree, linux-kernel, linux-clk,
linux-pm
Cc: Praveenkumar I
Add the APC power domain definitions used in IPQ9574.
Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
Signed-off-by: Praveenkumar I <quic_ipkumar@quicinc.com>
---
drivers/pmdomain/qcom/rpmpd.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/drivers/pmdomain/qcom/rpmpd.c b/drivers/pmdomain/qcom/rpmpd.c
index 5e6280b4cf70..947d6a9c3897 100644
--- a/drivers/pmdomain/qcom/rpmpd.c
+++ b/drivers/pmdomain/qcom/rpmpd.c
@@ -38,6 +38,7 @@ static struct qcom_smd_rpm *rpmpd_smd_rpm;
#define KEY_FLOOR_CORNER 0x636676 /* vfc */
#define KEY_FLOOR_LEVEL 0x6c6676 /* vfl */
#define KEY_LEVEL 0x6c766c76 /* vlvl */
+#define RPM_KEY_UV 0x00007675 /* "uv" */
#define MAX_CORNER_RPMPD_STATE 6
@@ -644,6 +645,23 @@ static const struct rpmpd_desc mdm9607_desc = {
.max_state = RPM_SMD_LEVEL_TURBO,
};
+static struct rpmpd apc_s1_lvl = {
+ .pd = { .name = "apc", },
+ .res_type = RPMPD_SMPA,
+ .res_id = 1,
+ .key = RPM_KEY_UV,
+};
+
+static struct rpmpd *ipq9574_rpmpds[] = {
+ [IPQ9574_VDDAPC] = &apc_s1_lvl,
+};
+
+static const struct rpmpd_desc ipq9574_desc = {
+ .rpmpds = ipq9574_rpmpds,
+ .num_pds = ARRAY_SIZE(ipq9574_rpmpds),
+ .max_state = RPM_SMD_LEVEL_TURBO_HIGH,
+};
+
static struct rpmpd *msm8226_rpmpds[] = {
[MSM8226_VDDCX] = &cx_s1a_corner,
[MSM8226_VDDCX_AO] = &cx_s1a_corner_ao,
@@ -931,6 +949,7 @@ static const struct rpmpd_desc qcm2290_desc = {
};
static const struct of_device_id rpmpd_match_table[] = {
+ { .compatible = "qcom,ipq9574-rpmpd", .data = &ipq9574_desc },
{ .compatible = "qcom,mdm9607-rpmpd", .data = &mdm9607_desc },
{ .compatible = "qcom,msm8226-rpmpd", .data = &msm8226_desc },
{ .compatible = "qcom,msm8909-rpmpd", .data = &msm8916_desc },
--
2.34.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* Re: [PATCH v1 3/7] pmdomain: qcom: rpmpd: Add IPQ9574 power domains
2024-06-20 8:14 ` [PATCH v1 3/7] pmdomain: qcom: rpmpd: Add IPQ9574 power domains Varadarajan Narayanan
@ 2024-06-20 15:09 ` Dmitry Baryshkov
2024-06-21 7:30 ` Varadarajan Narayanan
0 siblings, 1 reply; 19+ messages in thread
From: Dmitry Baryshkov @ 2024-06-20 15:09 UTC (permalink / raw)
To: Varadarajan Narayanan
Cc: robh, krzk+dt, conor+dt, angelogioacchino.delregno, andersson,
konrad.dybcio, mturquette, sboyd, ulf.hansson, quic_sibis,
quic_rjendra, luca, abel.vesa, quic_rohiagar, danila,
otto.pflueger, linux-arm-msm, devicetree, linux-kernel, linux-clk,
linux-pm, Praveenkumar I
On Thu, Jun 20, 2024 at 01:44:23PM GMT, Varadarajan Narayanan wrote:
> Add the APC power domain definitions used in IPQ9574.
>
> Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
> Signed-off-by: Praveenkumar I <quic_ipkumar@quicinc.com>
The order of the S-o-B's is wrong. Who is the actual author of the
patch?
> ---
> drivers/pmdomain/qcom/rpmpd.c | 19 +++++++++++++++++++
> 1 file changed, 19 insertions(+)
>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v1 3/7] pmdomain: qcom: rpmpd: Add IPQ9574 power domains
2024-06-20 15:09 ` Dmitry Baryshkov
@ 2024-06-21 7:30 ` Varadarajan Narayanan
2024-06-21 20:55 ` Dmitry Baryshkov
0 siblings, 1 reply; 19+ messages in thread
From: Varadarajan Narayanan @ 2024-06-21 7:30 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: robh, krzk+dt, conor+dt, angelogioacchino.delregno, andersson,
konrad.dybcio, mturquette, sboyd, ulf.hansson, quic_sibis,
quic_rjendra, luca, abel.vesa, quic_rohiagar, danila,
otto.pflueger, linux-arm-msm, devicetree, linux-kernel, linux-clk,
linux-pm, Praveenkumar I
On Thu, Jun 20, 2024 at 06:09:51PM +0300, Dmitry Baryshkov wrote:
> On Thu, Jun 20, 2024 at 01:44:23PM GMT, Varadarajan Narayanan wrote:
> > Add the APC power domain definitions used in IPQ9574.
> >
> > Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
> > Signed-off-by: Praveenkumar I <quic_ipkumar@quicinc.com>
>
> The order of the S-o-B's is wrong. Who is the actual author of the
> patch?
Praveenkumar I <quic_ipkumar@quicinc.com> is the actual author.
Thanks
Varada
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v1 3/7] pmdomain: qcom: rpmpd: Add IPQ9574 power domains
2024-06-21 7:30 ` Varadarajan Narayanan
@ 2024-06-21 20:55 ` Dmitry Baryshkov
2024-06-24 5:04 ` Varadarajan Narayanan
0 siblings, 1 reply; 19+ messages in thread
From: Dmitry Baryshkov @ 2024-06-21 20:55 UTC (permalink / raw)
To: Varadarajan Narayanan
Cc: robh, krzk+dt, conor+dt, angelogioacchino.delregno, andersson,
konrad.dybcio, mturquette, sboyd, ulf.hansson, quic_sibis,
quic_rjendra, luca, abel.vesa, quic_rohiagar, danila,
otto.pflueger, linux-arm-msm, devicetree, linux-kernel, linux-clk,
linux-pm, Praveenkumar I
On Fri, Jun 21, 2024 at 01:00:31PM GMT, Varadarajan Narayanan wrote:
> On Thu, Jun 20, 2024 at 06:09:51PM +0300, Dmitry Baryshkov wrote:
> > On Thu, Jun 20, 2024 at 01:44:23PM GMT, Varadarajan Narayanan wrote:
> > > Add the APC power domain definitions used in IPQ9574.
> > >
> > > Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
> > > Signed-off-by: Praveenkumar I <quic_ipkumar@quicinc.com>
> >
> > The order of the S-o-B's is wrong. Who is the actual author of the
> > patch?
>
> Praveenkumar I <quic_ipkumar@quicinc.com> is the actual author.
So the order of the tags in your patch is wrong.
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v1 3/7] pmdomain: qcom: rpmpd: Add IPQ9574 power domains
2024-06-21 20:55 ` Dmitry Baryshkov
@ 2024-06-24 5:04 ` Varadarajan Narayanan
0 siblings, 0 replies; 19+ messages in thread
From: Varadarajan Narayanan @ 2024-06-24 5:04 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: robh, krzk+dt, conor+dt, angelogioacchino.delregno, andersson,
konrad.dybcio, mturquette, sboyd, ulf.hansson, quic_sibis,
quic_rjendra, luca, abel.vesa, quic_rohiagar, danila,
otto.pflueger, linux-arm-msm, devicetree, linux-kernel, linux-clk,
linux-pm, Praveenkumar I
On Fri, Jun 21, 2024 at 11:55:10PM +0300, Dmitry Baryshkov wrote:
> On Fri, Jun 21, 2024 at 01:00:31PM GMT, Varadarajan Narayanan wrote:
> > On Thu, Jun 20, 2024 at 06:09:51PM +0300, Dmitry Baryshkov wrote:
> > > On Thu, Jun 20, 2024 at 01:44:23PM GMT, Varadarajan Narayanan wrote:
> > > > Add the APC power domain definitions used in IPQ9574.
> > > >
> > > > Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
> > > > Signed-off-by: Praveenkumar I <quic_ipkumar@quicinc.com>
> > >
> > > The order of the S-o-B's is wrong. Who is the actual author of the
> > > patch?
> >
> > Praveenkumar I <quic_ipkumar@quicinc.com> is the actual author.
>
> So the order of the tags in your patch is wrong.
Have fixed this and other comments and posted v2.
Please review.
Thanks
Varada
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v1 4/7] dt-bindings: clock: Add CPR clock defines for IPQ9574
2024-06-20 8:14 [PATCH v1 0/7] Enable CPR for IPQ9574 Varadarajan Narayanan
` (2 preceding siblings ...)
2024-06-20 8:14 ` [PATCH v1 3/7] pmdomain: qcom: rpmpd: Add IPQ9574 power domains Varadarajan Narayanan
@ 2024-06-20 8:14 ` Varadarajan Narayanan
2024-06-20 13:30 ` Krzysztof Kozlowski
2024-06-20 8:14 ` [PATCH v1 5/7] clk: qcom: gcc-ipq9574: Add CPR clock definition Varadarajan Narayanan
` (3 subsequent siblings)
7 siblings, 1 reply; 19+ messages in thread
From: Varadarajan Narayanan @ 2024-06-20 8:14 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, angelogioacchino.delregno, andersson,
konrad.dybcio, mturquette, sboyd, ulf.hansson, quic_sibis,
quic_rjendra, luca, abel.vesa, quic_varada, quic_rohiagar, danila,
otto.pflueger, linux-arm-msm, devicetree, linux-kernel, linux-clk,
linux-pm
Add defines for the CPR block present in IPQ9574.
Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
---
include/dt-bindings/clock/qcom,ipq9574-gcc.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/dt-bindings/clock/qcom,ipq9574-gcc.h b/include/dt-bindings/clock/qcom,ipq9574-gcc.h
index 52123c5a09fa..b7bededc442f 100644
--- a/include/dt-bindings/clock/qcom,ipq9574-gcc.h
+++ b/include/dt-bindings/clock/qcom,ipq9574-gcc.h
@@ -220,4 +220,5 @@
#define GCC_PCIE1_PIPE_CLK 211
#define GCC_PCIE2_PIPE_CLK 212
#define GCC_PCIE3_PIPE_CLK 213
+#define GCC_RBCPR_CLK 214
#endif
--
2.34.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* Re: [PATCH v1 4/7] dt-bindings: clock: Add CPR clock defines for IPQ9574
2024-06-20 8:14 ` [PATCH v1 4/7] dt-bindings: clock: Add CPR clock defines for IPQ9574 Varadarajan Narayanan
@ 2024-06-20 13:30 ` Krzysztof Kozlowski
0 siblings, 0 replies; 19+ messages in thread
From: Krzysztof Kozlowski @ 2024-06-20 13:30 UTC (permalink / raw)
To: Varadarajan Narayanan, robh, krzk+dt, conor+dt,
angelogioacchino.delregno, andersson, konrad.dybcio, mturquette,
sboyd, ulf.hansson, quic_sibis, quic_rjendra, luca, abel.vesa,
quic_rohiagar, danila, otto.pflueger, linux-arm-msm, devicetree,
linux-kernel, linux-clk, linux-pm
On 20/06/2024 10:14, Varadarajan Narayanan wrote:
> Add defines for the CPR block present in IPQ9574.
>
> Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v1 5/7] clk: qcom: gcc-ipq9574: Add CPR clock definition
2024-06-20 8:14 [PATCH v1 0/7] Enable CPR for IPQ9574 Varadarajan Narayanan
` (3 preceding siblings ...)
2024-06-20 8:14 ` [PATCH v1 4/7] dt-bindings: clock: Add CPR clock defines for IPQ9574 Varadarajan Narayanan
@ 2024-06-20 8:14 ` Varadarajan Narayanan
2024-06-20 15:11 ` Dmitry Baryshkov
2024-06-20 8:14 ` [PATCH v1 6/7] soc: qcom: cpr3: Add IPQ9574 definitions Varadarajan Narayanan
` (2 subsequent siblings)
7 siblings, 1 reply; 19+ messages in thread
From: Varadarajan Narayanan @ 2024-06-20 8:14 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, angelogioacchino.delregno, andersson,
konrad.dybcio, mturquette, sboyd, ulf.hansson, quic_sibis,
quic_rjendra, luca, abel.vesa, quic_varada, quic_rohiagar, danila,
otto.pflueger, linux-arm-msm, devicetree, linux-kernel, linux-clk,
linux-pm
Add the CPR clock definition needed for enabling access to
CPR register space.
Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
---
drivers/clk/qcom/gcc-ipq9574.c | 38 ++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/drivers/clk/qcom/gcc-ipq9574.c b/drivers/clk/qcom/gcc-ipq9574.c
index e1dc74d04ed1..7c8eb94f654b 100644
--- a/drivers/clk/qcom/gcc-ipq9574.c
+++ b/drivers/clk/qcom/gcc-ipq9574.c
@@ -3994,6 +3994,43 @@ static struct clk_branch gcc_xo_div4_clk = {
},
};
+static const struct freq_tbl ftbl_hmss_rbcpr_clk_src[] = {
+ F(24000000, P_XO, 1, 0, 0),
+ { }
+};
+
+static struct clk_rcg2 rbcpr_clk_src = {
+ .cmd_rcgr = 0x48044,
+ .mnd_width = 0,
+ .hid_width = 5,
+ .parent_map = gcc_xo_map,
+ .freq_tbl = ftbl_gp1_clk_src,
+ .clkr.hw.init = &(struct clk_init_data){
+ .name = "rbcpr_clk_src",
+ .parent_data = gcc_xo_gpll0_gpll4,
+ .num_parents = ARRAY_SIZE(gcc_xo_map),
+ .ops = &clk_rcg2_ops,
+ },
+};
+
+static struct clk_branch gcc_rbcpr_clk = {
+ .halt_reg = 0x48008,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x48008,
+ .enable_mask = BIT(0),
+ .hw.init = &(struct clk_init_data){
+ .name = "gcc_rbcpr_clk",
+ .parent_hws = (const struct clk_hw *[]) {
+ &rbcpr_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
static struct clk_hw *gcc_ipq9574_hws[] = {
&gpll0_out_main_div2.hw,
&gcc_xo_div4_clk_src.hw,
@@ -4219,6 +4256,7 @@ static struct clk_regmap *gcc_ipq9574_clks[] = {
[GCC_PCIE1_PIPE_CLK] = &gcc_pcie1_pipe_clk.clkr,
[GCC_PCIE2_PIPE_CLK] = &gcc_pcie2_pipe_clk.clkr,
[GCC_PCIE3_PIPE_CLK] = &gcc_pcie3_pipe_clk.clkr,
+ [GCC_RBCPR_CLK] = &gcc_rbcpr_clk.clkr,
};
static const struct qcom_reset_map gcc_ipq9574_resets[] = {
--
2.34.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* Re: [PATCH v1 5/7] clk: qcom: gcc-ipq9574: Add CPR clock definition
2024-06-20 8:14 ` [PATCH v1 5/7] clk: qcom: gcc-ipq9574: Add CPR clock definition Varadarajan Narayanan
@ 2024-06-20 15:11 ` Dmitry Baryshkov
2024-06-21 11:20 ` Varadarajan Narayanan
0 siblings, 1 reply; 19+ messages in thread
From: Dmitry Baryshkov @ 2024-06-20 15:11 UTC (permalink / raw)
To: Varadarajan Narayanan
Cc: robh, krzk+dt, conor+dt, angelogioacchino.delregno, andersson,
konrad.dybcio, mturquette, sboyd, ulf.hansson, quic_sibis,
quic_rjendra, luca, abel.vesa, quic_rohiagar, danila,
otto.pflueger, linux-arm-msm, devicetree, linux-kernel, linux-clk,
linux-pm
On Thu, Jun 20, 2024 at 01:44:25PM GMT, Varadarajan Narayanan wrote:
> Add the CPR clock definition needed for enabling access to
> CPR register space.
>
> Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
> ---
> drivers/clk/qcom/gcc-ipq9574.c | 38 ++++++++++++++++++++++++++++++++++
> 1 file changed, 38 insertions(+)
>
> diff --git a/drivers/clk/qcom/gcc-ipq9574.c b/drivers/clk/qcom/gcc-ipq9574.c
> index e1dc74d04ed1..7c8eb94f654b 100644
> --- a/drivers/clk/qcom/gcc-ipq9574.c
> +++ b/drivers/clk/qcom/gcc-ipq9574.c
> @@ -3994,6 +3994,43 @@ static struct clk_branch gcc_xo_div4_clk = {
> },
> };
>
> +static const struct freq_tbl ftbl_hmss_rbcpr_clk_src[] = {
> + F(24000000, P_XO, 1, 0, 0),
> + { }
> +};
> +
> +static struct clk_rcg2 rbcpr_clk_src = {
> + .cmd_rcgr = 0x48044,
> + .mnd_width = 0,
> + .hid_width = 5,
> + .parent_map = gcc_xo_map,
> + .freq_tbl = ftbl_gp1_clk_src,
> + .clkr.hw.init = &(struct clk_init_data){
> + .name = "rbcpr_clk_src",
> + .parent_data = gcc_xo_gpll0_gpll4,
> + .num_parents = ARRAY_SIZE(gcc_xo_map),
> + .ops = &clk_rcg2_ops,
> + },
> +};
> +
> +static struct clk_branch gcc_rbcpr_clk = {
> + .halt_reg = 0x48008,
> + .halt_check = BRANCH_HALT,
> + .clkr = {
> + .enable_reg = 0x48008,
> + .enable_mask = BIT(0),
> + .hw.init = &(struct clk_init_data){
> + .name = "gcc_rbcpr_clk",
> + .parent_hws = (const struct clk_hw *[]) {
> + &rbcpr_clk_src.clkr.hw,
Where is the &rbcpr_clk_src registered?
> + },
> + .num_parents = 1,
> + .flags = CLK_SET_RATE_PARENT,
> + .ops = &clk_branch2_ops,
> + },
> + },
> +};
> +
> static struct clk_hw *gcc_ipq9574_hws[] = {
> &gpll0_out_main_div2.hw,
> &gcc_xo_div4_clk_src.hw,
> @@ -4219,6 +4256,7 @@ static struct clk_regmap *gcc_ipq9574_clks[] = {
> [GCC_PCIE1_PIPE_CLK] = &gcc_pcie1_pipe_clk.clkr,
> [GCC_PCIE2_PIPE_CLK] = &gcc_pcie2_pipe_clk.clkr,
> [GCC_PCIE3_PIPE_CLK] = &gcc_pcie3_pipe_clk.clkr,
> + [GCC_RBCPR_CLK] = &gcc_rbcpr_clk.clkr,
> };
>
> static const struct qcom_reset_map gcc_ipq9574_resets[] = {
> --
> 2.34.1
>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 19+ messages in thread* Re: [PATCH v1 5/7] clk: qcom: gcc-ipq9574: Add CPR clock definition
2024-06-20 15:11 ` Dmitry Baryshkov
@ 2024-06-21 11:20 ` Varadarajan Narayanan
0 siblings, 0 replies; 19+ messages in thread
From: Varadarajan Narayanan @ 2024-06-21 11:20 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: robh, krzk+dt, conor+dt, angelogioacchino.delregno, andersson,
konrad.dybcio, mturquette, sboyd, ulf.hansson, quic_sibis,
quic_rjendra, luca, abel.vesa, quic_rohiagar, danila,
otto.pflueger, linux-arm-msm, devicetree, linux-kernel, linux-clk,
linux-pm
On Thu, Jun 20, 2024 at 06:11:32PM +0300, Dmitry Baryshkov wrote:
> On Thu, Jun 20, 2024 at 01:44:25PM GMT, Varadarajan Narayanan wrote:
> > Add the CPR clock definition needed for enabling access to
> > CPR register space.
> >
> > Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
> > ---
> > drivers/clk/qcom/gcc-ipq9574.c | 38 ++++++++++++++++++++++++++++++++++
> > 1 file changed, 38 insertions(+)
> >
> > diff --git a/drivers/clk/qcom/gcc-ipq9574.c b/drivers/clk/qcom/gcc-ipq9574.c
> > index e1dc74d04ed1..7c8eb94f654b 100644
> > --- a/drivers/clk/qcom/gcc-ipq9574.c
> > +++ b/drivers/clk/qcom/gcc-ipq9574.c
> > @@ -3994,6 +3994,43 @@ static struct clk_branch gcc_xo_div4_clk = {
> > },
> > };
> >
> > +static const struct freq_tbl ftbl_hmss_rbcpr_clk_src[] = {
> > + F(24000000, P_XO, 1, 0, 0),
> > + { }
> > +};
> > +
> > +static struct clk_rcg2 rbcpr_clk_src = {
> > + .cmd_rcgr = 0x48044,
> > + .mnd_width = 0,
> > + .hid_width = 5,
> > + .parent_map = gcc_xo_map,
> > + .freq_tbl = ftbl_gp1_clk_src,
> > + .clkr.hw.init = &(struct clk_init_data){
> > + .name = "rbcpr_clk_src",
> > + .parent_data = gcc_xo_gpll0_gpll4,
> > + .num_parents = ARRAY_SIZE(gcc_xo_map),
> > + .ops = &clk_rcg2_ops,
> > + },
> > +};
> > +
> > +static struct clk_branch gcc_rbcpr_clk = {
> > + .halt_reg = 0x48008,
> > + .halt_check = BRANCH_HALT,
> > + .clkr = {
> > + .enable_reg = 0x48008,
> > + .enable_mask = BIT(0),
> > + .hw.init = &(struct clk_init_data){
> > + .name = "gcc_rbcpr_clk",
> > + .parent_hws = (const struct clk_hw *[]) {
> > + &rbcpr_clk_src.clkr.hw,
>
> Where is the &rbcpr_clk_src registered?
Oops. Missed it. Will post a corrected patch.
Thanks
Varada
> > + },
> > + .num_parents = 1,
> > + .flags = CLK_SET_RATE_PARENT,
> > + .ops = &clk_branch2_ops,
> > + },
> > + },
> > +};
> > +
> > static struct clk_hw *gcc_ipq9574_hws[] = {
> > &gpll0_out_main_div2.hw,
> > &gcc_xo_div4_clk_src.hw,
> > @@ -4219,6 +4256,7 @@ static struct clk_regmap *gcc_ipq9574_clks[] = {
> > [GCC_PCIE1_PIPE_CLK] = &gcc_pcie1_pipe_clk.clkr,
> > [GCC_PCIE2_PIPE_CLK] = &gcc_pcie2_pipe_clk.clkr,
> > [GCC_PCIE3_PIPE_CLK] = &gcc_pcie3_pipe_clk.clkr,
> > + [GCC_RBCPR_CLK] = &gcc_rbcpr_clk.clkr,
> > };
> >
> > static const struct qcom_reset_map gcc_ipq9574_resets[] = {
> > --
> > 2.34.1
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v1 6/7] soc: qcom: cpr3: Add IPQ9574 definitions
2024-06-20 8:14 [PATCH v1 0/7] Enable CPR for IPQ9574 Varadarajan Narayanan
` (4 preceding siblings ...)
2024-06-20 8:14 ` [PATCH v1 5/7] clk: qcom: gcc-ipq9574: Add CPR clock definition Varadarajan Narayanan
@ 2024-06-20 8:14 ` Varadarajan Narayanan
2024-06-20 8:14 ` [PATCH v1 7/7] dts: arm64: qcom: ipq9574: Enable CPR Varadarajan Narayanan
2024-06-20 15:55 ` [PATCH v1 0/7] Enable CPR for IPQ9574 Konrad Dybcio
7 siblings, 0 replies; 19+ messages in thread
From: Varadarajan Narayanan @ 2024-06-20 8:14 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, angelogioacchino.delregno, andersson,
konrad.dybcio, mturquette, sboyd, ulf.hansson, quic_sibis,
quic_rjendra, luca, abel.vesa, quic_varada, quic_rohiagar, danila,
otto.pflueger, linux-arm-msm, devicetree, linux-kernel, linux-clk,
linux-pm
Cc: Praveenkumar I
Add thread, scaling factor, CPR descriptor defines to enable CPR
on IPQ9574.
Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
Signed-off-by: Praveenkumar I <quic_ipkumar@quicinc.com>
---
Depends:
[1] https://lore.kernel.org/lkml/20230217-topic-cpr3h-v14-0-9fd23241493d@linaro.org/T/
[2] https://github.com/quic-varada/cpr/commits/konrad/
---
drivers/pmdomain/qcom/cpr3.c | 137 +++++++++++++++++++++++++++++++++++
1 file changed, 137 insertions(+)
diff --git a/drivers/pmdomain/qcom/cpr3.c b/drivers/pmdomain/qcom/cpr3.c
index c28028be50d8..78cb690f57cf 100644
--- a/drivers/pmdomain/qcom/cpr3.c
+++ b/drivers/pmdomain/qcom/cpr3.c
@@ -2056,6 +2056,142 @@ static const struct cpr_acc_desc msm8998_cpr_acc_desc = {
.cpr_desc = &msm8998_cpr_desc,
};
+static const int ipq9574_silver_scaling_factor[][CPR3_RO_COUNT] = {
+ /* Fuse Corner 0 */
+ {
+ 2383, 2112, 2250, 1502, 2269, 2055, 2046, 1949,
+ 2128, 1945, 2282, 2061, 2010, 2216, 2054, 2332
+ },
+ /* Fuse Corner 1 */
+ {
+ 2383, 2112, 2250, 1502, 2269, 2055, 2046, 1949,
+ 2128, 1945, 2282, 2061, 2010, 2216, 2054, 2332
+ },
+ /* Fuse Corner 2 */
+ {
+ 2383, 2112, 2250, 1502, 2269, 2055, 2046, 1949,
+ 2128, 1945, 2282, 2061, 2010, 2216, 2054, 2332
+ },
+ /* Fuse Corner 3 */
+ {
+ 2383, 2112, 2250, 1502, 2269, 2055, 2046, 1949,
+ 2128, 1945, 2282, 2061, 2010, 2216, 2054, 2332
+ },
+};
+
+static const struct cpr_thread_desc ipq9574_thread_silver = {
+ .controller_id = 0,
+ .hw_tid = 0,
+ .ro_scaling_factor = ipq9574_silver_scaling_factor,
+ .sensor_range_start = 0,
+ .sensor_range_end = 6,
+ .init_voltage_step = 10000,
+ .init_voltage_width = 6,
+ .step_quot_init_min = 0,
+ .step_quot_init_max = 15,
+ .num_fuse_corners = 4,
+ .fuse_corner_data = (struct fuse_corner_data[]){
+ /* fuse corner 0 */
+ {
+ .ref_uV = 725000,
+ .max_uV = 725000,
+ .min_uV = 725000,
+ .range_uV = 0,
+ .volt_cloop_adjust = 0,
+ .volt_oloop_adjust = 0,
+ .max_volt_scale = 4,
+ .max_quot_scale = 10,
+ .quot_offset = 0,
+ .quot_scale = 1,
+ .quot_adjust = 0,
+ .quot_offset_scale = 5,
+ .quot_offset_adjust = 0,
+ },
+ /* fuse corner 1 */
+ {
+ .ref_uV = 862500,
+ .max_uV = 862500,
+ .min_uV = 725000,
+ .range_uV = 0,
+ .volt_cloop_adjust = 0,
+ .volt_oloop_adjust = 0,
+ .max_volt_scale = 500,
+ .max_quot_scale = 800,
+ .quot_offset = 0,
+ .quot_scale = 1,
+ .quot_adjust = 0,
+ .quot_offset_scale = 5,
+ .quot_offset_adjust = 0,
+ },
+ /* fuse corner 2 */
+ {
+ .ref_uV = 987500,
+ .max_uV = 987500,
+ .min_uV = 787500,
+ .range_uV = 0,
+ .volt_cloop_adjust = 0,
+ .volt_oloop_adjust = 0,
+ .max_volt_scale = 280,
+ .max_quot_scale = 650,
+ .quot_offset = 0,
+ .quot_scale = 1,
+ .quot_adjust = 0,
+ .quot_offset_scale = 5,
+ .quot_offset_adjust = 0,
+
+ },
+ /* fuse corner 3 */
+ {
+ .ref_uV = 1062500,
+ .max_uV = 1062500,
+ .min_uV = 850000,
+ .range_uV = 0,
+ .volt_cloop_adjust = 0,
+ .volt_oloop_adjust = 0,
+ .max_volt_scale = 430,
+ .max_quot_scale = 800,
+ .quot_offset = 0,
+ .quot_scale = 1,
+ .quot_adjust = 0,
+ .quot_offset_scale = 5,
+ .quot_offset_adjust = 0,
+ },
+ },
+};
+
+static const struct cpr_desc ipq9574_cpr_desc = {
+ .cpr_type = CTRL_TYPE_CPR4,
+ .num_threads = 1,
+ .apm_threshold = 850000,
+ .apm_crossover = 880000,
+ .apm_hysteresis = 0,
+ .cpr_base_voltage = 700000,
+ .cpr_max_voltage = 1100000,
+ .timer_delay_us = 5000,
+ .timer_cons_up = 0,
+ .timer_cons_down = 0,
+ .up_threshold = 2,
+ .down_threshold = 2,
+ .idle_clocks = 15,
+ .count_mode = CPR3_CPR_CTL_COUNT_MODE_ALL_AT_ONCE_MIN,
+ .count_repeat = 1,
+ .gcnt_us = 1,
+ .vreg_step_fixed = 12500,
+ .vreg_step_up_limit = 1,
+ .vreg_step_down_limit = 1,
+ .vdd_settle_time_us = 34,
+ .corner_settle_time_us = 6,
+ .reduce_to_corner_uV = true,
+ .hw_closed_loop_en = false,
+ .threads = (const struct cpr_thread_desc *[]) {
+ &ipq9574_thread_silver,
+ },
+};
+
+static const struct cpr_acc_desc ipq9574_cpr_acc_desc = {
+ .cpr_desc = &ipq9574_cpr_desc,
+};
+
static const int sdm630_gold_scaling_factor[][CPR3_RO_COUNT] = {
/* Same RO factors for all fuse corners */
{
@@ -2828,6 +2964,7 @@ static void cpr_remove(struct platform_device *pdev)
}
static const struct of_device_id cpr3_match_table[] = {
+ { .compatible = "qcom,ipq9574-cprh", .data = &ipq9574_cpr_acc_desc },
{ .compatible = "qcom,msm8998-cprh", .data = &msm8998_cpr_acc_desc },
{ .compatible = "qcom,sdm630-cprh", .data = &sdm630_cpr_acc_desc },
{ }
--
2.34.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* [PATCH v1 7/7] dts: arm64: qcom: ipq9574: Enable CPR
2024-06-20 8:14 [PATCH v1 0/7] Enable CPR for IPQ9574 Varadarajan Narayanan
` (5 preceding siblings ...)
2024-06-20 8:14 ` [PATCH v1 6/7] soc: qcom: cpr3: Add IPQ9574 definitions Varadarajan Narayanan
@ 2024-06-20 8:14 ` Varadarajan Narayanan
2024-06-20 15:16 ` Dmitry Baryshkov
2024-06-20 15:55 ` [PATCH v1 0/7] Enable CPR for IPQ9574 Konrad Dybcio
7 siblings, 1 reply; 19+ messages in thread
From: Varadarajan Narayanan @ 2024-06-20 8:14 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, angelogioacchino.delregno, andersson,
konrad.dybcio, mturquette, sboyd, ulf.hansson, quic_sibis,
quic_rjendra, luca, abel.vesa, quic_varada, quic_rohiagar, danila,
otto.pflueger, linux-arm-msm, devicetree, linux-kernel, linux-clk,
linux-pm
Add CPR, RPMPD, OPP table nodes as applicable to IPQ9574 to
enable CPR functionality on IPQ9574.
Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
---
arch/arm64/boot/dts/qcom/ipq9574.dtsi | 269 ++++++++++++++++++++++++--
1 file changed, 252 insertions(+), 17 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/ipq9574.dtsi b/arch/arm64/boot/dts/qcom/ipq9574.dtsi
index 04ba09a9156c..439ee5accc47 100644
--- a/arch/arm64/boot/dts/qcom/ipq9574.dtsi
+++ b/arch/arm64/boot/dts/qcom/ipq9574.dtsi
@@ -11,6 +11,7 @@
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/reset/qcom,ipq9574-gcc.h>
#include <dt-bindings/thermal/thermal.h>
+#include <dt-bindings/power/qcom-rpmpd.h>
/ {
interrupt-parent = <&intc>;
@@ -42,8 +43,9 @@ CPU0: cpu@0 {
clocks = <&apcs_glb APCS_ALIAS0_CORE_CLK>;
clock-names = "cpu";
operating-points-v2 = <&cpu_opp_table>;
- cpu-supply = <&ipq9574_s1>;
#cooling-cells = <2>;
+ power-domains = <&apc_cprh 0>;
+ power-domain-names = "perf";
};
CPU1: cpu@1 {
@@ -55,8 +57,9 @@ CPU1: cpu@1 {
clocks = <&apcs_glb APCS_ALIAS0_CORE_CLK>;
clock-names = "cpu";
operating-points-v2 = <&cpu_opp_table>;
- cpu-supply = <&ipq9574_s1>;
#cooling-cells = <2>;
+ power-domains = <&apc_cprh 0>;
+ power-domain-names = "perf";
};
CPU2: cpu@2 {
@@ -68,8 +71,9 @@ CPU2: cpu@2 {
clocks = <&apcs_glb APCS_ALIAS0_CORE_CLK>;
clock-names = "cpu";
operating-points-v2 = <&cpu_opp_table>;
- cpu-supply = <&ipq9574_s1>;
#cooling-cells = <2>;
+ power-domains = <&apc_cprh 0>;
+ power-domain-names = "perf";
};
CPU3: cpu@3 {
@@ -81,8 +85,9 @@ CPU3: cpu@3 {
clocks = <&apcs_glb APCS_ALIAS0_CORE_CLK>;
clock-names = "cpu";
operating-points-v2 = <&cpu_opp_table>;
- cpu-supply = <&ipq9574_s1>;
#cooling-cells = <2>;
+ power-domains = <&apc_cprh 0>;
+ power-domain-names = "perf";
};
L2_0: l2-cache {
@@ -105,58 +110,111 @@ memory@40000000 {
reg = <0x0 0x40000000 0x0 0x0>;
};
+ cprh_opp_table: opp-table-cprh {
+ compatible = "operating-points-v2-qcom-level";
+
+ cprh_opp0: opp-0 {
+ opp-level = <1>;
+ qcom,opp-fuse-level = <1>;
+ qcom,opp-cloop-vadj = <0>;
+ qcom,opp-oloop-vadj = <0>;
+ };
+
+ cprh_opp1: opp-1 {
+ opp-level = <2>;
+ qcom,opp-fuse-level = <1>;
+ qcom,opp-cloop-vadj = <0>;
+ qcom,opp-oloop-vadj = <0>;
+ };
+
+ cprh_opp2: opp-2 {
+ opp-level = <3>;
+ qcom,opp-fuse-level = <1>;
+ qcom,opp-cloop-vadj = <0>;
+ qcom,opp-oloop-vadj = <0>;
+ };
+
+ cprh_opp3: opp-3 {
+ opp-level = <4>;
+ qcom,opp-fuse-level = <2>;
+ qcom,opp-cloop-vadj = <0>;
+ qcom,opp-oloop-vadj = <0>;
+ };
+
+ cprh_opp4: opp-4 {
+ opp-level = <5>;
+ qcom,opp-fuse-level = <2>;
+ qcom,opp-cloop-vadj = <0>;
+ qcom,opp-oloop-vadj = <0>;
+ };
+
+ cprh_opp5: opp-5 {
+ opp-level = <6>;
+ qcom,opp-fuse-level = <3>;
+ qcom,opp-cloop-vadj = <0>;
+ qcom,opp-oloop-vadj = <0>;
+ };
+
+ cprh_opp6: opp-6 {
+ opp-level = <7>;
+ qcom,opp-fuse-level = <4>;
+ qcom,opp-cloop-vadj = <0>;
+ qcom,opp-oloop-vadj = <0>;
+ };
+ };
+
cpu_opp_table: opp-table-cpu {
compatible = "operating-points-v2-kryo-cpu";
opp-shared;
nvmem-cells = <&cpu_speed_bin>;
+ opp-792000000 {
+ opp-hz = /bits/ 64 <792000000>;
+ opp-supported-hw = <0x0>;
+ clock-latency-ns = <200000>;
+ required-opps = <&cprh_opp0>;
+ };
+
opp-936000000 {
opp-hz = /bits/ 64 <936000000>;
- opp-microvolt = <725000>;
opp-supported-hw = <0xf>;
clock-latency-ns = <200000>;
+ required-opps = <&cprh_opp1>;
};
opp-1104000000 {
opp-hz = /bits/ 64 <1104000000>;
- opp-microvolt = <787500>;
- opp-supported-hw = <0xf>;
- clock-latency-ns = <200000>;
- };
-
- opp-1200000000 {
- opp-hz = /bits/ 64 <1200000000>;
- opp-microvolt = <862500>;
opp-supported-hw = <0xf>;
clock-latency-ns = <200000>;
+ required-opps = <&cprh_opp2>;
};
opp-1416000000 {
opp-hz = /bits/ 64 <1416000000>;
- opp-microvolt = <862500>;
opp-supported-hw = <0x7>;
clock-latency-ns = <200000>;
+ required-opps = <&cprh_opp3>;
};
opp-1488000000 {
opp-hz = /bits/ 64 <1488000000>;
- opp-microvolt = <925000>;
opp-supported-hw = <0x7>;
clock-latency-ns = <200000>;
+ required-opps = <&cprh_opp4>;
};
opp-1800000000 {
opp-hz = /bits/ 64 <1800000000>;
- opp-microvolt = <987500>;
opp-supported-hw = <0x5>;
clock-latency-ns = <200000>;
+ required-opps = <&cprh_opp5>;
};
opp-2208000000 {
opp-hz = /bits/ 64 <2208000000>;
- opp-microvolt = <1062500>;
opp-supported-hw = <0x1>;
clock-latency-ns = <200000>;
+ required-opps = <&cprh_opp6>;
};
};
@@ -182,6 +240,40 @@ glink-edge {
rpm_requests: rpm-requests {
compatible = "qcom,rpm-ipq9574";
qcom,glink-channels = "rpm_requests";
+
+ rpmpd: power-controller {
+ compatible = "qcom,ipq9574-rpmpd";
+ #power-domain-cells = <1>;
+ operating-points-v2 = <&rpmpd_opp_table>;
+
+ rpmpd_opp_table: opp-table {
+ compatible = "operating-points-v2";
+
+ rpmpd_opp_svs: opp1 {
+ opp-level = <RPM_SMD_LEVEL_SVS>;
+ };
+
+ rpmpd_opp_svs_plus: opp2 {
+ opp-level = <RPM_SMD_LEVEL_SVS_PLUS>;
+ };
+
+ rpmpd_opp_nom: opp3 {
+ opp-level = <RPM_SMD_LEVEL_NOM>;
+ };
+
+ rpmpd_opp_nom_plus: opp4 {
+ opp-level = <RPM_SMD_LEVEL_NOM_PLUS>;
+ };
+
+ rpmpd_opp_turbo: opp5 {
+ opp-level = <RPM_SMD_LEVEL_TURBO>;
+ };
+
+ rpmpd_opp_turbo_high: opp6 {
+ opp-level = <RPM_SMD_LEVEL_TURBO_HIGH>;
+ };
+ };
+ };
};
};
};
@@ -252,6 +344,95 @@ cpu_speed_bin: cpu-speed-bin@15 {
reg = <0x15 0x2>;
bits = <7 2>;
};
+
+ cpr_efuse_speedbin: speedbin@5 {
+ reg = <0x5 0x8>;
+ bits = <0 3>;
+ };
+
+ cpr_fuse_revision: cpr-fusing-rev@7 {
+ reg = <0x7 0x8>;
+ bits = <1 5>;
+ };
+
+ /* CPR Ring Oscillator: Power Cluster */
+ cpr_ro_sel0_pwrcl: rosel0-pwrcl@358 { /* ROSEL_SVS */
+ reg = <0x358 0x1>;
+ bits = <4 4>;
+ };
+
+ cpr_ro_sel1_pwrcl: rosel1-pwrcl@358 { /* ROSEL_NOM */
+ reg = <0x358 0x1>;
+ bits = <0 4>;
+ };
+
+ cpr_ro_sel2_pwrcl: rosel2-pwrcl@350 { /* ROSEL_TUR */
+ reg = <0x350 0x1>;
+ bits = <4 4>;
+ };
+
+ cpr_ro_sel3_pwrcl: rosel3-pwrcl@350 { /* ROSEL_STUR */
+ reg = <0x350 0x1>;
+ bits = <0 4>;
+ };
+
+ /* CPR Init Voltage: Power Cluster */
+ cpr_init_voltage0_pwrcl: ivolt0-pwrcl@343 { /* VOLT_SVS */
+ reg = <0x343 0x1>;
+ bits = <0 6>;
+ };
+
+ cpr_init_voltage1_pwrcl: ivolt1-pwrcl@342 { /* VOLT_NOM */
+ reg = <0x342 0x1>;
+ bits = <2 6>;
+ };
+
+ cpr_init_voltage2_pwrcl: ivolt2-pwrcl@341 { /* VOLT_TUR */
+ reg = <0x341 0x2>;
+ bits = <4 6>;
+ };
+
+ cpr_init_voltage3_pwrcl: ivolt3-pwrcl@340 { /* VOLT_STUR */
+ reg = <0x340 0x2>;
+ bits = <6 6>;
+ };
+
+ /* CPR Target Quotients: Power Cluster */
+ cpr_quot0_pwrcl: quot0-pwrcl@354 { /* QUOT_VMIN_SVS */
+ reg = <0x354 0x2>;
+ bits = <0 12>;
+ };
+
+ cpr_quot1_pwrcl: quot1-pwrcl@352 { /* QUOT_VMIN_NOM */
+ reg = <0x352 0x2>;
+ bits = <4 12>;
+ };
+
+ cpr_quot2_pwrcl: quot2-pwrcl@351 { /* QUOT_VMIN_TUR */
+ reg = <0x351 0x2>;
+ bits = <0 12>;
+ };
+
+ cpr_quot3_pwrcl: quot3-pwrcl@355 { /* QUOT_VMIN_STUR */
+ reg = <0x355 0x2>;
+ bits = <4 12>;
+ };
+
+ /* CPR Quotient Offsets: Power Cluster */
+ cpr_quot_offset1_pwrcl: qoff1-pwrcl@34e { /* QUOT_OFFSET_NOM_SVS */
+ reg = <0x34e 0x1>;
+ bits = <0 8>;
+ };
+
+ cpr_quot_offset2_pwrcl: qoff2-pwrcl@34d { /* QUOT_OFFSET_TUR_NOM */
+ reg = <0x34d 0x1>;
+ bits = <0 8>;
+ };
+
+ cpr_quot_offset3_pwrcl: qoff0-pwrcl@34c { /* QUOT_OFFSET_STUR_TUR */
+ reg = <0x34c 0x1>;
+ bits = <0 8>;
+ };
};
cryptobam: dma-controller@704000 {
@@ -639,6 +820,60 @@ usb_0_dwc3: usb@8a00000 {
};
};
+ apc_cprh: power-controller@b018000 {
+ compatible = "qcom,ipq9574-cprh", "qcom,cprh";
+ reg = <0x0b018000 0x4000>,
+ <0x00048000 0x4000>;
+
+ clocks = <&gcc GCC_RBCPR_CLK>;
+
+ interrupts = <GIC_SPI 15 IRQ_TYPE_EDGE_RISING>;
+ vdd-supply = <&ipq9574_s1>;
+
+ /* Set the CPR clock here, it needs to match XO */
+ assigned-clocks = <&gcc GCC_RBCPR_CLK>;
+ assigned-clock-rates = <24000000>;
+
+ operating-points-v2 = <&cprh_opp_table>;
+ power-domains = <&rpmpd IPQ9574_VDDAPC>;
+ #power-domain-cells = <1>;
+
+ nvmem-cells = <&cpr_efuse_speedbin>,
+ <&cpr_fuse_revision>,
+ <&cpr_quot0_pwrcl>,
+ <&cpr_quot1_pwrcl>,
+ <&cpr_quot2_pwrcl>,
+ <&cpr_quot3_pwrcl>,
+ <&cpr_quot_offset1_pwrcl>,
+ <&cpr_quot_offset2_pwrcl>,
+ <&cpr_quot_offset3_pwrcl>,
+ <&cpr_init_voltage0_pwrcl>,
+ <&cpr_init_voltage1_pwrcl>,
+ <&cpr_init_voltage2_pwrcl>,
+ <&cpr_init_voltage3_pwrcl>,
+ <&cpr_ro_sel0_pwrcl>,
+ <&cpr_ro_sel1_pwrcl>,
+ <&cpr_ro_sel2_pwrcl>,
+ <&cpr_ro_sel3_pwrcl>;
+ nvmem-cell-names = "cpr_speed_bin",
+ "cpr_fuse_revision",
+ "cpr0_quotient1",
+ "cpr0_quotient2",
+ "cpr0_quotient3",
+ "cpr0_quotient4",
+ "cpr0_quotient_offset2",
+ "cpr0_quotient_offset3",
+ "cpr0_quotient_offset4",
+ "cpr0_init_voltage1",
+ "cpr0_init_voltage2",
+ "cpr0_init_voltage3",
+ "cpr0_init_voltage4",
+ "cpr0_ring_osc1",
+ "cpr0_ring_osc2",
+ "cpr0_ring_osc3",
+ "cpr0_ring_osc4";
+ };
+
intc: interrupt-controller@b000000 {
compatible = "qcom,msm-qgic2";
reg = <0x0b000000 0x1000>, /* GICD */
--
2.34.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* Re: [PATCH v1 7/7] dts: arm64: qcom: ipq9574: Enable CPR
2024-06-20 8:14 ` [PATCH v1 7/7] dts: arm64: qcom: ipq9574: Enable CPR Varadarajan Narayanan
@ 2024-06-20 15:16 ` Dmitry Baryshkov
0 siblings, 0 replies; 19+ messages in thread
From: Dmitry Baryshkov @ 2024-06-20 15:16 UTC (permalink / raw)
To: Varadarajan Narayanan
Cc: robh, krzk+dt, conor+dt, angelogioacchino.delregno, andersson,
konrad.dybcio, mturquette, sboyd, ulf.hansson, quic_sibis,
quic_rjendra, luca, abel.vesa, quic_rohiagar, danila,
otto.pflueger, linux-arm-msm, devicetree, linux-kernel, linux-clk,
linux-pm
On Thu, Jun 20, 2024 at 01:44:27PM GMT, Varadarajan Narayanan wrote:
> Add CPR, RPMPD, OPP table nodes as applicable to IPQ9574 to
> enable CPR functionality on IPQ9574.
Please document your CPU opp table changes in the commit message. You
have added 792 MHz, dropped 1200 MHz. At least we need to know what's
going on.
>
> Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
> ---
> arch/arm64/boot/dts/qcom/ipq9574.dtsi | 269 ++++++++++++++++++++++++--
> 1 file changed, 252 insertions(+), 17 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/qcom/ipq9574.dtsi b/arch/arm64/boot/dts/qcom/ipq9574.dtsi
> index 04ba09a9156c..439ee5accc47 100644
> --- a/arch/arm64/boot/dts/qcom/ipq9574.dtsi
> +++ b/arch/arm64/boot/dts/qcom/ipq9574.dtsi
> @@ -11,6 +11,7 @@
> #include <dt-bindings/interrupt-controller/arm-gic.h>
> #include <dt-bindings/reset/qcom,ipq9574-gcc.h>
> #include <dt-bindings/thermal/thermal.h>
> +#include <dt-bindings/power/qcom-rpmpd.h>
>
> / {
> interrupt-parent = <&intc>;
> @@ -42,8 +43,9 @@ CPU0: cpu@0 {
> clocks = <&apcs_glb APCS_ALIAS0_CORE_CLK>;
> clock-names = "cpu";
> operating-points-v2 = <&cpu_opp_table>;
> - cpu-supply = <&ipq9574_s1>;
> #cooling-cells = <2>;
> + power-domains = <&apc_cprh 0>;
> + power-domain-names = "perf";
> };
>
> CPU1: cpu@1 {
> @@ -55,8 +57,9 @@ CPU1: cpu@1 {
> clocks = <&apcs_glb APCS_ALIAS0_CORE_CLK>;
> clock-names = "cpu";
> operating-points-v2 = <&cpu_opp_table>;
> - cpu-supply = <&ipq9574_s1>;
> #cooling-cells = <2>;
> + power-domains = <&apc_cprh 0>;
> + power-domain-names = "perf";
> };
>
> CPU2: cpu@2 {
> @@ -68,8 +71,9 @@ CPU2: cpu@2 {
> clocks = <&apcs_glb APCS_ALIAS0_CORE_CLK>;
> clock-names = "cpu";
> operating-points-v2 = <&cpu_opp_table>;
> - cpu-supply = <&ipq9574_s1>;
> #cooling-cells = <2>;
> + power-domains = <&apc_cprh 0>;
> + power-domain-names = "perf";
> };
>
> CPU3: cpu@3 {
> @@ -81,8 +85,9 @@ CPU3: cpu@3 {
> clocks = <&apcs_glb APCS_ALIAS0_CORE_CLK>;
> clock-names = "cpu";
> operating-points-v2 = <&cpu_opp_table>;
> - cpu-supply = <&ipq9574_s1>;
> #cooling-cells = <2>;
> + power-domains = <&apc_cprh 0>;
> + power-domain-names = "perf";
> };
>
> L2_0: l2-cache {
> @@ -105,58 +110,111 @@ memory@40000000 {
> reg = <0x0 0x40000000 0x0 0x0>;
> };
>
> + cprh_opp_table: opp-table-cprh {
> + compatible = "operating-points-v2-qcom-level";
> +
> + cprh_opp0: opp-0 {
> + opp-level = <1>;
> + qcom,opp-fuse-level = <1>;
> + qcom,opp-cloop-vadj = <0>;
> + qcom,opp-oloop-vadj = <0>;
> + };
> +
> + cprh_opp1: opp-1 {
> + opp-level = <2>;
> + qcom,opp-fuse-level = <1>;
> + qcom,opp-cloop-vadj = <0>;
> + qcom,opp-oloop-vadj = <0>;
> + };
> +
> + cprh_opp2: opp-2 {
> + opp-level = <3>;
> + qcom,opp-fuse-level = <1>;
> + qcom,opp-cloop-vadj = <0>;
> + qcom,opp-oloop-vadj = <0>;
> + };
> +
> + cprh_opp3: opp-3 {
> + opp-level = <4>;
> + qcom,opp-fuse-level = <2>;
> + qcom,opp-cloop-vadj = <0>;
> + qcom,opp-oloop-vadj = <0>;
> + };
> +
> + cprh_opp4: opp-4 {
> + opp-level = <5>;
> + qcom,opp-fuse-level = <2>;
> + qcom,opp-cloop-vadj = <0>;
> + qcom,opp-oloop-vadj = <0>;
> + };
> +
> + cprh_opp5: opp-5 {
> + opp-level = <6>;
> + qcom,opp-fuse-level = <3>;
> + qcom,opp-cloop-vadj = <0>;
> + qcom,opp-oloop-vadj = <0>;
> + };
> +
> + cprh_opp6: opp-6 {
> + opp-level = <7>;
> + qcom,opp-fuse-level = <4>;
> + qcom,opp-cloop-vadj = <0>;
> + qcom,opp-oloop-vadj = <0>;
> + };
> + };
> +
> cpu_opp_table: opp-table-cpu {
> compatible = "operating-points-v2-kryo-cpu";
> opp-shared;
> nvmem-cells = <&cpu_speed_bin>;
>
> + opp-792000000 {
> + opp-hz = /bits/ 64 <792000000>;
> + opp-supported-hw = <0x0>;
> + clock-latency-ns = <200000>;
> + required-opps = <&cprh_opp0>;
> + };
> +
> opp-936000000 {
> opp-hz = /bits/ 64 <936000000>;
> - opp-microvolt = <725000>;
> opp-supported-hw = <0xf>;
> clock-latency-ns = <200000>;
> + required-opps = <&cprh_opp1>;
> };
>
> opp-1104000000 {
> opp-hz = /bits/ 64 <1104000000>;
> - opp-microvolt = <787500>;
> - opp-supported-hw = <0xf>;
> - clock-latency-ns = <200000>;
> - };
> -
> - opp-1200000000 {
> - opp-hz = /bits/ 64 <1200000000>;
> - opp-microvolt = <862500>;
> opp-supported-hw = <0xf>;
> clock-latency-ns = <200000>;
> + required-opps = <&cprh_opp2>;
> };
>
> opp-1416000000 {
> opp-hz = /bits/ 64 <1416000000>;
> - opp-microvolt = <862500>;
> opp-supported-hw = <0x7>;
> clock-latency-ns = <200000>;
> + required-opps = <&cprh_opp3>;
> };
>
> opp-1488000000 {
> opp-hz = /bits/ 64 <1488000000>;
> - opp-microvolt = <925000>;
> opp-supported-hw = <0x7>;
> clock-latency-ns = <200000>;
> + required-opps = <&cprh_opp4>;
> };
>
> opp-1800000000 {
> opp-hz = /bits/ 64 <1800000000>;
> - opp-microvolt = <987500>;
> opp-supported-hw = <0x5>;
> clock-latency-ns = <200000>;
> + required-opps = <&cprh_opp5>;
> };
>
> opp-2208000000 {
> opp-hz = /bits/ 64 <2208000000>;
> - opp-microvolt = <1062500>;
> opp-supported-hw = <0x1>;
> clock-latency-ns = <200000>;
> + required-opps = <&cprh_opp6>;
> };
> };
>
> @@ -182,6 +240,40 @@ glink-edge {
> rpm_requests: rpm-requests {
> compatible = "qcom,rpm-ipq9574";
> qcom,glink-channels = "rpm_requests";
> +
> + rpmpd: power-controller {
> + compatible = "qcom,ipq9574-rpmpd";
> + #power-domain-cells = <1>;
> + operating-points-v2 = <&rpmpd_opp_table>;
> +
> + rpmpd_opp_table: opp-table {
> + compatible = "operating-points-v2";
> +
> + rpmpd_opp_svs: opp1 {
Where are these nodes going to be used?
> + opp-level = <RPM_SMD_LEVEL_SVS>;
> + };
> +
> + rpmpd_opp_svs_plus: opp2 {
> + opp-level = <RPM_SMD_LEVEL_SVS_PLUS>;
> + };
> +
> + rpmpd_opp_nom: opp3 {
> + opp-level = <RPM_SMD_LEVEL_NOM>;
> + };
> +
> + rpmpd_opp_nom_plus: opp4 {
> + opp-level = <RPM_SMD_LEVEL_NOM_PLUS>;
> + };
> +
> + rpmpd_opp_turbo: opp5 {
> + opp-level = <RPM_SMD_LEVEL_TURBO>;
> + };
> +
> + rpmpd_opp_turbo_high: opp6 {
> + opp-level = <RPM_SMD_LEVEL_TURBO_HIGH>;
> + };
> + };
> + };
> };
> };
> };
> @@ -252,6 +344,95 @@ cpu_speed_bin: cpu-speed-bin@15 {
> reg = <0x15 0x2>;
> bits = <7 2>;
> };
> +
> + cpr_efuse_speedbin: speedbin@5 {
> + reg = <0x5 0x8>;
> + bits = <0 3>;
> + };
> +
> + cpr_fuse_revision: cpr-fusing-rev@7 {
> + reg = <0x7 0x8>;
> + bits = <1 5>;
> + };
> +
> + /* CPR Ring Oscillator: Power Cluster */
> + cpr_ro_sel0_pwrcl: rosel0-pwrcl@358 { /* ROSEL_SVS */
> + reg = <0x358 0x1>;
> + bits = <4 4>;
> + };
> +
> + cpr_ro_sel1_pwrcl: rosel1-pwrcl@358 { /* ROSEL_NOM */
> + reg = <0x358 0x1>;
> + bits = <0 4>;
> + };
> +
> + cpr_ro_sel2_pwrcl: rosel2-pwrcl@350 { /* ROSEL_TUR */
> + reg = <0x350 0x1>;
> + bits = <4 4>;
> + };
> +
> + cpr_ro_sel3_pwrcl: rosel3-pwrcl@350 { /* ROSEL_STUR */
> + reg = <0x350 0x1>;
> + bits = <0 4>;
> + };
> +
> + /* CPR Init Voltage: Power Cluster */
> + cpr_init_voltage0_pwrcl: ivolt0-pwrcl@343 { /* VOLT_SVS */
> + reg = <0x343 0x1>;
> + bits = <0 6>;
> + };
> +
> + cpr_init_voltage1_pwrcl: ivolt1-pwrcl@342 { /* VOLT_NOM */
> + reg = <0x342 0x1>;
> + bits = <2 6>;
> + };
> +
> + cpr_init_voltage2_pwrcl: ivolt2-pwrcl@341 { /* VOLT_TUR */
> + reg = <0x341 0x2>;
> + bits = <4 6>;
> + };
> +
> + cpr_init_voltage3_pwrcl: ivolt3-pwrcl@340 { /* VOLT_STUR */
> + reg = <0x340 0x2>;
> + bits = <6 6>;
> + };
> +
> + /* CPR Target Quotients: Power Cluster */
> + cpr_quot0_pwrcl: quot0-pwrcl@354 { /* QUOT_VMIN_SVS */
> + reg = <0x354 0x2>;
> + bits = <0 12>;
> + };
> +
> + cpr_quot1_pwrcl: quot1-pwrcl@352 { /* QUOT_VMIN_NOM */
> + reg = <0x352 0x2>;
> + bits = <4 12>;
> + };
> +
> + cpr_quot2_pwrcl: quot2-pwrcl@351 { /* QUOT_VMIN_TUR */
> + reg = <0x351 0x2>;
> + bits = <0 12>;
> + };
> +
> + cpr_quot3_pwrcl: quot3-pwrcl@355 { /* QUOT_VMIN_STUR */
> + reg = <0x355 0x2>;
> + bits = <4 12>;
> + };
> +
> + /* CPR Quotient Offsets: Power Cluster */
> + cpr_quot_offset1_pwrcl: qoff1-pwrcl@34e { /* QUOT_OFFSET_NOM_SVS */
> + reg = <0x34e 0x1>;
> + bits = <0 8>;
> + };
> +
> + cpr_quot_offset2_pwrcl: qoff2-pwrcl@34d { /* QUOT_OFFSET_TUR_NOM */
> + reg = <0x34d 0x1>;
> + bits = <0 8>;
> + };
> +
> + cpr_quot_offset3_pwrcl: qoff0-pwrcl@34c { /* QUOT_OFFSET_STUR_TUR */
> + reg = <0x34c 0x1>;
> + bits = <0 8>;
> + };
> };
>
> cryptobam: dma-controller@704000 {
> @@ -639,6 +820,60 @@ usb_0_dwc3: usb@8a00000 {
> };
> };
>
> + apc_cprh: power-controller@b018000 {
> + compatible = "qcom,ipq9574-cprh", "qcom,cprh";
> + reg = <0x0b018000 0x4000>,
> + <0x00048000 0x4000>;
> +
> + clocks = <&gcc GCC_RBCPR_CLK>;
> +
> + interrupts = <GIC_SPI 15 IRQ_TYPE_EDGE_RISING>;
> + vdd-supply = <&ipq9574_s1>;
> +
> + /* Set the CPR clock here, it needs to match XO */
> + assigned-clocks = <&gcc GCC_RBCPR_CLK>;
> + assigned-clock-rates = <24000000>;
> +
> + operating-points-v2 = <&cprh_opp_table>;
> + power-domains = <&rpmpd IPQ9574_VDDAPC>;
> + #power-domain-cells = <1>;
> +
> + nvmem-cells = <&cpr_efuse_speedbin>,
> + <&cpr_fuse_revision>,
> + <&cpr_quot0_pwrcl>,
> + <&cpr_quot1_pwrcl>,
> + <&cpr_quot2_pwrcl>,
> + <&cpr_quot3_pwrcl>,
> + <&cpr_quot_offset1_pwrcl>,
> + <&cpr_quot_offset2_pwrcl>,
> + <&cpr_quot_offset3_pwrcl>,
> + <&cpr_init_voltage0_pwrcl>,
> + <&cpr_init_voltage1_pwrcl>,
> + <&cpr_init_voltage2_pwrcl>,
> + <&cpr_init_voltage3_pwrcl>,
> + <&cpr_ro_sel0_pwrcl>,
> + <&cpr_ro_sel1_pwrcl>,
> + <&cpr_ro_sel2_pwrcl>,
> + <&cpr_ro_sel3_pwrcl>;
> + nvmem-cell-names = "cpr_speed_bin",
> + "cpr_fuse_revision",
> + "cpr0_quotient1",
> + "cpr0_quotient2",
> + "cpr0_quotient3",
> + "cpr0_quotient4",
> + "cpr0_quotient_offset2",
> + "cpr0_quotient_offset3",
> + "cpr0_quotient_offset4",
> + "cpr0_init_voltage1",
> + "cpr0_init_voltage2",
> + "cpr0_init_voltage3",
> + "cpr0_init_voltage4",
> + "cpr0_ring_osc1",
> + "cpr0_ring_osc2",
> + "cpr0_ring_osc3",
> + "cpr0_ring_osc4";
> + };
> +
> intc: interrupt-controller@b000000 {
> compatible = "qcom,msm-qgic2";
> reg = <0x0b000000 0x1000>, /* GICD */
> --
> 2.34.1
>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v1 0/7] Enable CPR for IPQ9574
2024-06-20 8:14 [PATCH v1 0/7] Enable CPR for IPQ9574 Varadarajan Narayanan
` (6 preceding siblings ...)
2024-06-20 8:14 ` [PATCH v1 7/7] dts: arm64: qcom: ipq9574: Enable CPR Varadarajan Narayanan
@ 2024-06-20 15:55 ` Konrad Dybcio
7 siblings, 0 replies; 19+ messages in thread
From: Konrad Dybcio @ 2024-06-20 15:55 UTC (permalink / raw)
To: Varadarajan Narayanan, robh, krzk+dt, conor+dt,
angelogioacchino.delregno, andersson, mturquette, sboyd,
ulf.hansson, quic_sibis, quic_rjendra, luca, abel.vesa,
quic_rohiagar, danila, otto.pflueger, linux-arm-msm, devicetree,
linux-kernel, linux-clk, linux-pm
On 6/20/24 10:14, Varadarajan Narayanan wrote:
> This series tries to enable CPR on IPQ9574, that implements
> CPRv4. Since [1] is older, faced few minor issues. Those are
> addressed in [2].
Thanks Varadarajan, should things go well I'll resend CPR3 next
week and then review this.
Konrad
^ permalink raw reply [flat|nested] 19+ messages in thread