diff mbox

[3/5] ARM: dts: add L2CC and RPM with regulators for MSM8660

Message ID 1465918259-11138-4-git-send-email-linus.walleij@linaro.org (mailing list archive)
State New, archived
Headers show

Commit Message

Linus Walleij June 14, 2016, 3:30 p.m. UTC
This adds the L2CC IPC resource and RPM devices plus the nodes
for the PM8901 and PM8058 regulators to the MSM8660 device tree.
This was tested on the APQ8060 Dragonboard.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
 arch/arm/boot/dts/qcom-msm8660.dtsi | 89 +++++++++++++++++++++++++++++++++++++
 1 file changed, 89 insertions(+)

Comments

Stephen Boyd June 14, 2016, 6:55 p.m. UTC | #1
On 06/14, Linus Walleij wrote:
> diff --git a/arch/arm/boot/dts/qcom-msm8660.dtsi b/arch/arm/boot/dts/qcom-msm8660.dtsi
> index a5a38820554a..51d3c9e70617 100644
> --- a/arch/arm/boot/dts/qcom-msm8660.dtsi
> +++ b/arch/arm/boot/dts/qcom-msm8660.dtsi
> @@ -215,6 +215,95 @@
> +
> +			rpmcc: clock-controller {
> +				compatible	= "qcom,rpmcc-apq8660", "qcom,rpmcc";
> +				#clock-cells = <1>;
> +			};

This driver isn't merged yet, but ok.

> +
> +			pm8901-regulators {

I'd rather have regulators@8901 and regulators@8058. That way the
node name is generic per ePAPR suggestions.

> +				compatible = "qcom,rpm-pm8901-regulators";
> +
> +				pm8901_l0: l0 {};
> +				pm8901_l1: l1 {};
> +				pm8901_l2: l2 {};
> +				pm8901_l3: l3 {};
> +				pm8901_l4: l4 {};
> +				pm8901_l5: l5 {};
> +				pm8901_l6: l6 {};
> +
> +				/* S0 and S1 Handled as SAW regulators by SPM */
> +				pm8901_s2: s2 {};
> +				pm8901_s3: s3 {};
> +				pm8901_s4: s4 {};
> +
> +				pm8901_lvs0: lvs0 {};
> +				pm8901_lvs1: lvs1 {};
> +				pm8901_lvs2: lvs2 {};
> +				pm8901_lvs3: lvs3 {};
> +
> +				pm8058_mvs: mvs {};

pm8901_mvs?

> +			};
> +
> +			pm8058-regulators {
> +				compatible = "qcom,rpm-pm8058-regulators";
> +
> +				pm8058_l0: l0 {};
> +				pm8058_l1: l1 {};
> +				pm8058_l2: l2 {};
> +				pm8058_l3: l3 {};
> +				pm8058_l4: l4 {};
> +				pm8058_l5: l5 {};
> +				pm8058_l6: l6 {};
> +				pm8058_l7: l7 {};
> +				pm8058_l8: l8 {};
> +				pm8058_l9: l9 {};
> +				pm8058_l10: l10 {};
> +				pm8058_l11: l11 {};
> +				pm8058_l12: l12 {};
> +				pm8058_l13: l13 {};
> +				pm8058_l14: l14 {};
> +				pm8058_l15: l15 {};
> +				pm8058_l16: l16 {};
> +				pm8058_l17: l17 {};
> +				pm8058_l18: l18 {};
> +				pm8058_l19: l19 {};
> +				pm8058_l20: l20 {};
> +				pm8058_l21: l21 {};
> +				pm8058_l22: l22 {};
> +				pm8058_l23: l23 {};
> +				pm8058_l24: l24 {};
> +				pm8058_l25: l25 {};
> +
> +				pm8058_s0: s0 {};
> +				pm8058_s1: s1 {};

Just leave these out? RPM shouldn't be touching s0 or s1.

> +				pm8058_s2: s2 {};
> +				pm8058_s3: s3 {};
> +				pm8058_s4: s4 {};
> +
> +				pm8058_lvs0: lvs0 {};
> +				pm8058_lvs1: lvs1 {};
> +
> +				pm8058_ncp: ncp {};
> +			};
> +		};
> +
Bjorn Andersson June 14, 2016, 7:02 p.m. UTC | #2
On Tue 14 Jun 11:55 PDT 2016, Stephen Boyd wrote:

> On 06/14, Linus Walleij wrote:
> > diff --git a/arch/arm/boot/dts/qcom-msm8660.dtsi b/arch/arm/boot/dts/qcom-msm8660.dtsi
[..]
> > +
> > +			pm8901-regulators {
> 
> I'd rather have regulators@8901 and regulators@8058. That way the
> node name is generic per ePAPR suggestions.
> 

I agree, but unfortunately we're not allowed to do that without a
matching "reg = <>" anymore.

Regards,
Bjorn
Stephen Boyd June 14, 2016, 7:48 p.m. UTC | #3
On 06/14, Bjorn Andersson wrote:
> On Tue 14 Jun 11:55 PDT 2016, Stephen Boyd wrote:
> 
> > On 06/14, Linus Walleij wrote:
> > > diff --git a/arch/arm/boot/dts/qcom-msm8660.dtsi b/arch/arm/boot/dts/qcom-msm8660.dtsi
> [..]
> > > +
> > > +			pm8901-regulators {
> > 
> > I'd rather have regulators@8901 and regulators@8058. That way the
> > node name is generic per ePAPR suggestions.
> > 
> 
> I agree, but unfortunately we're not allowed to do that without a
> matching "reg = <>" anymore.

Oh does dtc blow up now?
Russell King (Oracle) June 14, 2016, 10:48 p.m. UTC | #4
On Tue, Jun 14, 2016 at 11:55:17AM -0700, Stephen Boyd wrote:
> On 06/14, Linus Walleij wrote:
> > +
> > +			pm8901-regulators {
> 
> I'd rather have regulators@8901 and regulators@8058. That way the
> node name is generic per ePAPR suggestions.

But ePAPR requires reg= if you specify a unit-address part of the
node name.
Russell King (Oracle) June 14, 2016, 10:51 p.m. UTC | #5
On Tue, Jun 14, 2016 at 12:48:53PM -0700, Stephen Boyd wrote:
> On 06/14, Bjorn Andersson wrote:
> > On Tue 14 Jun 11:55 PDT 2016, Stephen Boyd wrote:
> > 
> > > On 06/14, Linus Walleij wrote:
> > > > diff --git a/arch/arm/boot/dts/qcom-msm8660.dtsi b/arch/arm/boot/dts/qcom-msm8660.dtsi
> > [..]
> > > > +
> > > > +			pm8901-regulators {
> > > 
> > > I'd rather have regulators@8901 and regulators@8058. That way the
> > > node name is generic per ePAPR suggestions.
> > > 
> > 
> > I agree, but unfortunately we're not allowed to do that without a
> > matching "reg = <>" anymore.
> 
> Oh does dtc blow up now?

I think latest dtc complains, maybe with some additional warning enables.
However, the requirement has been there for a long time in ePAPR:

"The unit-address must match the first address specified in the reg
 property of the node. If the node has no reg property, the @ and
 unit-address must be omitted and the node-name alone differentiates
 the node from other nodes at the same level in the tree."
Linus Walleij June 15, 2016, 1:16 p.m. UTC | #6
On Tue, Jun 14, 2016 at 8:55 PM, Stephen Boyd <sboyd@codeaurora.org> wrote:
> On 06/14, Linus Walleij wrote:

>> +                     rpmcc: clock-controller {
>> +                             compatible      = "qcom,rpmcc-apq8660", "qcom,rpmcc";
>> +                             #clock-cells = <1>;
>> +                     };
>
> This driver isn't merged yet, but ok.

It's there because it is there in
arch/arm/boot/dts/qcom-apq8064.dtsi

>> +
>> +                     pm8901-regulators {
>
> I'd rather have regulators@8901 and regulators@8058. That way the
> node name is generic per ePAPR suggestions.

Seems impossible if I should conclude the other discussion...

>> +                             pm8058_mvs: mvs {};
>
> pm8901_mvs?

Ooops fixing.

>> +                     pm8058-regulators {
>> +                             compatible = "qcom,rpm-pm8058-regulators";
>> +
>> +                             pm8058_l0: l0 {};
>> +                             pm8058_l1: l1 {};
>> +                             pm8058_l2: l2 {};
>> +                             pm8058_l3: l3 {};
>> +                             pm8058_l4: l4 {};
>> +                             pm8058_l5: l5 {};
>> +                             pm8058_l6: l6 {};
>> +                             pm8058_l7: l7 {};
>> +                             pm8058_l8: l8 {};
>> +                             pm8058_l9: l9 {};
>> +                             pm8058_l10: l10 {};
>> +                             pm8058_l11: l11 {};
>> +                             pm8058_l12: l12 {};
>> +                             pm8058_l13: l13 {};
>> +                             pm8058_l14: l14 {};
>> +                             pm8058_l15: l15 {};
>> +                             pm8058_l16: l16 {};
>> +                             pm8058_l17: l17 {};
>> +                             pm8058_l18: l18 {};
>> +                             pm8058_l19: l19 {};
>> +                             pm8058_l20: l20 {};
>> +                             pm8058_l21: l21 {};
>> +                             pm8058_l22: l22 {};
>> +                             pm8058_l23: l23 {};
>> +                             pm8058_l24: l24 {};
>> +                             pm8058_l25: l25 {};
>> +
>> +                             pm8058_s0: s0 {};
>> +                             pm8058_s1: s1 {};
>
> Just leave these out? RPM shouldn't be touching s0 or s1.

Really? The msm-3.4 tree does:

        /* RPM early regulator constraints */
        static struct rpm_regulator_init_data
rpm_regulator_early_init_data[] = {
        /*       ID       a_on pd ss min_uV   max_uV   init_ip    freq */
        RPM_SMPS(PM8058_S0, 0, 1, 1,  500000, 1325000, SMPS_HMIN, 1p60),
        RPM_SMPS(PM8058_S1, 0, 1, 1,  500000, 1250000, SMPS_HMIN, 1p60),

Are you sure you don't mean s0+s1 on PM8901 (which I left out)?

Yours,
Linus Walleij
Stephen Boyd June 16, 2016, 12:17 a.m. UTC | #7
On 06/14, Russell King - ARM Linux wrote:
> On Tue, Jun 14, 2016 at 11:55:17AM -0700, Stephen Boyd wrote:
> > On 06/14, Linus Walleij wrote:
> > > +
> > > +			pm8901-regulators {
> > 
> > I'd rather have regulators@8901 and regulators@8058. That way the
> > node name is generic per ePAPR suggestions.
> 
> But ePAPR requires reg= if you specify a unit-address part of the
> node name.
> 

It seems the ePAPR also leaves this open to interpretation
because it states:

  "The binding for a particular bus may specify additional, more
  specific requirements for the format of reg and unit-address."

but we haven't done anything formal for the RPM "bus" so far. I'm
not worried either way, just a fun fact!
Stephen Boyd June 16, 2016, 12:57 a.m. UTC | #8
On 06/15/2016 06:16 AM, Linus Walleij wrote:
> On Tue, Jun 14, 2016 at 8:55 PM, Stephen Boyd <sboyd@codeaurora.org> wrote:
>
>>
>> Just leave these out? RPM shouldn't be touching s0 or s1.
> Really? The msm-3.4 tree does:
>
>         /* RPM early regulator constraints */
>         static struct rpm_regulator_init_data
> rpm_regulator_early_init_data[] = {
>         /*       ID       a_on pd ss min_uV   max_uV   init_ip    freq */
>         RPM_SMPS(PM8058_S0, 0, 1, 1,  500000, 1325000, SMPS_HMIN, 1p60),
>         RPM_SMPS(PM8058_S1, 0, 1, 1,  500000, 1250000, SMPS_HMIN, 1p60),
>
> Are you sure you don't mean s0+s1 on PM8901 (which I left out)?
>

Ah yes, I meant pm8901.
Russell King (Oracle) June 16, 2016, 8:09 a.m. UTC | #9
On Wed, Jun 15, 2016 at 05:17:14PM -0700, Stephen Boyd wrote:
> On 06/14, Russell King - ARM Linux wrote:
> > On Tue, Jun 14, 2016 at 11:55:17AM -0700, Stephen Boyd wrote:
> > > On 06/14, Linus Walleij wrote:
> > > > +
> > > > +			pm8901-regulators {
> > > 
> > > I'd rather have regulators@8901 and regulators@8058. That way the
> > > node name is generic per ePAPR suggestions.
> > 
> > But ePAPR requires reg= if you specify a unit-address part of the
> > node name.
> > 
> 
> It seems the ePAPR also leaves this open to interpretation
> because it states:
> 
>   "The binding for a particular bus may specify additional, more
>   specific requirements for the format of reg and unit-address."
> 
> but we haven't done anything formal for the RPM "bus" so far. I'm
> not worried either way, just a fun fact!

Latest dtc with warnings enabled (W=1) warns if you don't follow what
I quoted.
diff mbox

Patch

diff --git a/arch/arm/boot/dts/qcom-msm8660.dtsi b/arch/arm/boot/dts/qcom-msm8660.dtsi
index a5a38820554a..51d3c9e70617 100644
--- a/arch/arm/boot/dts/qcom-msm8660.dtsi
+++ b/arch/arm/boot/dts/qcom-msm8660.dtsi
@@ -215,6 +215,95 @@ 
 			};
 		};
 
+		l2cc: clock-controller@2082000 {
+			compatible	= "syscon";
+			reg		= <0x02082000 0x1000>;
+		};
+
+		rpm: rpm@104000 {
+			compatible	= "qcom,rpm-msm8660";
+			reg		= <0x00104000 0x1000>;
+			qcom,ipc	= <&l2cc 0x8 2>;
+
+			interrupts	= <GIC_SPI 19 IRQ_TYPE_EDGE_RISING>,
+					  <GIC_SPI 21 IRQ_TYPE_EDGE_RISING>,
+					  <GIC_SPI 22 IRQ_TYPE_EDGE_RISING>;
+			interrupt-names	= "ack", "err", "wakeup";
+			clocks = <&gcc RPM_MSG_RAM_H_CLK>;
+			clock-names = "ram";
+
+			rpmcc: clock-controller {
+				compatible	= "qcom,rpmcc-apq8660", "qcom,rpmcc";
+				#clock-cells = <1>;
+			};
+
+			pm8901-regulators {
+				compatible = "qcom,rpm-pm8901-regulators";
+
+				pm8901_l0: l0 {};
+				pm8901_l1: l1 {};
+				pm8901_l2: l2 {};
+				pm8901_l3: l3 {};
+				pm8901_l4: l4 {};
+				pm8901_l5: l5 {};
+				pm8901_l6: l6 {};
+
+				/* S0 and S1 Handled as SAW regulators by SPM */
+				pm8901_s2: s2 {};
+				pm8901_s3: s3 {};
+				pm8901_s4: s4 {};
+
+				pm8901_lvs0: lvs0 {};
+				pm8901_lvs1: lvs1 {};
+				pm8901_lvs2: lvs2 {};
+				pm8901_lvs3: lvs3 {};
+
+				pm8058_mvs: mvs {};
+			};
+
+			pm8058-regulators {
+				compatible = "qcom,rpm-pm8058-regulators";
+
+				pm8058_l0: l0 {};
+				pm8058_l1: l1 {};
+				pm8058_l2: l2 {};
+				pm8058_l3: l3 {};
+				pm8058_l4: l4 {};
+				pm8058_l5: l5 {};
+				pm8058_l6: l6 {};
+				pm8058_l7: l7 {};
+				pm8058_l8: l8 {};
+				pm8058_l9: l9 {};
+				pm8058_l10: l10 {};
+				pm8058_l11: l11 {};
+				pm8058_l12: l12 {};
+				pm8058_l13: l13 {};
+				pm8058_l14: l14 {};
+				pm8058_l15: l15 {};
+				pm8058_l16: l16 {};
+				pm8058_l17: l17 {};
+				pm8058_l18: l18 {};
+				pm8058_l19: l19 {};
+				pm8058_l20: l20 {};
+				pm8058_l21: l21 {};
+				pm8058_l22: l22 {};
+				pm8058_l23: l23 {};
+				pm8058_l24: l24 {};
+				pm8058_l25: l25 {};
+
+				pm8058_s0: s0 {};
+				pm8058_s1: s1 {};
+				pm8058_s2: s2 {};
+				pm8058_s3: s3 {};
+				pm8058_s4: s4 {};
+
+				pm8058_lvs0: lvs0 {};
+				pm8058_lvs1: lvs1 {};
+
+				pm8058_ncp: ncp {};
+			};
+		};
+
 		/* Temporary fixed regulator */
 		vsdcc_fixed: vsdcc-regulator {
 			compatible = "regulator-fixed";