All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 1/6] dt-bindings: regulator: qcom,spmi-regulator: Convert to dtschema
@ 2022-05-17 20:53 Robert Marko
  2022-05-17 20:53 ` [PATCH v3 2/6] regulator: qcom_spmi: add support for HT_P150 Robert Marko
                   ` (5 more replies)
  0 siblings, 6 replies; 16+ messages in thread
From: Robert Marko @ 2022-05-17 20:53 UTC (permalink / raw)
  To: agross, bjorn.andersson, lgirdwood, broonie, robh+dt,
	krzysztof.kozlowski+dt, linux-arm-msm, linux-kernel, devicetree
  Cc: Robert Marko

Convert the bindings of Qualcomm SPMI regulators to DT schema.

Signed-off-by: Robert Marko <robimarko@gmail.com>
---
Changes in v3:
* Remove quotes around refs
* Use much stricter regex for regulator node matching
* Add supply matching per compatible
* Add blank interrupts and interrupt-names as generic properties

Changes in v2:
* Remove the forgotten text bindings
* Move allOf after patternProperties
* Use my private email as the maintainer email

I am aware that syscon alone is not really acceptable, its converted
directly from the old text bindings.

There is also the issue of some MSM8994, MSM8996 and APQ8096 devices using
'#address-cells', '#size-cells', some even defining reg property for
regulators.

Any advice on how to solve these issues is appreciated.
---
 .../regulator/qcom,spmi-regulator.txt         | 347 ------------------
 .../regulator/qcom,spmi-regulator.yaml        | 341 +++++++++++++++++
 2 files changed, 341 insertions(+), 347 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/regulator/qcom,spmi-regulator.txt
 create mode 100644 Documentation/devicetree/bindings/regulator/qcom,spmi-regulator.yaml

diff --git a/Documentation/devicetree/bindings/regulator/qcom,spmi-regulator.txt b/Documentation/devicetree/bindings/regulator/qcom,spmi-regulator.txt
deleted file mode 100644
index c2a39b121b1b..000000000000
--- a/Documentation/devicetree/bindings/regulator/qcom,spmi-regulator.txt
+++ /dev/null
@@ -1,347 +0,0 @@
-Qualcomm SPMI Regulators
-
-- compatible:
-	Usage: required
-	Value type: <string>
-	Definition: must be one of:
-			"qcom,pm8004-regulators"
-			"qcom,pm8005-regulators"
-			"qcom,pm8226-regulators"
-			"qcom,pm8841-regulators"
-			"qcom,pm8916-regulators"
-			"qcom,pm8941-regulators"
-			"qcom,pm8950-regulators"
-			"qcom,pm8994-regulators"
-			"qcom,pmi8994-regulators"
-			"qcom,pm660-regulators"
-			"qcom,pm660l-regulators"
-			"qcom,pms405-regulators"
-
-- interrupts:
-	Usage: optional
-	Value type: <prop-encoded-array>
-	Definition: List of OCP interrupts.
-
-- interrupt-names:
-	Usage: required if 'interrupts' property present
-	Value type: <string-array>
-	Definition: List of strings defining the names of the
-		    interrupts in the 'interrupts' property 1-to-1.
-		    Supported values are "ocp-<regulator_name>", where
-		    <regulator_name> corresponds to a voltage switch
-		    type regulator.
-
-- vdd_s1-supply:
-- vdd_s2-supply:
-- vdd_s3-supply:
-- vdd_s4-supply:
-- vdd_s5-supply:
-- vdd_s6-supply:
-- vdd_s7-supply:
-- vdd_s8-supply:
-	Usage: optional (pm8841 only)
-	Value type: <phandle>
-	Definition: Reference to regulator supplying the input pin, as
-		    described in the data sheet.
-
-- vdd_s1-supply:
-- vdd_s2-supply:
-- vdd_s3-supply:
-- vdd_s4-supply:
-- vdd_l1_l3-supply:
-- vdd_l2-supply:
-- vdd_l4_l5_l6-supply:
-- vdd_l7-supply:
-- vdd_l8_l11_l14_l15_l16-supply:
-- vdd_l9_l10_l12_l13_l17_l18-supply:
-	Usage: optional (pm8916 only)
-	Value type: <phandle>
-	Definition: Reference to regulator supplying the input pin, as
-		    described in the data sheet.
-
-- vdd_s1-supply:
-- vdd_s2-supply:
-- vdd_s3-supply:
-- vdd_l1_l3-supply:
-- vdd_l2_lvs_1_2_3-supply:
-- vdd_l4_l11-supply:
-- vdd_l5_l7-supply:
-- vdd_l6_l12_l14_l15-supply:
-- vdd_l8_l16_l18_19-supply:
-- vdd_l9_l10_l17_l22-supply:
-- vdd_l13_l20_l23_l24-supply:
-- vdd_l21-supply:
-- vin_5vs-supply:
-	Usage: optional (pm8941 only)
-	Value type: <phandle>
-	Definition: Reference to regulator supplying the input pin, as
-		    described in the data sheet.
-
-- vdd_s1-supply:
-- vdd_s2-supply:
-- vdd_s3-supply:
-- vdd_s4-supply:
-- vdd_s4-supply:
-- vdd_s5-supply:
-- vdd_s6-supply:
-- vdd_l1_l19-supply:
-- vdd_l2_l23-supply:
-- vdd_l3-supply:
-- vdd_l4_l5_l6_l7_l16-supply:
-- vdd_l8_l11_l12_l17_l22-supply:
-- vdd_l9_l10_l13_l14_l15_l18-supply:
-- vdd_l20-supply:
-- vdd_l21-supply:
-	Usage: optional (pm8950 only)
-	Value type: <phandle>
-	Definition: reference to regulator supplying the input pin, as
-		    described in the data sheet
-
-- vdd_s1-supply:
-- vdd_s2-supply:
-- vdd_s3-supply:
-- vdd_s4-supply:
-- vdd_s5-supply:
-- vdd_s6-supply:
-- vdd_s7-supply:
-- vdd_s8-supply:
-- vdd_s9-supply:
-- vdd_s10-supply:
-- vdd_s11-supply:
-- vdd_s12-supply:
-- vdd_l1-supply:
-- vdd_l2_l26_l28-supply:
-- vdd_l3_l11-supply:
-- vdd_l4_l27_l31-supply:
-- vdd_l5_l7-supply:
-- vdd_l6_l12_l32-supply:
-- vdd_l8_l16_l30-supply:
-- vdd_l9_l10_l18_l22-supply:
-- vdd_l13_l19_l23_l24-supply:
-- vdd_l14_l15-supply:
-- vdd_l17_l29-supply:
-- vdd_l20_l21-supply:
-- vdd_l25-supply:
-- vdd_lvs_1_2-supply:
-	Usage: optional (pm8994 only)
-	Value type: <phandle>
-	Definition: Reference to regulator supplying the input pin, as
-		    described in the data sheet.
-
-- vdd_s1-supply:
-- vdd_s2-supply:
-- vdd_s3-supply:
-- vdd_l1-supply:
-	Usage: optional (pmi8994 only)
-	Value type: <phandle>
-	Definition: Reference to regulator supplying the input pin, as
-		    described in the data sheet.
-
-- vdd_l1_l6_l7-supply:
-- vdd_l2_l3-supply:
-- vdd_l5-supply:
-- vdd_l8_l9_l10_l11_l12_l13_l14-supply:
-- vdd_l15_l16_l17_l18_l19-supply:
-- vdd_s1-supply:
-- vdd_s2-supply:
-- vdd_s3-supply:
-- vdd_s5-supply:
-- vdd_s6-supply:
-	Usage: optional (pm660 only)
-	Value type: <phandle>
-	Definition: Reference to regulator supplying the input pin, as
-		    described in the data sheet.
-
-- vdd_l1_l9_l10-supply:
-- vdd_l2-supply:
-- vdd_l3_l5_l7_l8-supply:
-- vdd_l4_l6-supply:
-- vdd_s1-supply:
-- vdd_s2-supply:
-- vdd_s3-supply:
-- vdd_s4-supply:
-- vdd_s5-supply:
-	Usage: optional (pm660l only)
-	Value type: <phandle>
-	Definition: Reference to regulator supplying the input pin, as
-		    described in the data sheet.
-
-- vdd_l1_l2-supply:
-- vdd_l3_l8-supply:
-- vdd_l4-supply:
-- vdd_l5_l6-supply:
-- vdd_l10_l11_l12_l13-supply:
-- vdd_l7-supply:
-- vdd_l9-supply:
-- vdd_s1-supply:
-- vdd_s2-supply:
-- vdd_s3-supply:
-- vdd_s4-supply:
-- vdd_s5-supply
-	Usage: optional (pms405 only)
-	Value type: <phandle>
-	Definition: Reference to regulator supplying the input pin, as
-		    described in the data sheet.
-
-- qcom,saw-reg:
-	Usage: optional
-	Value type: <phandle>
-	Description: Reference to syscon node defining the SAW registers.
-
-
-The regulator node houses sub-nodes for each regulator within the device. Each
-sub-node is identified using the node's name, with valid values listed for each
-of the PMICs below.
-
-pm8004:
-	s2, s5
-
-pm8005:
-	s1, s2, s3, s4
-
-pm8841:
-	s1, s2, s3, s4, s5, s6, s7, s8
-
-pm8916:
-	s1, s2, s3, s4, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12, l13,
-	l14, l15, l16, l17, l18
-
-pm8941:
-	s1, s2, s3, s4, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12, l13,
-	l14, l15, l16, l17, l18, l19, l20, l21, l22, l23, l24, lvs1, lvs2, lvs3,
-	5vs1, 5vs2
-
-pm8994:
-	s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, l1, l2, l3, l4, l5,
-	l6, l7, l8, l9, l10, l11, l12, l13, l14, l15, l16, l17, l18, l19, l20,
-	l21, l22, l23, l24, l25, l26, l27, l28, l29, l30, l31, l32, lvs1, lvs2
-
-pmi8994:
-	s1, s2, s3, l1
-
-The content of each sub-node is defined by the standard binding for regulators -
-see regulator.txt - with additional custom properties described below:
-
-- regulator-initial-mode:
-	Usage: optional
-	Value type: <u32>
-	Description: 2 = Set initial mode to auto mode (automatically select
-		    between HPM and LPM); not available on boost type
-		    regulators.
-
-		    1 = Set initial mode to high power mode (HPM), also referred
-		    to as NPM. HPM consumes more ground current than LPM, but
-		    it can source significantly higher load current. HPM is not
-		    available on boost type regulators. For voltage switch type
-		    regulators, HPM implies that over current protection and
-		    soft start are active all the time.
-
-		    0 = Set initial mode to low power mode (LPM).
-
-- qcom,ocp-max-retries:
-	Usage: optional
-	Value type: <u32>
-	Description: Maximum number of times to try toggling a voltage switch
-		     off and back on as a result of consecutive over current
-		     events.
-
-- qcom,ocp-retry-delay:
-	Usage: optional
-	Value type: <u32>
-	Description: Time to delay in milliseconds between each voltage switch
-		     toggle after an over current event takes place.
-
-- qcom,pin-ctrl-enable:
-	Usage: optional
-	Value type: <u32>
-	Description: Bit mask specifying which hardware pins should be used to
-		     enable the regulator, if any; supported bits are:
-			0 = ignore all hardware enable signals
-			BIT(0) = follow HW0_EN signal
-			BIT(1) = follow HW1_EN signal
-			BIT(2) = follow HW2_EN signal
-			BIT(3) = follow HW3_EN signal
-
-- qcom,pin-ctrl-hpm:
-	Usage: optional
-	Value type: <u32>
-	Description: Bit mask specifying which hardware pins should be used to
-		     force the regulator into high power mode, if any;
-		     supported bits are:
-			0 = ignore all hardware enable signals
-			BIT(0) = follow HW0_EN signal
-			BIT(1) = follow HW1_EN signal
-			BIT(2) = follow HW2_EN signal
-			BIT(3) = follow HW3_EN signal
-			BIT(4) = follow PMIC awake state
-
-- qcom,vs-soft-start-strength:
-	Usage: optional
-	Value type: <u32>
-	Description: This property sets the soft start strength for voltage
-		     switch type regulators; supported values are:
-			0 = 0.05 uA
-			1 = 0.25 uA
-			2 = 0.55 uA
-			3 = 0.75 uA
-
-- qcom,saw-slave:
-	Usage: optional
-	Value type: <boo>
-	Description: SAW controlled gang slave. Will not be configured.
-
-- qcom,saw-leader:
-	Usage: optional
-	Value type: <boo>
-	Description: SAW controlled gang leader. Will be configured as
-		     SAW regulator.
-
-Example:
-
-	regulators {
-		compatible = "qcom,pm8941-regulators";
-		vdd_l1_l3-supply = <&s1>;
-
-		s1: s1 {
-			regulator-min-microvolt = <1300000>;
-			regulator-max-microvolt = <1400000>;
-		};
-
-		...
-
-		l1: l1 {
-			regulator-min-microvolt = <1225000>;
-			regulator-max-microvolt = <1300000>;
-		};
-
-		....
-	};
-
-Example 2:
-
-	saw3: syscon@9A10000 {
-		compatible = "syscon";
-		reg = <0x9A10000 0x1000>;
-	};
-
-	...
-
-	spm-regulators {
-		compatible = "qcom,pm8994-regulators";
-		qcom,saw-reg = <&saw3>;
-		s8 {
-			qcom,saw-slave;
-		};
-		s9 {
-			qcom,saw-slave;
-		};
-		s10 {
-			qcom,saw-slave;
-		};
-		pm8994_s11_saw: s11 {
-			qcom,saw-leader;
-			regulator-always-on;
-			regulator-min-microvolt = <900000>;
-			regulator-max-microvolt = <1140000>;
-		};
-	};
diff --git a/Documentation/devicetree/bindings/regulator/qcom,spmi-regulator.yaml b/Documentation/devicetree/bindings/regulator/qcom,spmi-regulator.yaml
new file mode 100644
index 000000000000..7f51e305eaae
--- /dev/null
+++ b/Documentation/devicetree/bindings/regulator/qcom,spmi-regulator.yaml
@@ -0,0 +1,341 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/regulator/qcom,spmi-regulator.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm SPMI Regulators
+
+maintainers:
+  - Robert Marko <robimarko@gmail.com>
+
+properties:
+  compatible:
+    enum:
+      - qcom,pm660-regulators
+      - qcom,pm660l-regulators
+      - qcom,pm8004-regulators
+      - qcom,pm8005-regulators
+      - qcom,pm8226-regulators
+      - qcom,pm8841-regulators
+      - qcom,pm8916-regulators
+      - qcom,pm8941-regulators
+      - qcom,pm8950-regulators
+      - qcom,pm8994-regulators
+      - qcom,pmi8994-regulators
+      - qcom,pms405-regulators
+
+  interrupts: true
+
+  interrupt-names: true
+
+  qcom,saw-reg:
+    description: Reference to syscon node defining the SAW registers
+    $ref: /schemas/types.yaml#/definitions/phandle
+
+patternProperties:
+  "^(5vs[1-2]|(l|s)[1-9][0-9]?|lvs[1-3])$":
+    description: List of regulators and its properties
+    type: object
+    $ref: regulator.yaml#
+
+    properties:
+      qcom,ocp-max-retries:
+        description:
+          Maximum number of times to try toggling a voltage switch off and
+          back on as a result of consecutive over current events
+        $ref: /schemas/types.yaml#/definitions/uint32
+
+      qcom,ocp-retry-delay:
+        description:
+          Time to delay in milliseconds between each voltage switch toggle
+          after an over current event takes place
+        $ref: /schemas/types.yaml#/definitions/uint32
+
+      qcom,pin-ctrl-enable:
+        description:
+          Bit mask specifying which hardware pins should be used to enable the
+          regulator, if any.
+          Supported bits are
+          0 = ignore all hardware enable signals
+          BIT(0) = follow HW0_EN signal
+          BIT(1) = follow HW1_EN signal
+          BIT(2) = follow HW2_EN signal
+          BIT(3) = follow HW3_EN signal
+        $ref: /schemas/types.yaml#/definitions/uint32
+        minimum: 0
+        maximum: 15
+
+      qcom,pin-ctrl-hpm:
+        description:
+          Bit mask specifying which hardware pins should be used to force the
+          regulator into high power mode, if any.
+          Supported bits are
+          0 = ignore all hardware enable signals
+          BIT(0) = follow HW0_EN signal
+          BIT(1) = follow HW1_EN signal
+          BIT(2) = follow HW2_EN signal
+          BIT(3) = follow HW3_EN signal
+          BIT(4) = follow PMIC awake state
+        $ref: /schemas/types.yaml#/definitions/uint32
+        minimum: 0
+        maximum: 31
+
+      qcom,vs-soft-start-strength:
+        description:
+          This property sets the soft start strength for voltage switch type
+          regulators.
+          Supported values are
+          0 = 0.05 uA
+          1 = 0.25 uA
+          2 = 0.55 uA
+          3 = 0.75 uA
+        $ref: /schemas/types.yaml#/definitions/uint32
+        minimum: 0
+        maximum: 3
+
+      qcom,saw-slave:
+        description: SAW controlled gang slave. Will not be configured.
+        type: boolean
+
+      qcom,saw-leader:
+        description:
+          SAW controlled gang leader. Will be configured as SAW regulator.
+        type: boolean
+
+      unevaluatedProperties: false
+
+required:
+  - compatible
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,pm660-regulators
+    then:
+      properties:
+        vdd_l15_l16_l17_l18_l19-supply: true
+        vdd_l1_l6_l7-supply: true
+        vdd_l2_l3-supply: true
+        vdd_l5-supply: true
+        vdd_l8_l9_l10_l11_l12_l13_l14-supply: true
+      patternProperties:
+        "^vdd_s[1-6]-supply$": true
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,pm660l-regulators
+    then:
+      properties:
+        vdd_l1_l9_l10-supply: true
+        vdd_l2-supply: true
+        vdd_l3_l5_l7_l8-supply: true
+        vdd_l4_l6-supply: true
+      patternProperties:
+        "^vdd_s[1-5]-supply$": true
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,pm8004-regulators
+    then:
+      patternProperties:
+        "^vdd_s[25]-supply$": true
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,pm8005-regulators
+    then:
+      patternProperties:
+        "^vdd_s[1-4]-supply$": true
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,pm8226-regulators
+    then:
+      properties:
+        vdd_l10_l11_l13-supply: true
+        vdd_l12_l14-supply: true
+        vdd_l15_l16_l17_l18-supply: true
+        vdd_l19_l20_l21_l22_l23_l28-supply: true
+        vdd_l1_l2_l4_l5-supply: true
+        vdd_l25-supply: true
+        vdd_l3_l24_l26-supply: true
+        vdd_l6_l7_l8_l9_l27-supply: true
+        vdd_lvs1-supply: true
+      patternProperties:
+        "^vdd_s[1-5]-supply$": true
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,pm8841-regulators
+    then:
+      patternProperties:
+        "^vdd_s[1-8]-supply$": true
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,pm8916-regulators
+    then:
+      properties:
+        vdd_l1_l3-supply: true
+        vdd_l4_l5_l6-supply: true
+        vdd_l8_l11_l14_l15_l16-supply: true
+        vdd_l9_l10_l12_l13_l17_l18-supply: true
+      patternProperties:
+        "^vdd_l[27]-supply$": true
+        "^vdd_s[1-4]-supply$": true
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,pm8941-regulators
+    then:
+      properties:
+        interrupts:
+          items:
+            - description: Over-current protection interrupt for 5V S1
+            - description: Over-current protection interrupt for 5V S2
+        interrupt-names:
+          items:
+            - const: ocp-5vs1
+            - const: ocp-5vs2
+        vdd_l13_l20_l23_l24-supply: true
+        vdd_l1_l3-supply: true
+        vdd_l21-supply: true
+        vdd_l2_lvs_1_2_3-supply: true
+        vdd_l4_l11-supply: true
+        vdd_l5_l7-supply: true
+        vdd_l6_l12_l14_l15-supply: true
+        vdd_l8_l16_l18_19-supply: true
+        vdd_l9_l10_l17_l22-supply: true
+        vin_5vs-supply: true
+      patternProperties:
+        "^vdd_s[1-3]-supply$": true
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,pm8950-regulators
+    then:
+      properties:
+        vdd_l1_l19-supply: true
+        vdd_l20-supply: true
+        vdd_l21-supply: true
+        vdd_l2_l23-supply: true
+        vdd_l3-supply: true
+        vdd_l4_l5_l6_l7_l16-supply: true
+        vdd_l8_l11_l12_l17_l22-supply: true
+        vdd_l9_l10_l13_l14_l15_l18-supply: true
+      patternProperties:
+        "^vdd_s[1-6]-supply$": true
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,pm8994-regulators
+    then:
+      properties:
+        vdd_l1-supply: true
+        vdd_l13_l19_l23_l24-supply: true
+        vdd_l14_l15-supply: true
+        vdd_l17_l29-supply: true
+        vdd_l20_l21-supply: true
+        vdd_l25-supply: true
+        vdd_l2_l26_l28-supply: true
+        vdd_l3_l11-supply: true
+        vdd_l4_l27_l31-supply: true
+        vdd_l5_l7-supply: true
+        vdd_l6_l12_l32-supply: true
+        vdd_l8_l16_l30-supply: true
+        vdd_l9_l10_l18_l22-supply: true
+        vdd_lvs_1_2-supply: true
+      patternProperties:
+        "^vdd_s[1-9][0-2]?-supply$": true
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,pmi8994-regulators
+    then:
+      properties:
+        vdd_l1-supply: true
+      patternProperties:
+        "^vdd_s[1-3]-supply$": true
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,pms405-regulators
+    then:
+      properties:
+        vdd_s3-supply: true
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    regulators {
+      compatible = "qcom,pm8941-regulators";
+      vdd_l1_l3-supply = <&s1>;
+
+      s1: s1 {
+        regulator-min-microvolt = <1300000>;
+        regulator-max-microvolt = <1400000>;
+      };
+
+      l1: l1 {
+        regulator-min-microvolt = <1225000>;
+        regulator-max-microvolt = <1300000>;
+      };
+    };
+
+  - |
+    saw3: syscon@9a10000 {
+      compatible = "syscon";
+      reg = <0x9a10000 0x1000>;
+    };
+
+    regulators {
+      compatible = "qcom,pm8994-regulators";
+      qcom,saw-reg = <&saw3>;
+
+      s8 {
+        qcom,saw-slave;
+      };
+
+      s9 {
+        qcom,saw-slave;
+      };
+
+      s10 {
+        qcom,saw-slave;
+      };
+
+      pm8994_s11_saw: s11 {
+        qcom,saw-leader;
+        regulator-always-on;
+        regulator-min-microvolt = <900000>;
+        regulator-max-microvolt = <1140000>;
+      };
+    };
+...
-- 
2.36.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH v3 2/6] regulator: qcom_spmi: add support for HT_P150
  2022-05-17 20:53 [PATCH v3 1/6] dt-bindings: regulator: qcom,spmi-regulator: Convert to dtschema Robert Marko
@ 2022-05-17 20:53 ` Robert Marko
  2022-05-17 20:53 ` [PATCH v3 3/6] dt-bindings: regulator: qcom,spmi-regulator: add PMP8074 PMIC Robert Marko
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 16+ messages in thread
From: Robert Marko @ 2022-05-17 20:53 UTC (permalink / raw)
  To: agross, bjorn.andersson, lgirdwood, broonie, robh+dt,
	krzysztof.kozlowski+dt, linux-arm-msm, linux-kernel, devicetree
  Cc: Robert Marko

HT_P150 is a LDO PMOS regulator based on LV P150 using HFS430 layout
found in PMP8074 and PMS405 PMIC-s.

Both PMP8074 and PMS405 define the programmable range as 1.616V to 3.304V
but the actual MAX output voltage depends on the exact LDO in each of
the PMIC-s.

It has a max current of 150mA, voltage step of 8mV.

Signed-off-by: Robert Marko <robimarko@gmail.com>
---
 drivers/regulator/qcom_spmi-regulator.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/regulator/qcom_spmi-regulator.c b/drivers/regulator/qcom_spmi-regulator.c
index 02bfce981150..38bbc70241ae 100644
--- a/drivers/regulator/qcom_spmi-regulator.c
+++ b/drivers/regulator/qcom_spmi-regulator.c
@@ -164,6 +164,7 @@ enum spmi_regulator_subtype {
 	SPMI_REGULATOR_SUBTYPE_ULT_HF_CTL3	= 0x0f,
 	SPMI_REGULATOR_SUBTYPE_ULT_HF_CTL4	= 0x10,
 	SPMI_REGULATOR_SUBTYPE_HFS430		= 0x0a,
+	SPMI_REGULATOR_SUBTYPE_HT_P150		= 0x35,
 };
 
 enum spmi_common_regulator_registers {
@@ -544,6 +545,10 @@ static struct spmi_voltage_range hfs430_ranges[] = {
 	SPMI_VOLTAGE_RANGE(0, 320000, 320000, 2040000, 2040000, 8000),
 };
 
+static struct spmi_voltage_range ht_p150_ranges[] = {
+	SPMI_VOLTAGE_RANGE(0, 1616000, 1616000, 3304000, 3304000, 8000),
+};
+
 static DEFINE_SPMI_SET_POINTS(pldo);
 static DEFINE_SPMI_SET_POINTS(nldo1);
 static DEFINE_SPMI_SET_POINTS(nldo2);
@@ -564,6 +569,7 @@ static DEFINE_SPMI_SET_POINTS(nldo660);
 static DEFINE_SPMI_SET_POINTS(ht_lvpldo);
 static DEFINE_SPMI_SET_POINTS(ht_nldo);
 static DEFINE_SPMI_SET_POINTS(hfs430);
+static DEFINE_SPMI_SET_POINTS(ht_p150);
 
 static inline int spmi_vreg_read(struct spmi_regulator *vreg, u16 addr, u8 *buf,
 				 int len)
@@ -1458,6 +1464,7 @@ static const struct regulator_ops spmi_hfs430_ops = {
 
 static const struct spmi_regulator_mapping supported_regulators[] = {
 	/*           type subtype dig_min dig_max ltype ops setpoints hpm_min */
+	SPMI_VREG(LDO,   HT_P150,  0, INF, HFS430, hfs430, ht_p150, 10000),
 	SPMI_VREG(BUCK,  GP_CTL,   0, INF, SMPS,   smps,   smps,   100000),
 	SPMI_VREG(BUCK,  HFS430,   0, INF, HFS430, hfs430, hfs430,  10000),
 	SPMI_VREG(LDO,   N300,     0, INF, LDO,    ldo,    nldo1,   10000),
-- 
2.36.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH v3 3/6] dt-bindings: regulator: qcom,spmi-regulator: add PMP8074 PMIC
  2022-05-17 20:53 [PATCH v3 1/6] dt-bindings: regulator: qcom,spmi-regulator: Convert to dtschema Robert Marko
  2022-05-17 20:53 ` [PATCH v3 2/6] regulator: qcom_spmi: add support for HT_P150 Robert Marko
@ 2022-05-17 20:53 ` Robert Marko
  2022-05-18 13:10   ` Krzysztof Kozlowski
  2022-05-17 20:53 ` [PATCH v3 4/6] regulator: qcom_spmi: Add support for PMP8074 regulators Robert Marko
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 16+ messages in thread
From: Robert Marko @ 2022-05-17 20:53 UTC (permalink / raw)
  To: agross, bjorn.andersson, lgirdwood, broonie, robh+dt,
	krzysztof.kozlowski+dt, linux-arm-msm, linux-kernel, devicetree
  Cc: Robert Marko

Document the PMP8074 PMIC compatible.

Signed-off-by: Robert Marko <robimarko@gmail.com>
---
Changes in v3:
* Add supply matching
---
 .../bindings/regulator/qcom,spmi-regulator.yaml      | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/Documentation/devicetree/bindings/regulator/qcom,spmi-regulator.yaml b/Documentation/devicetree/bindings/regulator/qcom,spmi-regulator.yaml
index 7f51e305eaae..334ba9e5e177 100644
--- a/Documentation/devicetree/bindings/regulator/qcom,spmi-regulator.yaml
+++ b/Documentation/devicetree/bindings/regulator/qcom,spmi-regulator.yaml
@@ -23,6 +23,7 @@ properties:
       - qcom,pm8950-regulators
       - qcom,pm8994-regulators
       - qcom,pmi8994-regulators
+      - qcom,pmp8074-regulators
       - qcom,pms405-regulators
 
   interrupts: true
@@ -280,6 +281,17 @@ allOf:
         vdd_l1-supply: true
       patternProperties:
         "^vdd_s[1-3]-supply$": true
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,pmp8074-regulators
+    then:
+      properties:
+        vdd_l10_l11_l12_l13-supply: true
+      patternProperties:
+        "^vdd_s[3-4]-supply$": true
   - if:
       properties:
         compatible:
-- 
2.36.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH v3 4/6] regulator: qcom_spmi: Add support for PMP8074 regulators
  2022-05-17 20:53 [PATCH v3 1/6] dt-bindings: regulator: qcom,spmi-regulator: Convert to dtschema Robert Marko
  2022-05-17 20:53 ` [PATCH v3 2/6] regulator: qcom_spmi: add support for HT_P150 Robert Marko
  2022-05-17 20:53 ` [PATCH v3 3/6] dt-bindings: regulator: qcom,spmi-regulator: add PMP8074 PMIC Robert Marko
@ 2022-05-17 20:53 ` Robert Marko
  2022-05-18 13:42   ` Konrad Dybcio
  2022-05-17 20:53 ` [PATCH v3 5/6] arm64: dts: ipq8074: add SPMI PMP8074 PMIC regulators Robert Marko
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 16+ messages in thread
From: Robert Marko @ 2022-05-17 20:53 UTC (permalink / raw)
  To: agross, bjorn.andersson, lgirdwood, broonie, robh+dt,
	krzysztof.kozlowski+dt, linux-arm-msm, linux-kernel, devicetree
  Cc: Robert Marko

PMP8074 is a companion PMIC for the Qualcomm IPQ8074 WiSoC-s.

It features 5 HF-SMPS and 13 LDO regulators.

This commit adds support for S3 and S4 HF-SMPS buck regulators of
the HFS430 type and LDO11 of the HT_P150 type.
S3 is the CPU cluster voltage supply, S4 supplies the UBI32 NPU cores
and LDO11 is the SDIO/eMMC I/O voltage regulator required for high speeds.

Signed-off-by: Robert Marko <robimarko@gmail.com>
---
 drivers/regulator/qcom_spmi-regulator.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/regulator/qcom_spmi-regulator.c b/drivers/regulator/qcom_spmi-regulator.c
index 38bbc70241ae..696b088aae40 100644
--- a/drivers/regulator/qcom_spmi-regulator.c
+++ b/drivers/regulator/qcom_spmi-regulator.c
@@ -2137,6 +2137,13 @@ static const struct spmi_regulator_data pms405_regulators[] = {
 	{ }
 };
 
+static const struct spmi_regulator_data pmp8074_regulators[] = {
+	{ "s3", 0x1a00, "vdd_s3"},
+	{ "s4", 0x1d00, "vdd_s4"},
+	{ "l11", 0x4a00, "vdd_l10_l11_l12_l13"},
+	{ }
+};
+
 static const struct of_device_id qcom_spmi_regulator_match[] = {
 	{ .compatible = "qcom,pm8004-regulators", .data = &pm8004_regulators },
 	{ .compatible = "qcom,pm8005-regulators", .data = &pm8005_regulators },
@@ -2150,6 +2157,7 @@ static const struct of_device_id qcom_spmi_regulator_match[] = {
 	{ .compatible = "qcom,pm660-regulators", .data = &pm660_regulators },
 	{ .compatible = "qcom,pm660l-regulators", .data = &pm660l_regulators },
 	{ .compatible = "qcom,pms405-regulators", .data = &pms405_regulators },
+	{ .compatible = "qcom,pmp8074-regulators", .data = &pmp8074_regulators },
 	{ }
 };
 MODULE_DEVICE_TABLE(of, qcom_spmi_regulator_match);
-- 
2.36.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH v3 5/6] arm64: dts: ipq8074: add SPMI PMP8074 PMIC regulators
  2022-05-17 20:53 [PATCH v3 1/6] dt-bindings: regulator: qcom,spmi-regulator: Convert to dtschema Robert Marko
                   ` (2 preceding siblings ...)
  2022-05-17 20:53 ` [PATCH v3 4/6] regulator: qcom_spmi: Add support for PMP8074 regulators Robert Marko
@ 2022-05-17 20:53 ` Robert Marko
  2022-05-18 13:40   ` Konrad Dybcio
  2022-05-17 20:53 ` [PATCH v3 6/6] arm64: dts: ipq8074: add VQMMC supply Robert Marko
  2022-05-18 12:58 ` [PATCH v3 1/6] dt-bindings: regulator: qcom,spmi-regulator: Convert to dtschema Krzysztof Kozlowski
  5 siblings, 1 reply; 16+ messages in thread
From: Robert Marko @ 2022-05-17 20:53 UTC (permalink / raw)
  To: agross, bjorn.andersson, lgirdwood, broonie, robh+dt,
	krzysztof.kozlowski+dt, linux-arm-msm, linux-kernel, devicetree
  Cc: Robert Marko

PMP8074 is used in IPQ8074 and provides S3 for cores,
S4 for UBI core and LDO11 for SDIO/eMMC.

So, lets add the nodes in preparation for DVFS later.

Signed-off-by: Robert Marko <robimarko@gmail.com>
---
 arch/arm64/boot/dts/qcom/ipq8074.dtsi | 34 +++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/ipq8074.dtsi b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
index 789fec7c6aa4..d1a0b77c38a4 100644
--- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
@@ -5,6 +5,7 @@
 
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/clock/qcom,gcc-ipq8074.h>
+#include <dt-bindings/spmi/spmi.h>
 
 / {
 	model = "Qualcomm Technologies, Inc. IPQ8074";
@@ -421,6 +422,39 @@ spmi_bus: spmi@200f000 {
 			interrupt-controller;
 			#interrupt-cells = <4>;
 			cell-index = <0>;
+
+			pmic@1 {
+				compatible ="qcom,spmi-pmic";
+				reg = <0x1 SPMI_USID>;
+				#address-cells = <1>;
+				#size-cells = <0>;
+
+				regulators {
+					compatible = "qcom,pmp8074-regulators";
+
+					s3: s3 {
+						regulator-name = "vdd_s3";
+						regulator-min-microvolt = <592000>;
+						regulator-max-microvolt = <1064000>;
+						regulator-always-on;
+						regulator-boot-on;
+					};
+
+					s4: s4 {
+						regulator-name = "vdd_s4";
+						regulator-min-microvolt = <712000>;
+						regulator-max-microvolt = <992000>;
+						regulator-always-on;
+						regulator-boot-on;
+					};
+
+					l11: l11 {
+						regulator-name = "l11";
+						regulator-min-microvolt = <1800000>;
+						regulator-max-microvolt = <3300000>;
+					};
+				};
+			};
 		};
 
 		sdhc_1: sdhci@7824900 {
-- 
2.36.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH v3 6/6] arm64: dts: ipq8074: add VQMMC supply
  2022-05-17 20:53 [PATCH v3 1/6] dt-bindings: regulator: qcom,spmi-regulator: Convert to dtschema Robert Marko
                   ` (3 preceding siblings ...)
  2022-05-17 20:53 ` [PATCH v3 5/6] arm64: dts: ipq8074: add SPMI PMP8074 PMIC regulators Robert Marko
@ 2022-05-17 20:53 ` Robert Marko
  2022-05-18 12:58 ` [PATCH v3 1/6] dt-bindings: regulator: qcom,spmi-regulator: Convert to dtschema Krzysztof Kozlowski
  5 siblings, 0 replies; 16+ messages in thread
From: Robert Marko @ 2022-05-17 20:53 UTC (permalink / raw)
  To: agross, bjorn.andersson, lgirdwood, broonie, robh+dt,
	krzysztof.kozlowski+dt, linux-arm-msm, linux-kernel, devicetree
  Cc: Robert Marko

SDHCI controller claims DDR, HS200 and HS400 1.8V support, however it
cannot achieve those using the 2.95V I/O that is the default set by
firmware.

Since we know have access to the PMP8074 PMIC provided LDO that provides
the I/O voltage set it as VQMMC supply so that higher speeds can actually
be achieved.

Signed-off-by: Robert Marko <robimarko@gmail.com>
---
 arch/arm64/boot/dts/qcom/ipq8074.dtsi | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/ipq8074.dtsi b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
index d1a0b77c38a4..fea3c4ee3565 100644
--- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
@@ -476,6 +476,8 @@ sdhc_1: sdhci@7824900 {
 			mmc-hs400-1_8v;
 			bus-width = <8>;
 
+			vqmmc-supply = <&l11>;
+
 			status = "disabled";
 		};
 
-- 
2.36.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* Re: [PATCH v3 1/6] dt-bindings: regulator: qcom,spmi-regulator: Convert to dtschema
  2022-05-17 20:53 [PATCH v3 1/6] dt-bindings: regulator: qcom,spmi-regulator: Convert to dtschema Robert Marko
                   ` (4 preceding siblings ...)
  2022-05-17 20:53 ` [PATCH v3 6/6] arm64: dts: ipq8074: add VQMMC supply Robert Marko
@ 2022-05-18 12:58 ` Krzysztof Kozlowski
  2022-05-18 13:25   ` Robert Marko
  5 siblings, 1 reply; 16+ messages in thread
From: Krzysztof Kozlowski @ 2022-05-18 12:58 UTC (permalink / raw)
  To: Robert Marko, agross, bjorn.andersson, lgirdwood, broonie,
	robh+dt, krzysztof.kozlowski+dt, linux-arm-msm, linux-kernel,
	devicetree

On 17/05/2022 22:53, Robert Marko wrote:
> Convert the bindings of Qualcomm SPMI regulators to DT schema.
> 
> Signed-off-by: Robert Marko <robimarko@gmail.com>


> +$id: http://devicetree.org/schemas/regulator/qcom,spmi-regulator.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Qualcomm SPMI Regulators
> +
> +maintainers:
> +  - Robert Marko <robimarko@gmail.com>
> +
> +properties:
> +  compatible:
> +    enum:
> +      - qcom,pm660-regulators
> +      - qcom,pm660l-regulators
> +      - qcom,pm8004-regulators
> +      - qcom,pm8005-regulators
> +      - qcom,pm8226-regulators
> +      - qcom,pm8841-regulators
> +      - qcom,pm8916-regulators
> +      - qcom,pm8941-regulators
> +      - qcom,pm8950-regulators
> +      - qcom,pm8994-regulators
> +      - qcom,pmi8994-regulators
> +      - qcom,pms405-regulators
> +
> +  interrupts: true
> +
> +  interrupt-names: true

I think we misunderstood each other. Old bindings indeed did not require
the interrupts, although if present they should be always defined.
Therefore here you should specify number of items and their names.

Rest looks ok


Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v3 3/6] dt-bindings: regulator: qcom,spmi-regulator: add PMP8074 PMIC
  2022-05-17 20:53 ` [PATCH v3 3/6] dt-bindings: regulator: qcom,spmi-regulator: add PMP8074 PMIC Robert Marko
@ 2022-05-18 13:10   ` Krzysztof Kozlowski
  0 siblings, 0 replies; 16+ messages in thread
From: Krzysztof Kozlowski @ 2022-05-18 13:10 UTC (permalink / raw)
  To: Robert Marko, agross, bjorn.andersson, lgirdwood, broonie,
	robh+dt, krzysztof.kozlowski+dt, linux-arm-msm, linux-kernel,
	devicetree

On 17/05/2022 22:53, Robert Marko wrote:
> Document the PMP8074 PMIC compatible.
> 
> Signed-off-by: Robert Marko <robimarko@gmail.com>
> ---
> Changes in v3:
> * Add supply matching


Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>


Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v3 1/6] dt-bindings: regulator: qcom,spmi-regulator: Convert to dtschema
  2022-05-18 12:58 ` [PATCH v3 1/6] dt-bindings: regulator: qcom,spmi-regulator: Convert to dtschema Krzysztof Kozlowski
@ 2022-05-18 13:25   ` Robert Marko
  2022-05-18 13:34     ` Krzysztof Kozlowski
  0 siblings, 1 reply; 16+ messages in thread
From: Robert Marko @ 2022-05-18 13:25 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Andy Gross, Bjorn Andersson, lgirdwood, broonie, Rob Herring,
	krzysztof.kozlowski+dt, linux-arm-msm, open list,
	Devicetree List

On Wed, 18 May 2022 at 14:58, Krzysztof Kozlowski
<krzysztof.kozlowski@linaro.org> wrote:
>
> On 17/05/2022 22:53, Robert Marko wrote:
> > Convert the bindings of Qualcomm SPMI regulators to DT schema.
> >
> > Signed-off-by: Robert Marko <robimarko@gmail.com>
>
>
> > +$id: http://devicetree.org/schemas/regulator/qcom,spmi-regulator.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Qualcomm SPMI Regulators
> > +
> > +maintainers:
> > +  - Robert Marko <robimarko@gmail.com>
> > +
> > +properties:
> > +  compatible:
> > +    enum:
> > +      - qcom,pm660-regulators
> > +      - qcom,pm660l-regulators
> > +      - qcom,pm8004-regulators
> > +      - qcom,pm8005-regulators
> > +      - qcom,pm8226-regulators
> > +      - qcom,pm8841-regulators
> > +      - qcom,pm8916-regulators
> > +      - qcom,pm8941-regulators
> > +      - qcom,pm8950-regulators
> > +      - qcom,pm8994-regulators
> > +      - qcom,pmi8994-regulators
> > +      - qcom,pms405-regulators
> > +
> > +  interrupts: true
> > +
> > +  interrupt-names: true
>
> I think we misunderstood each other. Old bindings indeed did not require
> the interrupts, although if present they should be always defined.
> Therefore here you should specify number of items and their names.

Yeah, I think we are misunderstanding each other.

Old text-based bindings specified the interrupts, but no naming or
number was enforced,
so I looked into the driver to see what is going on.
Only pm8941 has interrupts defined in the driver and DTS, so I added
those based on compatible
matching, the same as with supplies.
My logic was that it was only valid for interrupts to be described if
PM8941 was used as describing
interrupts for other regulator models will do nothing.

Regards,
Robert
>
> Rest looks ok
>
>
> Best regards,
> Krzysztof

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v3 1/6] dt-bindings: regulator: qcom,spmi-regulator: Convert to dtschema
  2022-05-18 13:25   ` Robert Marko
@ 2022-05-18 13:34     ` Krzysztof Kozlowski
  2022-05-18 14:00       ` Robert Marko
  0 siblings, 1 reply; 16+ messages in thread
From: Krzysztof Kozlowski @ 2022-05-18 13:34 UTC (permalink / raw)
  To: Robert Marko
  Cc: Andy Gross, Bjorn Andersson, lgirdwood, broonie, Rob Herring,
	krzysztof.kozlowski+dt, linux-arm-msm, open list,
	Devicetree List

On 18/05/2022 15:25, Robert Marko wrote:
>> I think we misunderstood each other. Old bindings indeed did not require
>> the interrupts, although if present they should be always defined.
>> Therefore here you should specify number of items and their names.
> 
> Yeah, I think we are misunderstanding each other.
> 
> Old text-based bindings specified the interrupts, but no naming or
> number was enforced,
> so I looked into the driver to see what is going on.
> Only pm8941 has interrupts defined in the driver and DTS, so I added
> those based on compatible
> matching, the same as with supplies.
> My logic was that it was only valid for interrupts to be described if
> PM8941 was used as describing
> interrupts for other regulator models will do nothing.

Indeed, you're right, thanks for explanation. Your patch in such case is
correct way of conversion but allows any number of interrupts with any
names, so it's to relaxed. Maybe then better go to previous version,
where these interrupts were defined only for one variant. For other
variants they would fail on as unevaluated?

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v3 5/6] arm64: dts: ipq8074: add SPMI PMP8074 PMIC regulators
  2022-05-17 20:53 ` [PATCH v3 5/6] arm64: dts: ipq8074: add SPMI PMP8074 PMIC regulators Robert Marko
@ 2022-05-18 13:40   ` Konrad Dybcio
  0 siblings, 0 replies; 16+ messages in thread
From: Konrad Dybcio @ 2022-05-18 13:40 UTC (permalink / raw)
  To: Robert Marko, agross, bjorn.andersson, lgirdwood, broonie,
	robh+dt, krzysztof.kozlowski+dt, linux-arm-msm, linux-kernel,
	devicetree


On 17/05/2022 22:53, Robert Marko wrote:
> PMP8074 is used in IPQ8074 and provides S3 for cores,
> S4 for UBI core and LDO11 for SDIO/eMMC.
>
> So, lets add the nodes in preparation for DVFS later.
>
> Signed-off-by: Robert Marko <robimarko@gmail.com>
> ---
>   arch/arm64/boot/dts/qcom/ipq8074.dtsi | 34 +++++++++++++++++++++++++++
>   1 file changed, 34 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/ipq8074.dtsi b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
> index 789fec7c6aa4..d1a0b77c38a4 100644
> --- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
> +++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
> @@ -5,6 +5,7 @@
>   
>   #include <dt-bindings/interrupt-controller/arm-gic.h>
>   #include <dt-bindings/clock/qcom,gcc-ipq8074.h>
> +#include <dt-bindings/spmi/spmi.h>
>   
>   / {
>   	model = "Qualcomm Technologies, Inc. IPQ8074";
> @@ -421,6 +422,39 @@ spmi_bus: spmi@200f000 {
>   			interrupt-controller;
>   			#interrupt-cells = <4>;
>   			cell-index = <0>;
> +
> +			pmic@1 {

Hi!


These nodes belong in the PMIC DTSI (check pm8150.dtsi and others alike 
for reference).


Konrad

> +				compatible ="qcom,spmi-pmic";
> +				reg = <0x1 SPMI_USID>;
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +
> +				regulators {
> +					compatible = "qcom,pmp8074-regulators";
> +
> +					s3: s3 {
> +						regulator-name = "vdd_s3";
> +						regulator-min-microvolt = <592000>;
> +						regulator-max-microvolt = <1064000>;
> +						regulator-always-on;
> +						regulator-boot-on;
> +					};
> +
> +					s4: s4 {
> +						regulator-name = "vdd_s4";
> +						regulator-min-microvolt = <712000>;
> +						regulator-max-microvolt = <992000>;
> +						regulator-always-on;
> +						regulator-boot-on;
> +					};
> +
> +					l11: l11 {
> +						regulator-name = "l11";
> +						regulator-min-microvolt = <1800000>;
> +						regulator-max-microvolt = <3300000>;
> +					};
> +				};
> +			};
>   		};
>   
>   		sdhc_1: sdhci@7824900 {
>

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v3 4/6] regulator: qcom_spmi: Add support for PMP8074 regulators
  2022-05-17 20:53 ` [PATCH v3 4/6] regulator: qcom_spmi: Add support for PMP8074 regulators Robert Marko
@ 2022-05-18 13:42   ` Konrad Dybcio
  2022-05-18 17:31     ` Robert Marko
  0 siblings, 1 reply; 16+ messages in thread
From: Konrad Dybcio @ 2022-05-18 13:42 UTC (permalink / raw)
  To: Robert Marko, agross, bjorn.andersson, lgirdwood, broonie,
	robh+dt, krzysztof.kozlowski+dt, linux-arm-msm, linux-kernel,
	devicetree


On 17/05/2022 22:53, Robert Marko wrote:
> PMP8074 is a companion PMIC for the Qualcomm IPQ8074 WiSoC-s.
>
> It features 5 HF-SMPS and 13 LDO regulators.
>
> This commit adds support for S3 and S4 HF-SMPS buck regulators of
> the HFS430 type and LDO11 of the HT_P150 type.
> S3 is the CPU cluster voltage supply, S4 supplies the UBI32 NPU cores
> and LDO11 is the SDIO/eMMC I/O voltage regulator required for high speeds.
>
> Signed-off-by: Robert Marko <robimarko@gmail.com>
> ---
>   drivers/regulator/qcom_spmi-regulator.c | 8 ++++++++
>   1 file changed, 8 insertions(+)
>
> diff --git a/drivers/regulator/qcom_spmi-regulator.c b/drivers/regulator/qcom_spmi-regulator.c
> index 38bbc70241ae..696b088aae40 100644
> --- a/drivers/regulator/qcom_spmi-regulator.c
> +++ b/drivers/regulator/qcom_spmi-regulator.c
> @@ -2137,6 +2137,13 @@ static const struct spmi_regulator_data pms405_regulators[] = {
>   	{ }
>   };
>   
> +static const struct spmi_regulator_data pmp8074_regulators[] = {

Please sort the struct alphabletically.


> +	{ "s3", 0x1a00, "vdd_s3"},
> +	{ "s4", 0x1d00, "vdd_s4"},
> +	{ "l11", 0x4a00, "vdd_l10_l11_l12_l13"},

Are the other regulators somehow not controllable through SPMI? Please 
leave a comment if that's the case.


> +	{ }
> +};
> +
>   static const struct of_device_id qcom_spmi_regulator_match[] = {
>   	{ .compatible = "qcom,pm8004-regulators", .data = &pm8004_regulators },
>   	{ .compatible = "qcom,pm8005-regulators", .data = &pm8005_regulators },
> @@ -2150,6 +2157,7 @@ static const struct of_device_id qcom_spmi_regulator_match[] = {
>   	{ .compatible = "qcom,pm660-regulators", .data = &pm660_regulators },
>   	{ .compatible = "qcom,pm660l-regulators", .data = &pm660l_regulators },
>   	{ .compatible = "qcom,pms405-regulators", .data = &pms405_regulators },
> +	{ .compatible = "qcom,pmp8074-regulators", .data = &pmp8074_regulators },

Please sort the compatible too.


Konrad

>   	{ }
>   };
>   MODULE_DEVICE_TABLE(of, qcom_spmi_regulator_match);
>

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v3 1/6] dt-bindings: regulator: qcom,spmi-regulator: Convert to dtschema
  2022-05-18 13:34     ` Krzysztof Kozlowski
@ 2022-05-18 14:00       ` Robert Marko
  2022-05-18 14:51         ` Krzysztof Kozlowski
  0 siblings, 1 reply; 16+ messages in thread
From: Robert Marko @ 2022-05-18 14:00 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Andy Gross, Bjorn Andersson, lgirdwood, broonie, Rob Herring,
	krzysztof.kozlowski+dt, linux-arm-msm, open list,
	Devicetree List

On Wed, 18 May 2022 at 15:34, Krzysztof Kozlowski
<krzysztof.kozlowski@linaro.org> wrote:
>
> On 18/05/2022 15:25, Robert Marko wrote:
> >> I think we misunderstood each other. Old bindings indeed did not require
> >> the interrupts, although if present they should be always defined.
> >> Therefore here you should specify number of items and their names.
> >
> > Yeah, I think we are misunderstanding each other.
> >
> > Old text-based bindings specified the interrupts, but no naming or
> > number was enforced,
> > so I looked into the driver to see what is going on.
> > Only pm8941 has interrupts defined in the driver and DTS, so I added
> > those based on compatible
> > matching, the same as with supplies.
> > My logic was that it was only valid for interrupts to be described if
> > PM8941 was used as describing
> > interrupts for other regulator models will do nothing.
>
> Indeed, you're right, thanks for explanation. Your patch in such case is
> correct way of conversion but allows any number of interrupts with any
> names, so it's to relaxed. Maybe then better go to previous version,
> where these interrupts were defined only for one variant. For other
> variants they would fail on as unevaluated?

Yeah, that was my intention with not having interrupts as the generic property.
I will remove them as generic property and only allow them per
compatible, cause I tested
adding interrupts to a PMIC DTS that does not allow them and make
dtbs_check will
warn about those being unevaluated.

Regards,
Robert
>
> Best regards,
> Krzysztof

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v3 1/6] dt-bindings: regulator: qcom,spmi-regulator: Convert to dtschema
  2022-05-18 14:00       ` Robert Marko
@ 2022-05-18 14:51         ` Krzysztof Kozlowski
  0 siblings, 0 replies; 16+ messages in thread
From: Krzysztof Kozlowski @ 2022-05-18 14:51 UTC (permalink / raw)
  To: Robert Marko
  Cc: Andy Gross, Bjorn Andersson, lgirdwood, broonie, Rob Herring,
	krzysztof.kozlowski+dt, linux-arm-msm, open list,
	Devicetree List

On 18/05/2022 16:00, Robert Marko wrote:
> 
> Yeah, that was my intention with not having interrupts as the generic property.
> I will remove them as generic property and only allow them per
> compatible, cause I tested
> adding interrupts to a PMIC DTS that does not allow them and make
> dtbs_check will
> warn about those being unevaluated.

Thanks, apologies for the confusion.


Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v3 4/6] regulator: qcom_spmi: Add support for PMP8074 regulators
  2022-05-18 13:42   ` Konrad Dybcio
@ 2022-05-18 17:31     ` Robert Marko
  2022-05-18 18:25       ` Robert Marko
  0 siblings, 1 reply; 16+ messages in thread
From: Robert Marko @ 2022-05-18 17:31 UTC (permalink / raw)
  To: Konrad Dybcio
  Cc: Andy Gross, Bjorn Andersson, lgirdwood, broonie, Rob Herring,
	krzysztof.kozlowski+dt, linux-arm-msm, open list,
	Devicetree List

On Wed, 18 May 2022 at 15:42, Konrad Dybcio
<konrad.dybcio@somainline.org> wrote:
>
>
> On 17/05/2022 22:53, Robert Marko wrote:
> > PMP8074 is a companion PMIC for the Qualcomm IPQ8074 WiSoC-s.
> >
> > It features 5 HF-SMPS and 13 LDO regulators.
> >
> > This commit adds support for S3 and S4 HF-SMPS buck regulators of
> > the HFS430 type and LDO11 of the HT_P150 type.
> > S3 is the CPU cluster voltage supply, S4 supplies the UBI32 NPU cores
> > and LDO11 is the SDIO/eMMC I/O voltage regulator required for high speeds.
> >
> > Signed-off-by: Robert Marko <robimarko@gmail.com>
> > ---
> >   drivers/regulator/qcom_spmi-regulator.c | 8 ++++++++
> >   1 file changed, 8 insertions(+)
> >
> > diff --git a/drivers/regulator/qcom_spmi-regulator.c b/drivers/regulator/qcom_spmi-regulator.c
> > index 38bbc70241ae..696b088aae40 100644
> > --- a/drivers/regulator/qcom_spmi-regulator.c
> > +++ b/drivers/regulator/qcom_spmi-regulator.c
> > @@ -2137,6 +2137,13 @@ static const struct spmi_regulator_data pms405_regulators[] = {
> >       { }
> >   };
> >
> > +static const struct spmi_regulator_data pmp8074_regulators[] = {
>
> Please sort the struct alphabletically.

Hi,
Will fixup in v3.

>
>
> > +     { "s3", 0x1a00, "vdd_s3"},
> > +     { "s4", 0x1d00, "vdd_s4"},
> > +     { "l11", 0x4a00, "vdd_l10_l11_l12_l13"},
>
> Are the other regulators somehow not controllable through SPMI? Please
> leave a comment if that's the case.

No, they are all controllable via SPMI as far as I know.
Though the output table completely leaves out L7, L9, and L10.
L5 and L6 are specified as Ebuck-4 subtypes (0x3d), while L10 is not
listed at all (0x34).
These are not currently supported and I don't have enough information
to support them.
L1, L2, L3, L4, L7, L8, L9, L11, L12, and L13 appear to have their
subtype already supported.
L1, L2, L3, L8, L9 subtype (0x32)
L4 subtype (0x30)
L7, L11, L12, L13 subtype (0x35)

S3, S4, and L11 are the most important ones.
>
>
> > +     { }
> > +};
> > +
> >   static const struct of_device_id qcom_spmi_regulator_match[] = {
> >       { .compatible = "qcom,pm8004-regulators", .data = &pm8004_regulators },
> >       { .compatible = "qcom,pm8005-regulators", .data = &pm8005_regulators },
> > @@ -2150,6 +2157,7 @@ static const struct of_device_id qcom_spmi_regulator_match[] = {
> >       { .compatible = "qcom,pm660-regulators", .data = &pm660_regulators },
> >       { .compatible = "qcom,pm660l-regulators", .data = &pm660l_regulators },
> >       { .compatible = "qcom,pms405-regulators", .data = &pms405_regulators },
> > +     { .compatible = "qcom,pmp8074-regulators", .data = &pmp8074_regulators },
>
> Please sort the compatible too.

Will fixup in v3.

Regards,
Robert
>
>
> Konrad
>
> >       { }
> >   };
> >   MODULE_DEVICE_TABLE(of, qcom_spmi_regulator_match);
> >

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v3 4/6] regulator: qcom_spmi: Add support for PMP8074 regulators
  2022-05-18 17:31     ` Robert Marko
@ 2022-05-18 18:25       ` Robert Marko
  0 siblings, 0 replies; 16+ messages in thread
From: Robert Marko @ 2022-05-18 18:25 UTC (permalink / raw)
  To: Konrad Dybcio
  Cc: Andy Gross, Bjorn Andersson, lgirdwood, broonie, Rob Herring,
	krzysztof.kozlowski+dt, linux-arm-msm, open list,
	Devicetree List

On Wed, 18 May 2022 at 19:31, Robert Marko <robimarko@gmail.com> wrote:
>
> On Wed, 18 May 2022 at 15:42, Konrad Dybcio
> <konrad.dybcio@somainline.org> wrote:
> >
> >
> > On 17/05/2022 22:53, Robert Marko wrote:
> > > PMP8074 is a companion PMIC for the Qualcomm IPQ8074 WiSoC-s.
> > >
> > > It features 5 HF-SMPS and 13 LDO regulators.
> > >
> > > This commit adds support for S3 and S4 HF-SMPS buck regulators of
> > > the HFS430 type and LDO11 of the HT_P150 type.
> > > S3 is the CPU cluster voltage supply, S4 supplies the UBI32 NPU cores
> > > and LDO11 is the SDIO/eMMC I/O voltage regulator required for high speeds.
> > >
> > > Signed-off-by: Robert Marko <robimarko@gmail.com>
> > > ---
> > >   drivers/regulator/qcom_spmi-regulator.c | 8 ++++++++
> > >   1 file changed, 8 insertions(+)
> > >
> > > diff --git a/drivers/regulator/qcom_spmi-regulator.c b/drivers/regulator/qcom_spmi-regulator.c
> > > index 38bbc70241ae..696b088aae40 100644
> > > --- a/drivers/regulator/qcom_spmi-regulator.c
> > > +++ b/drivers/regulator/qcom_spmi-regulator.c
> > > @@ -2137,6 +2137,13 @@ static const struct spmi_regulator_data pms405_regulators[] = {
> > >       { }
> > >   };
> > >
> > > +static const struct spmi_regulator_data pmp8074_regulators[] = {
> >
> > Please sort the struct alphabletically.
>
> Hi,
> Will fixup in v3.
>
> >
> >
> > > +     { "s3", 0x1a00, "vdd_s3"},
> > > +     { "s4", 0x1d00, "vdd_s4"},
> > > +     { "l11", 0x4a00, "vdd_l10_l11_l12_l13"},
> >
> > Are the other regulators somehow not controllable through SPMI? Please
> > leave a comment if that's the case.
>
> No, they are all controllable via SPMI as far as I know.
> Though the output table completely leaves out L7, L9, and L10.
> L5 and L6 are specified as Ebuck-4 subtypes (0x3d), while L10 is not
> listed at all (0x34).

Ok, I dug a bit further and L5/6 are HT_P600 and are easily supportable.
L10 is an HT_P50 type but it's listed as unused and left disabled, I don't know
its supported output voltage range.

Regards,
Robert

> These are not currently supported and I don't have enough information
> to support them.
> L1, L2, L3, L4, L7, L8, L9, L11, L12, and L13 appear to have their
> subtype already supported.
> L1, L2, L3, L8, L9 subtype (0x32)
> L4 subtype (0x30)
> L7, L11, L12, L13 subtype (0x35)
>
> S3, S4, and L11 are the most important ones.
> >
> >
> > > +     { }
> > > +};
> > > +
> > >   static const struct of_device_id qcom_spmi_regulator_match[] = {
> > >       { .compatible = "qcom,pm8004-regulators", .data = &pm8004_regulators },
> > >       { .compatible = "qcom,pm8005-regulators", .data = &pm8005_regulators },
> > > @@ -2150,6 +2157,7 @@ static const struct of_device_id qcom_spmi_regulator_match[] = {
> > >       { .compatible = "qcom,pm660-regulators", .data = &pm660_regulators },
> > >       { .compatible = "qcom,pm660l-regulators", .data = &pm660l_regulators },
> > >       { .compatible = "qcom,pms405-regulators", .data = &pms405_regulators },
> > > +     { .compatible = "qcom,pmp8074-regulators", .data = &pmp8074_regulators },
> >
> > Please sort the compatible too.
>
> Will fixup in v3.
>
> Regards,
> Robert
> >
> >
> > Konrad
> >
> > >       { }
> > >   };
> > >   MODULE_DEVICE_TABLE(of, qcom_spmi_regulator_match);
> > >

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2022-05-18 18:26 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-17 20:53 [PATCH v3 1/6] dt-bindings: regulator: qcom,spmi-regulator: Convert to dtschema Robert Marko
2022-05-17 20:53 ` [PATCH v3 2/6] regulator: qcom_spmi: add support for HT_P150 Robert Marko
2022-05-17 20:53 ` [PATCH v3 3/6] dt-bindings: regulator: qcom,spmi-regulator: add PMP8074 PMIC Robert Marko
2022-05-18 13:10   ` Krzysztof Kozlowski
2022-05-17 20:53 ` [PATCH v3 4/6] regulator: qcom_spmi: Add support for PMP8074 regulators Robert Marko
2022-05-18 13:42   ` Konrad Dybcio
2022-05-18 17:31     ` Robert Marko
2022-05-18 18:25       ` Robert Marko
2022-05-17 20:53 ` [PATCH v3 5/6] arm64: dts: ipq8074: add SPMI PMP8074 PMIC regulators Robert Marko
2022-05-18 13:40   ` Konrad Dybcio
2022-05-17 20:53 ` [PATCH v3 6/6] arm64: dts: ipq8074: add VQMMC supply Robert Marko
2022-05-18 12:58 ` [PATCH v3 1/6] dt-bindings: regulator: qcom,spmi-regulator: Convert to dtschema Krzysztof Kozlowski
2022-05-18 13:25   ` Robert Marko
2022-05-18 13:34     ` Krzysztof Kozlowski
2022-05-18 14:00       ` Robert Marko
2022-05-18 14:51         ` Krzysztof Kozlowski

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.