diff mbox series

[3/6] dt-bindings: thermal: tsens: document ipq8064 bindings

Message ID 20200709215136.28044-4-ansuelsmth@gmail.com (mailing list archive)
State Superseded
Headers show
Series Add support for ipq8064 tsens | expand

Commit Message

Christian Marangi July 9, 2020, 9:51 p.m. UTC
Document the use of regmap phandle for ipq8064 SoCs

Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
---
 .../bindings/thermal/qcom-tsens.yaml          | 51 ++++++++++++++++---
 1 file changed, 44 insertions(+), 7 deletions(-)

Comments

Rob Herring July 10, 2020, 4:24 p.m. UTC | #1
On Thu, 09 Jul 2020 23:51:33 +0200, Ansuel Smith wrote:
> Document the use of regmap phandle for ipq8064 SoCs
> 
> Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
> ---
>  .../bindings/thermal/qcom-tsens.yaml          | 51 ++++++++++++++++---
>  1 file changed, 44 insertions(+), 7 deletions(-)
> 


My bot found errors running 'make dt_binding_check' on your patch:

Documentation/devicetree/bindings/thermal/qcom-tsens.example.dts:21.38-31.11: Warning (unit_address_vs_reg): /example-0/thermal-sensor@900000: node has a unit name, but no reg or ranges property
/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/thermal/qcom-tsens.example.dt.yaml: thermal-sensor@900000: interrupts: [[0, 178, 4]] is too short
/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/thermal/qcom-tsens.example.dt.yaml: thermal-sensor@900000: '#qcom,sensors' is a required property
/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/thermal/qcom-tsens.example.dt.yaml: thermal-sensor@900000: 'interrupt-names' is a required property
/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/thermal/qcom-tsens.example.dt.yaml: thermal-sensor@900000: compatible: ['qcom,ipq8064-tsens'] is not valid under any of the given schemas (Possible causes of the failure):
	/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/thermal/qcom-tsens.example.dt.yaml: thermal-sensor@900000: compatible: ['qcom,ipq8064-tsens'] is too short
	/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/thermal/qcom-tsens.example.dt.yaml: thermal-sensor@900000: compatible:0: 'qcom,ipq8064-tsens' is not one of ['qcom,msm8976-tsens', 'qcom,qcs404-tsens']
	/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/thermal/qcom-tsens.example.dt.yaml: thermal-sensor@900000: compatible:0: 'qcom,ipq8064-tsens' is not one of ['qcom,msm8996-tsens', 'qcom,msm8998-tsens', 'qcom,sc7180-tsens', 'qcom,sdm845-tsens']

/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/thermal/qcom-tsens.example.dt.yaml: thermal-sensor@900000: nvmem-cell-names:1: 'calib_sel' was expected


See https://patchwork.ozlabs.org/patch/1326228

If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure dt-schema is up to date:

pip3 install git+https://github.com/devicetree-org/dt-schema.git@master --upgrade

Please check and re-submit.
Rob Herring July 10, 2020, 4:26 p.m. UTC | #2
On Thu, Jul 09, 2020 at 11:51:33PM +0200, Ansuel Smith wrote:
> Document the use of regmap phandle for ipq8064 SoCs
> 
> Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
> ---
>  .../bindings/thermal/qcom-tsens.yaml          | 51 ++++++++++++++++---
>  1 file changed, 44 insertions(+), 7 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/thermal/qcom-tsens.yaml b/Documentation/devicetree/bindings/thermal/qcom-tsens.yaml
> index d7be931b42d2..5ceb5d720e16 100644
> --- a/Documentation/devicetree/bindings/thermal/qcom-tsens.yaml
> +++ b/Documentation/devicetree/bindings/thermal/qcom-tsens.yaml
> @@ -24,6 +24,7 @@ properties:
>            - enum:
>                - qcom,msm8916-tsens
>                - qcom,msm8974-tsens
> +              - qcom,ipq8064-tsens
>            - const: qcom,tsens-v0_1
>  
>        - description: v1 of TSENS
> @@ -47,6 +48,11 @@ properties:
>        - description: TM registers
>        - description: SROT registers
>  
> +  regmap:
> +    description:
> +      Phandle to the gcc. On ipq8064 SoCs gcc and tsense share the same regs.
> +    $ref: /schemas/types.yaml#/definitions/phandle

Can't you make this a child of the gcc and drop this property?

> +
>    interrupts:
>      minItems: 1
>      items:
> @@ -111,17 +117,48 @@ allOf:
>          interrupt-names:
>            minItems: 2
>  
> -required:
> -  - compatible
> -  - reg
> -  - "#qcom,sensors"
> -  - interrupts
> -  - interrupt-names
> -  - "#thermal-sensor-cells"
> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            enum:
> +              - qcom,ipq8064-tsens
> +    then:
> +      required:
> +        - compatible
> +        - regmap
> +        - "#qcom,sensors"
> +        - interrupts
> +        - interrupt-names
> +        - "#thermal-sensor-cells"
> +
> +    else:
> +      required:
> +        - compatible
> +        - reg
> +        - "#qcom,sensors"
> +        - interrupts
> +        - interrupt-names
> +        - "#thermal-sensor-cells"

Keep all the common required properties and just put reg/regmap in the 
if/then if this ends up staying.

Rob
Christian Marangi July 10, 2020, 8:07 p.m. UTC | #3
> -----Messaggio originale-----
> Da: Rob Herring <robh@kernel.org>
> Inviato: venerdì 10 luglio 2020 18:27
> A: Ansuel Smith <ansuelsmth@gmail.com>
> Cc: Amit Kucheria <amit.kucheria@linaro.org>; Andy Gross
> <agross@kernel.org>; Bjorn Andersson <bjorn.andersson@linaro.org>;
> Zhang Rui <rui.zhang@intel.com>; Daniel Lezcano
> <daniel.lezcano@linaro.org>; linux-pm@vger.kernel.org; linux-arm-
> msm@vger.kernel.org; devicetree@vger.kernel.org; linux-
> kernel@vger.kernel.org
> Oggetto: Re: [PATCH 3/6] dt-bindings: thermal: tsens: document ipq8064
> bindings
> 
> On Thu, Jul 09, 2020 at 11:51:33PM +0200, Ansuel Smith wrote:
> > Document the use of regmap phandle for ipq8064 SoCs
> >
> > Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
> > ---
> >  .../bindings/thermal/qcom-tsens.yaml          | 51 ++++++++++++++++---
> >  1 file changed, 44 insertions(+), 7 deletions(-)
> >
> > diff --git a/Documentation/devicetree/bindings/thermal/qcom-tsens.yaml
> b/Documentation/devicetree/bindings/thermal/qcom-tsens.yaml
> > index d7be931b42d2..5ceb5d720e16 100644
> > --- a/Documentation/devicetree/bindings/thermal/qcom-tsens.yaml
> > +++ b/Documentation/devicetree/bindings/thermal/qcom-tsens.yaml
> > @@ -24,6 +24,7 @@ properties:
> >            - enum:
> >                - qcom,msm8916-tsens
> >                - qcom,msm8974-tsens
> > +              - qcom,ipq8064-tsens
> >            - const: qcom,tsens-v0_1
> >
> >        - description: v1 of TSENS
> > @@ -47,6 +48,11 @@ properties:
> >        - description: TM registers
> >        - description: SROT registers
> >
> > +  regmap:
> > +    description:
> > +      Phandle to the gcc. On ipq8064 SoCs gcc and tsense share the same
> regs.
> > +    $ref: /schemas/types.yaml#/definitions/phandle
> 
> Can't you make this a child of the gcc and drop this property?
> 

Make the thermal a child of the gcc would be a little confusing. Anyway
making this
a child of gcc cause the not probing of the thermal driver as it's ignored
any child of
gcc. I pushed v2 with the fixed problem.

> > +
> >    interrupts:
> >      minItems: 1
> >      items:
> > @@ -111,17 +117,48 @@ allOf:
> >          interrupt-names:
> >            minItems: 2
> >
> > -required:
> > -  - compatible
> > -  - reg
> > -  - "#qcom,sensors"
> > -  - interrupts
> > -  - interrupt-names
> > -  - "#thermal-sensor-cells"
> > +  - if:
> > +      properties:
> > +        compatible:
> > +          contains:
> > +            enum:
> > +              - qcom,ipq8064-tsens
> > +    then:
> > +      required:
> > +        - compatible
> > +        - regmap
> > +        - "#qcom,sensors"
> > +        - interrupts
> > +        - interrupt-names
> > +        - "#thermal-sensor-cells"
> > +
> > +    else:
> > +      required:
> > +        - compatible
> > +        - reg
> > +        - "#qcom,sensors"
> > +        - interrupts
> > +        - interrupt-names
> > +        - "#thermal-sensor-cells"
> 
> Keep all the common required properties and just put reg/regmap in the
> if/then if this ends up staying.
> 
> Rob
Rob Herring July 14, 2020, 2:26 p.m. UTC | #4
On Fri, Jul 10, 2020 at 2:07 PM <ansuelsmth@gmail.com> wrote:
>
>
>
> > -----Messaggio originale-----
> > Da: Rob Herring <robh@kernel.org>
> > Inviato: venerdì 10 luglio 2020 18:27
> > A: Ansuel Smith <ansuelsmth@gmail.com>
> > Cc: Amit Kucheria <amit.kucheria@linaro.org>; Andy Gross
> > <agross@kernel.org>; Bjorn Andersson <bjorn.andersson@linaro.org>;
> > Zhang Rui <rui.zhang@intel.com>; Daniel Lezcano
> > <daniel.lezcano@linaro.org>; linux-pm@vger.kernel.org; linux-arm-
> > msm@vger.kernel.org; devicetree@vger.kernel.org; linux-
> > kernel@vger.kernel.org
> > Oggetto: Re: [PATCH 3/6] dt-bindings: thermal: tsens: document ipq8064
> > bindings
> >
> > On Thu, Jul 09, 2020 at 11:51:33PM +0200, Ansuel Smith wrote:
> > > Document the use of regmap phandle for ipq8064 SoCs
> > >
> > > Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
> > > ---
> > >  .../bindings/thermal/qcom-tsens.yaml          | 51 ++++++++++++++++---
> > >  1 file changed, 44 insertions(+), 7 deletions(-)
> > >
> > > diff --git a/Documentation/devicetree/bindings/thermal/qcom-tsens.yaml
> > b/Documentation/devicetree/bindings/thermal/qcom-tsens.yaml
> > > index d7be931b42d2..5ceb5d720e16 100644
> > > --- a/Documentation/devicetree/bindings/thermal/qcom-tsens.yaml
> > > +++ b/Documentation/devicetree/bindings/thermal/qcom-tsens.yaml
> > > @@ -24,6 +24,7 @@ properties:
> > >            - enum:
> > >                - qcom,msm8916-tsens
> > >                - qcom,msm8974-tsens
> > > +              - qcom,ipq8064-tsens
> > >            - const: qcom,tsens-v0_1
> > >
> > >        - description: v1 of TSENS
> > > @@ -47,6 +48,11 @@ properties:
> > >        - description: TM registers
> > >        - description: SROT registers
> > >
> > > +  regmap:
> > > +    description:
> > > +      Phandle to the gcc. On ipq8064 SoCs gcc and tsense share the same
> > regs.
> > > +    $ref: /schemas/types.yaml#/definitions/phandle
> >
> > Can't you make this a child of the gcc and drop this property?
> >
>
> Make the thermal a child of the gcc would be a little confusing. Anyway
> making this
> a child of gcc cause the not probing of the thermal driver as it's ignored
> any child of
> gcc. I pushed v2 with the fixed problem.

Structure the DT as the h/w is structured, not what's convenient for the OS.

Either the GCC driver has to call of_platform_populate on the child
nodes or you can perhaps use 'simple-mfd'.

Rob
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/thermal/qcom-tsens.yaml b/Documentation/devicetree/bindings/thermal/qcom-tsens.yaml
index d7be931b42d2..5ceb5d720e16 100644
--- a/Documentation/devicetree/bindings/thermal/qcom-tsens.yaml
+++ b/Documentation/devicetree/bindings/thermal/qcom-tsens.yaml
@@ -24,6 +24,7 @@  properties:
           - enum:
               - qcom,msm8916-tsens
               - qcom,msm8974-tsens
+              - qcom,ipq8064-tsens
           - const: qcom,tsens-v0_1
 
       - description: v1 of TSENS
@@ -47,6 +48,11 @@  properties:
       - description: TM registers
       - description: SROT registers
 
+  regmap:
+    description:
+      Phandle to the gcc. On ipq8064 SoCs gcc and tsense share the same regs.
+    $ref: /schemas/types.yaml#/definitions/phandle
+
   interrupts:
     minItems: 1
     items:
@@ -111,17 +117,48 @@  allOf:
         interrupt-names:
           minItems: 2
 
-required:
-  - compatible
-  - reg
-  - "#qcom,sensors"
-  - interrupts
-  - interrupt-names
-  - "#thermal-sensor-cells"
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,ipq8064-tsens
+    then:
+      required:
+        - compatible
+        - regmap
+        - "#qcom,sensors"
+        - interrupts
+        - interrupt-names
+        - "#thermal-sensor-cells"
+
+    else:
+      required:
+        - compatible
+        - reg
+        - "#qcom,sensors"
+        - interrupts
+        - interrupt-names
+        - "#thermal-sensor-cells"
 
 additionalProperties: false
 
 examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    // Example msm9860 based SoC (ipq8064):
+    tsens: thermal-sensor@900000 {
+           compatible = "qcom,ipq8064-tsens";
+           regmap = <&gcc>;
+
+           nvmem-cells = <&tsens_calib>, <&tsens_backup>;
+           nvmem-cell-names = "calib", "calib_backup";
+
+           interrupts = <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>;
+
+           #thermal-sensor-cells = <1>;
+    };
+
   - |
     #include <dt-bindings/interrupt-controller/arm-gic.h>
     // Example 1 (legacy: for pre v1 IP):