2020-06-23 22:51:40

by Konrad Dybcio

[permalink] [raw]
Subject: [PATCH v2 04/12] arm64: dts: qcom: msm8994: Add support for SMD RPM

Add support for SMD RPM, including pm8994 and pmi8994
regulators.

Signed-off-by: Konrad Dybcio <[email protected]>
---
arch/arm64/boot/dts/qcom/msm8994.dtsi | 111 ++++++++++++++++++++++++++
1 file changed, 111 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/msm8994.dtsi b/arch/arm64/boot/dts/qcom/msm8994.dtsi
index e7f4b06eb12c..a4edc3be7024 100644
--- a/arch/arm64/boot/dts/qcom/msm8994.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8994.dtsi
@@ -159,9 +159,100 @@ smem_mem: smem_region@6a00000 {
};
};

+ smd {
+ compatible = "qcom,smd";
+ rpm {
+ interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
+ qcom,ipc = <&apcs 8 0>;
+ qcom,smd-edge = <15>;
+ qcom,local-pid = <0>;
+ qcom,remote-pid = <6>;
+
+ rpm-requests {
+ compatible = "qcom,rpm-msm8994";
+ qcom,smd-channels = "rpm_requests";
+
+ rpmcc: rpmcc {
+ compatible = "qcom,rpmcc-msm8994";
+ #clock-cells = <1>;
+ };
+
+ pm8994_regulators: pm8994-regulators {
+ compatible = "qcom,rpm-pm8994-regulators";
+ vdd_l1-supply = <&pm8994_s1>;
+ vdd_l2_26_28-supply = <&pm8994_s3>;
+ vdd_l3_11-supply = <&pm8994_s3>;
+ vdd_l4_27_31-supply = <&pm8994_s3>;
+ vdd_l5_7-supply = <&pm8994_s3>;
+ vdd_l6_12_32-supply = <&pm8994_s5>;
+ vdd_l8_16_30-supply = <&vreg_vph_pwr>;
+ vdd_l9_10_18_22-supply = <&vreg_vph_pwr>;
+ vdd_l13_19_23_24-supply = <&vreg_vph_pwr>;
+ vdd_l14_15-supply = <&pm8994_s5>;
+ vdd_l17_29-supply = <&vreg_vph_pwr>;
+ vdd_l20_21-supply = <&vreg_vph_pwr>;
+ vdd_l25-supply = <&pm8994_s5>;
+ vdd_lvs1_2 = <&pm8994_s4>;
+
+ pm8994_s1: s1 {};
+ pm8994_s2: s2 {};
+ pm8994_s3: s3 {};
+ pm8994_s4: s4 {};
+ pm8994_s5: s5 {};
+ pm8994_s6: s6 {};
+ pm8994_s7: s7 {};
+
+ pm8994_l1: l1 {};
+ pm8994_l2: l2 {};
+ pm8994_l3: l3 {};
+ pm8994_l4: l4 {};
+ pm8994_l6: l6 {};
+ pm8994_l8: l8 {};
+ pm8994_l9: l9 {};
+ pm8994_l10: l10 {};
+ pm8994_l11: l11 {};
+ pm8994_l12: l12 {};
+ pm8994_l13: l13 {};
+ pm8994_l14: l14 {};
+ pm8994_l15: l15 {};
+ pm8994_l16: l16 {};
+ pm8994_l17: l17 {};
+ pm8994_l18: l18 {};
+ pm8994_l19: l19 {};
+ pm8994_l20: l20 {};
+ pm8994_l21: l21 {};
+ pm8994_l22: l22 {};
+ pm8994_l23: l23 {};
+ pm8994_l24: l24 {};
+ pm8994_l25: l25 {};
+ pm8994_l26: l26 {};
+ pm8994_l27: l27 {};
+ pm8994_l28: l28 {};
+ pm8994_l29: l29 {};
+ pm8994_l30: l30 {};
+ pm8994_l31: l31 {};
+ pm8994_l32: l32 {};
+
+ pm8994_lvs1: lvs1 {};
+ pm8994_lvs2: lvs2 {};
+ };
+
+ pmi8994_regulators: pmi8994-regulators {
+ compatible = "qcom,rpm-pmi8994-regulators";
+
+ pmi8994_s1: s1 {};
+ pmi8994_s2: s2 {};
+ pmi8994_s3: s3 {};
+ pmi8994_bby: boost-bypass {};
+ };
+ };
+ };
+ };
+
smem {
compatible = "qcom,smem";
memory-region = <&smem_mem>;
+ qcom,rpm-msg-ram = <&rpm_msg_ram>;
hwlocks = <&tcsr_mutex 3>;
};

@@ -180,6 +271,11 @@ intc: interrupt-controller@f9000000 {
<0xf9002000 0x1000>;
};

+ apcs: syscon@f900d000 {
+ compatible = "syscon";
+ reg = <0xf900d000 0x2000>;
+ };
+
timer@f9020000 {
#address-cells = <1>;
#size-cells = <1>;
@@ -256,6 +352,11 @@ gcc: clock-controller@fc400000 {
reg = <0xfc400000 0x2000>;
};

+ rpm_msg_ram: memory@fc428000 {
+ compatible = "qcom,rpm-msg-ram";
+ reg = <0xfc428000 0x4000>;
+ };
+
restart@fc4ab000 {
compatible = "qcom,pshold";
reg = <0xfc4ab000 0x4>;
@@ -473,5 +574,15 @@ timer {
<1 4 0xff08>,
<1 1 0xff08>;
};
+
+ vreg_vph_pwr: vreg-vph-pwr {
+ compatible = "regulator-fixed";
+ regulator-name = "vph-pwr";
+
+ regulator-min-microvolt = <3600000>;
+ regulator-max-microvolt = <3600000>;
+
+ regulator-always-on;
+ };
};

--
2.27.0


2020-06-23 23:18:57

by Bjorn Andersson

[permalink] [raw]
Subject: Re: [PATCH v2 04/12] arm64: dts: qcom: msm8994: Add support for SMD RPM

On Tue 23 Jun 15:48 PDT 2020, Konrad Dybcio wrote:

> Add support for SMD RPM, including pm8994 and pmi8994
> regulators.
>
> Signed-off-by: Konrad Dybcio <[email protected]>
> ---
> arch/arm64/boot/dts/qcom/msm8994.dtsi | 111 ++++++++++++++++++++++++++
> 1 file changed, 111 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/msm8994.dtsi b/arch/arm64/boot/dts/qcom/msm8994.dtsi
> index e7f4b06eb12c..a4edc3be7024 100644
> --- a/arch/arm64/boot/dts/qcom/msm8994.dtsi
> +++ b/arch/arm64/boot/dts/qcom/msm8994.dtsi
> @@ -159,9 +159,100 @@ smem_mem: smem_region@6a00000 {
> };
> };
>
> + smd {
> + compatible = "qcom,smd";
> + rpm {
> + interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
> + qcom,ipc = <&apcs 8 0>;

Can you please extend qcom-apcs-ipc-mailbox and its binding to add
MSM8994 and use mboxes = <&apcs 0>; here instead?

I do see that while I added this support a few years ago I migrated some
of the remoteproc edges, but never any of the RPM ones. But it should
work...

> + qcom,smd-edge = <15>;
> + qcom,local-pid = <0>;
> + qcom,remote-pid = <6>;
> +
> + rpm-requests {
> + compatible = "qcom,rpm-msm8994";
> + qcom,smd-channels = "rpm_requests";
> +
> + rpmcc: rpmcc {
> + compatible = "qcom,rpmcc-msm8994";
> + #clock-cells = <1>;
> + };
> +
> + pm8994_regulators: pm8994-regulators {

We've learned from experience that PMICs, naming of regulators and their
routing are board specific (or at least OEM specific).

So please give rpm-requests a label and add pm8994-regulators and
pmi8994-regulators to it in the board (your case platform) dts(i).

Regards,
Bjorn

> + compatible = "qcom,rpm-pm8994-regulators";
> + vdd_l1-supply = <&pm8994_s1>;
> + vdd_l2_26_28-supply = <&pm8994_s3>;
> + vdd_l3_11-supply = <&pm8994_s3>;
> + vdd_l4_27_31-supply = <&pm8994_s3>;
> + vdd_l5_7-supply = <&pm8994_s3>;
> + vdd_l6_12_32-supply = <&pm8994_s5>;
> + vdd_l8_16_30-supply = <&vreg_vph_pwr>;
> + vdd_l9_10_18_22-supply = <&vreg_vph_pwr>;
> + vdd_l13_19_23_24-supply = <&vreg_vph_pwr>;
> + vdd_l14_15-supply = <&pm8994_s5>;
> + vdd_l17_29-supply = <&vreg_vph_pwr>;
> + vdd_l20_21-supply = <&vreg_vph_pwr>;
> + vdd_l25-supply = <&pm8994_s5>;
> + vdd_lvs1_2 = <&pm8994_s4>;
> +
> + pm8994_s1: s1 {};
> + pm8994_s2: s2 {};
> + pm8994_s3: s3 {};
> + pm8994_s4: s4 {};
> + pm8994_s5: s5 {};
> + pm8994_s6: s6 {};
> + pm8994_s7: s7 {};
> +
> + pm8994_l1: l1 {};
> + pm8994_l2: l2 {};
> + pm8994_l3: l3 {};
> + pm8994_l4: l4 {};
> + pm8994_l6: l6 {};
> + pm8994_l8: l8 {};
> + pm8994_l9: l9 {};
> + pm8994_l10: l10 {};
> + pm8994_l11: l11 {};
> + pm8994_l12: l12 {};
> + pm8994_l13: l13 {};
> + pm8994_l14: l14 {};
> + pm8994_l15: l15 {};
> + pm8994_l16: l16 {};
> + pm8994_l17: l17 {};
> + pm8994_l18: l18 {};
> + pm8994_l19: l19 {};
> + pm8994_l20: l20 {};
> + pm8994_l21: l21 {};
> + pm8994_l22: l22 {};
> + pm8994_l23: l23 {};
> + pm8994_l24: l24 {};
> + pm8994_l25: l25 {};
> + pm8994_l26: l26 {};
> + pm8994_l27: l27 {};
> + pm8994_l28: l28 {};
> + pm8994_l29: l29 {};
> + pm8994_l30: l30 {};
> + pm8994_l31: l31 {};
> + pm8994_l32: l32 {};
> +
> + pm8994_lvs1: lvs1 {};
> + pm8994_lvs2: lvs2 {};
> + };
> +
> + pmi8994_regulators: pmi8994-regulators {
> + compatible = "qcom,rpm-pmi8994-regulators";
> +
> + pmi8994_s1: s1 {};
> + pmi8994_s2: s2 {};
> + pmi8994_s3: s3 {};
> + pmi8994_bby: boost-bypass {};
> + };
> + };
> + };
> + };
> +
> smem {
> compatible = "qcom,smem";
> memory-region = <&smem_mem>;
> + qcom,rpm-msg-ram = <&rpm_msg_ram>;
> hwlocks = <&tcsr_mutex 3>;
> };
>
> @@ -180,6 +271,11 @@ intc: interrupt-controller@f9000000 {
> <0xf9002000 0x1000>;
> };
>
> + apcs: syscon@f900d000 {
> + compatible = "syscon";
> + reg = <0xf900d000 0x2000>;
> + };
> +
> timer@f9020000 {
> #address-cells = <1>;
> #size-cells = <1>;
> @@ -256,6 +352,11 @@ gcc: clock-controller@fc400000 {
> reg = <0xfc400000 0x2000>;
> };
>
> + rpm_msg_ram: memory@fc428000 {
> + compatible = "qcom,rpm-msg-ram";
> + reg = <0xfc428000 0x4000>;
> + };
> +
> restart@fc4ab000 {
> compatible = "qcom,pshold";
> reg = <0xfc4ab000 0x4>;
> @@ -473,5 +574,15 @@ timer {
> <1 4 0xff08>,
> <1 1 0xff08>;
> };
> +
> + vreg_vph_pwr: vreg-vph-pwr {
> + compatible = "regulator-fixed";
> + regulator-name = "vph-pwr";
> +
> + regulator-min-microvolt = <3600000>;
> + regulator-max-microvolt = <3600000>;
> +
> + regulator-always-on;
> + };
> };
>
> --
> 2.27.0
>

2020-06-23 23:38:25

by Konrad Dybcio

[permalink] [raw]
Subject: Re: [PATCH v2 04/12] arm64: dts: qcom: msm8994: Add support for SMD RPM

Thanks for your review.

I will send the regulators/rpm patch very soon.

Regarding the mbox, do you know whether it should include any clocks
on 8992/4? What comes to my head is a53/57pll, but that's not there yet..
So perhaps I should just add it with .clk_name = NULL?

Regards
Konrad

2020-06-24 06:45:32

by Bjorn Andersson

[permalink] [raw]
Subject: Re: [PATCH v2 04/12] arm64: dts: qcom: msm8994: Add support for SMD RPM

On Tue 23 Jun 16:34 PDT 2020, Konrad Dybcio wrote:

> Thanks for your review.
>
> I will send the regulators/rpm patch very soon.
>
> Regarding the mbox, do you know whether it should include any clocks
> on 8992/4? What comes to my head is a53/57pll, but that's not there yet..
> So perhaps I should just add it with .clk_name = NULL?
>

I don't remember how the clocks are controlled on this platform, so my
suggestion is that you just skip that for now.

Regards,
Bjorn

2020-06-24 15:05:10

by Konrad Dybcio

[permalink] [raw]
Subject: Re: [PATCH v2 04/12] arm64: dts: qcom: msm8994: Add support for SMD RPM

> Can you please extend qcom-apcs-ipc-mailbox and its binding to add
> MSM8994 and use mboxes = <&apcs 0>; here instead?

I have in fact converted it into a mailbox and sent in the v3, but
unfortunately it looks like the SMD RPM driver hasn't been updated
for "mboxes =", so I stuck with the "qcom,ipc =" binding.

Regards
Konrad