diff mbox series

[V7,1/5] dt-bindings: mfd: pm8008: Add pm8008 regulators

Message ID 1645182064-15843-2-git-send-email-quic_c_skakit@quicinc.com
State New
Headers show
Series [V7,1/5] dt-bindings: mfd: pm8008: Add pm8008 regulators | expand

Commit Message

Satya Priya Kakitapalli (Temp) Feb. 18, 2022, 11 a.m. UTC
Add regulators and their supply nodes. Add separate compatible
"qcom,pm8008-regulators" to differentiate between pm8008 infra
and pm8008 regulators mfd devices.

Signed-off-by: Satya Priya <quic_c_skakit@quicinc.com>
---
Changes in V2:
 - As per Rob's comments changed "pm8008[a-z]?-regulator" to
   "^pm8008[a-z]?-regulators".

Changes in V3:
 - Fixed bot errors.
 - As per stephen's comments, changed "^pm8008[a-z]?-regulators$" to
   "regulators".

Changes in V4:
 - Changed compatible string to "qcom,pm8008-regulators"

Changes in V5:
 - Remove compatible for regulators node.
 - Move supply nodes of the regulators to chip level.

Changes in V6:
 - No changes.

Changes in V7:
 - Removed the intermediate regulators node and added ldos
   directly under mfd node.

 .../devicetree/bindings/mfd/qcom,pm8008.yaml       | 50 +++++++++++++++++++---
 1 file changed, 43 insertions(+), 7 deletions(-)

Comments

Satya Priya Kakitapalli (Temp) Feb. 28, 2022, 2:14 p.m. UTC | #1
On 2/19/2022 7:09 AM, Stephen Boyd wrote:
> Quoting Satya Priya (2022-02-18 03:00:59)
>> Add regulators and their supply nodes. Add separate compatible
>> "qcom,pm8008-regulators" to differentiate between pm8008 infra
>> and pm8008 regulators mfd devices.
>>
>> Signed-off-by: Satya Priya <quic_c_skakit@quicinc.com>
>> ---
> Is the register layout compatible with SPMI regulators? The gpio node
> seems to be fully compatible and the same driver probes there for SPMI
> and i2c, so I wonder why we can't extend the existing SPMI gpio and
> regulator bindings to have the new compatible strings for pm8008. Is
> anything really different, or do we have the same device talking i2c
> instead of SPMI now? Possibly it's exposing the different hardware
> blocks inside the PMIC at different i2c addresses. It looks like the i2c
> address is 0x8 and then there's 16-bits of address space inside the i2c
> device to do things. 0x9 is the i2c address for the regulators and then
> each ldo is at some offset in there?


The register layout is not compatible with spmi regulators, I see some 
differences w.r.t VOLTAGE_CTL, EN_CTL, MODE_CTL registers. Also, there 
is no headroom related stuff in the spmi driver.


>> Changes in V2:
>>   - As per Rob's comments changed "pm8008[a-z]?-regulator" to
>>     "^pm8008[a-z]?-regulators".
>>
>> Changes in V3:
>>   - Fixed bot errors.
>>   - As per stephen's comments, changed "^pm8008[a-z]?-regulators$" to
>>     "regulators".
>>
>> Changes in V4:
>>   - Changed compatible string to "qcom,pm8008-regulators"
>>
>> Changes in V5:
>>   - Remove compatible for regulators node.
>>   - Move supply nodes of the regulators to chip level.
>>
>> Changes in V6:
>>   - No changes.
>>
>> Changes in V7:
>>   - Removed the intermediate regulators node and added ldos
>>     directly under mfd node.
>>
>>   .../devicetree/bindings/mfd/qcom,pm8008.yaml       | 50 +++++++++++++++++++---
>>   1 file changed, 43 insertions(+), 7 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/mfd/qcom,pm8008.yaml b/Documentation/devicetree/bindings/mfd/qcom,pm8008.yaml
>> index ec3138c..6b3b53e 100644
>> --- a/Documentation/devicetree/bindings/mfd/qcom,pm8008.yaml
>> +++ b/Documentation/devicetree/bindings/mfd/qcom,pm8008.yaml
>> @@ -16,7 +16,9 @@ description: |
>>
>>   properties:
>>     compatible:
>> -    const: qcom,pm8008
>> +    enum:
>> +      - qcom,pm8008
>> +      - qcom,pm8008-regulators
>>
>>     reg:
>>       description:
>> @@ -44,6 +46,21 @@ properties:
>>     "#size-cells":
>>       const: 0
>>
>> +  vdd_l1_l2-supply:
>> +    description: Input supply phandle of ldo1 and ldo2 regulators.
>> +
>> +  vdd_l3_l4-supply:
>> +    description: Input supply phandle of ldo3 and ldo4 regulators.
>> +
>> +  vdd_l5-supply:
>> +    description: Input supply phandle of ldo5 regulator.
>> +
>> +  vdd_l6-supply:
>> +    description: Input supply phandle of ldo6 regulator.
>> +
>> +  vdd_l7-supply:
>> +    description: Input supply phandle of ldo7 regulator.
>> +
>>   patternProperties:
>>     "^gpio@[0-9a-f]+$":
>>       type: object
>> @@ -85,13 +102,16 @@ patternProperties:
>>
>>       additionalProperties: false
>>
>> +  "^ldo[1-7]$":
>> +    type: object
>> +    $ref: "../regulator/regulator.yaml#"
>> +    description: PM8008 regulator peripherals of PM8008 regulator device
>> +
>>   required:
>>     - compatible
>>     - reg
>> -  - interrupts
>>     - "#address-cells"
>>     - "#size-cells"
>> -  - "#interrupt-cells"
>>
>>   additionalProperties: false
>>
>> @@ -102,13 +122,11 @@ examples:
>>       qupv3_se13_i2c {
>>         #address-cells = <1>;
>>         #size-cells = <0>;
>> -      pm8008i@8 {
>> +      pm8008_infra: pm8008@8 {
>>           compatible = "qcom,pm8008";
>>           reg = <0x8>;
>>           #address-cells = <1>;
>>           #size-cells = <0>;
>> -        interrupt-controller;
>> -        #interrupt-cells = <2>;
>>
>>           interrupt-parent = <&tlmm>;
>>           interrupts = <32 IRQ_TYPE_EDGE_RISING>;
> I still fail to see what this part of the diff has to do with
> regulators. Can it be split off to a different patch with a clear
> description of why interrupt-controller and #interrupt-cells is no
> longer required for qcom,pm8008?


This diff has nothing to do with regulators, I removed it to avoid yaml 
errors during dtbs check.

I'll move this to a separate patch.


> It really looks like we're combining the binding for qcom,pm8008 and
> qcom,pm8008-regulators at the same level, which looks wrong. We don't
> want to describe the least common denominator between the two bindings.
> Why not make two different bindings and files? One for the interrupty
> gpio/interrupt controller device (at 0x8) and one for the regulator one
> (at 0x9)?


Okay, I'll add a different binding for regulators 
(mfd/qcom,pm8008-regulators.yaml), leave this binding as it is.. and 
also add separate DT files for pm8008-infra and pm8008-regulators.


>> @@ -123,6 +141,24 @@ examples:
>>             #interrupt-cells = <2>;
>>           };
>>         };
>> -    };
>>
>> +      pm8008_regulators: pm8008@9 {
> pmic@9, or regulators@9? The node name should be generic.
>
>> +        compatible = "qcom,pm8008-regulators";
>> +        reg = <0x9>;
>> +        #address-cells = <1>;
>> +        #size-cells = <0>;
>> +
>> +        vdd_l1_l2-supply = <&vreg_s8b_1p2>;
>> +        vdd_l3_l4-supply = <&vreg_s1b_1p8>;
>> +        vdd_l5-supply = <&vreg_bob>;
>> +        vdd_l6-supply = <&vreg_bob>;
>> +        vdd_l7-supply = <&vreg_bob>;
>> +
>> +        pm8008_l1: ldo1 {
>> +          regulator-name = "pm8008_l1";
>> +          regulator-min-microvolt = <950000>;
>> +          regulator-max-microvolt = <1300000>;
>> +        };
>> +      };
> For some i2c devices that appear on multiple i2c addresses we make an
> i2c client for each address in the driver that attaches to the node we
> put in DT. I suppose that won't work easily here. Either way, it would
> make it much clearer if this existing binding was left alone. Is there
> other functionality inside the i2c address 0x9 register space that isn't
> regulators?


As mentioned above, I'll make a separate binding for regulators. There 
is no other functionality apart from regulators in the i2c 0x9 register 
space.
Stephen Boyd Feb. 28, 2022, 8:31 p.m. UTC | #2
Quoting Satya Priya Kakitapalli (Temp) (2022-02-28 06:14:56)
>
> On 2/19/2022 7:09 AM, Stephen Boyd wrote:
> > Quoting Satya Priya (2022-02-18 03:00:59)
> >> Add regulators and their supply nodes. Add separate compatible
> >> "qcom,pm8008-regulators" to differentiate between pm8008 infra
> >> and pm8008 regulators mfd devices.
> >>
> >> Signed-off-by: Satya Priya <quic_c_skakit@quicinc.com>
> >> ---
> > Is the register layout compatible with SPMI regulators? The gpio node
> > seems to be fully compatible and the same driver probes there for SPMI
> > and i2c, so I wonder why we can't extend the existing SPMI gpio and
> > regulator bindings to have the new compatible strings for pm8008. Is
> > anything really different, or do we have the same device talking i2c
> > instead of SPMI now? Possibly it's exposing the different hardware
> > blocks inside the PMIC at different i2c addresses. It looks like the i2c
> > address is 0x8 and then there's 16-bits of address space inside the i2c
> > device to do things. 0x9 is the i2c address for the regulators and then
> > each ldo is at some offset in there?
>
>
> The register layout is not compatible with spmi regulators, I see some
> differences w.r.t VOLTAGE_CTL, EN_CTL, MODE_CTL registers. Also, there
> is no headroom related stuff in the spmi driver.

It sounds like minor differences and/or improvements to the existing
SPMI regulator hardware.

> >>           interrupt-parent = <&tlmm>;
> >>           interrupts = <32 IRQ_TYPE_EDGE_RISING>;
> > I still fail to see what this part of the diff has to do with
> > regulators. Can it be split off to a different patch with a clear
> > description of why interrupt-controller and #interrupt-cells is no
> > longer required for qcom,pm8008?
>
>
> This diff has nothing to do with regulators, I removed it to avoid yaml
> errors during dtbs check.
>
> I'll move this to a separate patch.

Ok, thanks!
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/mfd/qcom,pm8008.yaml b/Documentation/devicetree/bindings/mfd/qcom,pm8008.yaml
index ec3138c..6b3b53e 100644
--- a/Documentation/devicetree/bindings/mfd/qcom,pm8008.yaml
+++ b/Documentation/devicetree/bindings/mfd/qcom,pm8008.yaml
@@ -16,7 +16,9 @@  description: |
 
 properties:
   compatible:
-    const: qcom,pm8008
+    enum:
+      - qcom,pm8008
+      - qcom,pm8008-regulators
 
   reg:
     description:
@@ -44,6 +46,21 @@  properties:
   "#size-cells":
     const: 0
 
+  vdd_l1_l2-supply:
+    description: Input supply phandle of ldo1 and ldo2 regulators.
+
+  vdd_l3_l4-supply:
+    description: Input supply phandle of ldo3 and ldo4 regulators.
+
+  vdd_l5-supply:
+    description: Input supply phandle of ldo5 regulator.
+
+  vdd_l6-supply:
+    description: Input supply phandle of ldo6 regulator.
+
+  vdd_l7-supply:
+    description: Input supply phandle of ldo7 regulator.
+
 patternProperties:
   "^gpio@[0-9a-f]+$":
     type: object
@@ -85,13 +102,16 @@  patternProperties:
 
     additionalProperties: false
 
+  "^ldo[1-7]$":
+    type: object
+    $ref: "../regulator/regulator.yaml#"
+    description: PM8008 regulator peripherals of PM8008 regulator device
+
 required:
   - compatible
   - reg
-  - interrupts
   - "#address-cells"
   - "#size-cells"
-  - "#interrupt-cells"
 
 additionalProperties: false
 
@@ -102,13 +122,11 @@  examples:
     qupv3_se13_i2c {
       #address-cells = <1>;
       #size-cells = <0>;
-      pm8008i@8 {
+      pm8008_infra: pm8008@8 {
         compatible = "qcom,pm8008";
         reg = <0x8>;
         #address-cells = <1>;
         #size-cells = <0>;
-        interrupt-controller;
-        #interrupt-cells = <2>;
 
         interrupt-parent = <&tlmm>;
         interrupts = <32 IRQ_TYPE_EDGE_RISING>;
@@ -123,6 +141,24 @@  examples:
           #interrupt-cells = <2>;
         };
       };
-    };
 
+      pm8008_regulators: pm8008@9 {
+        compatible = "qcom,pm8008-regulators";
+        reg = <0x9>;
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        vdd_l1_l2-supply = <&vreg_s8b_1p2>;
+        vdd_l3_l4-supply = <&vreg_s1b_1p8>;
+        vdd_l5-supply = <&vreg_bob>;
+        vdd_l6-supply = <&vreg_bob>;
+        vdd_l7-supply = <&vreg_bob>;
+
+        pm8008_l1: ldo1 {
+          regulator-name = "pm8008_l1";
+          regulator-min-microvolt = <950000>;
+          regulator-max-microvolt = <1300000>;
+        };
+      };
+    };
 ...