diff mbox series

[V2,5/5] dt-bindings: iio/adc: ingenic: add the JZ4760(B) socs to the sadc Documentation

Message ID 20210723085813.1523934-6-cbranchereau@gmail.com (mailing list archive)
State Not Applicable
Headers show
Series [V2,1/5] iio/adc: ingenic: rename has_aux2 to has_aux_md | expand

Commit Message

Christophe Branchereau July 23, 2021, 8:58 a.m. UTC
The jz4760b variant differs slightly from the jz4760, add a property to 
let users sample the internal divider if needed and document it.

Signed-off-by: Christophe Branchereau <cbranchereau@gmail.com>
---
 .../devicetree/bindings/iio/adc/ingenic,adc.yaml         | 9 +++++++++
 1 file changed, 9 insertions(+)

Comments

Jonathan Cameron July 23, 2021, 4:16 p.m. UTC | #1
On Fri, 23 Jul 2021 10:58:13 +0200
Christophe Branchereau <cbranchereau@gmail.com> wrote:

> The jz4760b variant differs slightly from the jz4760, add a property to 
> let users sample the internal divider if needed and document it.
> 
> Signed-off-by: Christophe Branchereau <cbranchereau@gmail.com>
> ---
>  .../devicetree/bindings/iio/adc/ingenic,adc.yaml         | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/iio/adc/ingenic,adc.yaml b/Documentation/devicetree/bindings/iio/adc/ingenic,adc.yaml
> index 433a3fb55a2e..0dc42959a64f 100644
> --- a/Documentation/devicetree/bindings/iio/adc/ingenic,adc.yaml
> +++ b/Documentation/devicetree/bindings/iio/adc/ingenic,adc.yaml
> @@ -23,6 +23,8 @@ properties:
>      enum:
>        - ingenic,jz4725b-adc
>        - ingenic,jz4740-adc
> +      - ingenic,jz4760-adc
> +      - ingenic,jz4760b-adc
>        - ingenic,jz4770-adc
>  
>    '#io-channel-cells':
> @@ -43,6 +45,13 @@ properties:
>    interrupts:
>      maxItems: 1
>  
> +  ingenic,use-internal-divider:
> +    description:
> +      This property can be used to set VBAT_SEL in the JZ4760B CFG register
> +      to sample the battery voltage from the internal divider. If absent, it
> +      will sample the external divider.
> +    type: boolean
> +
See reply to the v1 patch for hint on how to 'enforce' that this
only exists for the jz4760b

Thanks,

Jonathan

>  required:
>    - compatible
>    - '#io-channel-cells'
Christophe Branchereau July 24, 2021, 7:33 a.m. UTC | #2
Hello Johnathan, am I allowed to declare the property within the if
block like this?

# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
# Copyright 2019-2020 Artur Rojek
%YAML 1.2
---
$id: "http://devicetree.org/schemas/iio/adc/ingenic,adc.yaml#"
$schema: "http://devicetree.org/meta-schemas/core.yaml#"

title: Ingenic JZ47xx ADC controller IIO bindings

maintainers:
  - Artur Rojek <contact@artur-rojek.eu>

description: >
  Industrial I/O subsystem bindings for ADC controller found in
  Ingenic JZ47xx SoCs.

  ADC clients must use the format described in
  https://github.com/devicetree-org/dt-schema/blob/master/schemas/iio/iio-consumer.yaml,
  giving a phandle and IIO specifier pair ("io-channels") to the ADC controller.

properties:
  compatible:
    enum:
      - ingenic,jz4725b-adc
      - ingenic,jz4740-adc
      - ingenic,jz4760-adc
      - ingenic,jz4760b-adc
      - ingenic,jz4770-adc

  '#io-channel-cells':
    const: 1
    description:
      Must be set to <1> to indicate channels are selected by index.

  reg:
    maxItems: 1

  clocks:
    maxItems: 1

  clock-names:
    items:
      - const: adc

  interrupts:
    maxItems: 1

allOf:
  - if:
      properties:
        compatible:
          contains:
            enum:
              - ingenic,jz4760b-adc
then:
  properties:
    ingenic,use-internal-divider:
      description:
        If present, battery voltage is read from the VBAT_IR pin, which has an
        internal 1/4 divider. If absent, it is read through the VBAT_ER pin,
        which does not have such a divider.
      type: boolean

required:
  - compatible
  - '#io-channel-cells'
  - reg
  - clocks
  - clock-names
  - interrupts

additionalProperties: false

examples:
  - |
    #include <dt-bindings/clock/jz4740-cgu.h>
    #include <dt-bindings/iio/adc/ingenic,adc.h>

    adc@10070000 {
            compatible = "ingenic,jz4740-adc";
            #io-channel-cells = <1>;

            reg = <0x10070000 0x30>;

            clocks = <&cgu JZ4740_CLK_ADC>;
            clock-names = "adc";

            interrupt-parent = <&intc>;
            interrupts = <18>;
    };

On Fri, Jul 23, 2021 at 6:17 PM Jonathan Cameron
<Jonathan.Cameron@huawei.com> wrote:
>
> On Fri, 23 Jul 2021 10:58:13 +0200
> Christophe Branchereau <cbranchereau@gmail.com> wrote:
>
> > The jz4760b variant differs slightly from the jz4760, add a property to
> > let users sample the internal divider if needed and document it.
> >
> > Signed-off-by: Christophe Branchereau <cbranchereau@gmail.com>
> > ---
> >  .../devicetree/bindings/iio/adc/ingenic,adc.yaml         | 9 +++++++++
> >  1 file changed, 9 insertions(+)
> >
> > diff --git a/Documentation/devicetree/bindings/iio/adc/ingenic,adc.yaml b/Documentation/devicetree/bindings/iio/adc/ingenic,adc.yaml
> > index 433a3fb55a2e..0dc42959a64f 100644
> > --- a/Documentation/devicetree/bindings/iio/adc/ingenic,adc.yaml
> > +++ b/Documentation/devicetree/bindings/iio/adc/ingenic,adc.yaml
> > @@ -23,6 +23,8 @@ properties:
> >      enum:
> >        - ingenic,jz4725b-adc
> >        - ingenic,jz4740-adc
> > +      - ingenic,jz4760-adc
> > +      - ingenic,jz4760b-adc
> >        - ingenic,jz4770-adc
> >
> >    '#io-channel-cells':
> > @@ -43,6 +45,13 @@ properties:
> >    interrupts:
> >      maxItems: 1
> >
> > +  ingenic,use-internal-divider:
> > +    description:
> > +      This property can be used to set VBAT_SEL in the JZ4760B CFG register
> > +      to sample the battery voltage from the internal divider. If absent, it
> > +      will sample the external divider.
> > +    type: boolean
> > +
> See reply to the v1 patch for hint on how to 'enforce' that this
> only exists for the jz4760b
>
> Thanks,
>
> Jonathan
>
> >  required:
> >    - compatible
> >    - '#io-channel-cells'
>
Jonathan Cameron July 24, 2021, 3:23 p.m. UTC | #3
On Sat, 24 Jul 2021 09:33:46 +0200
Christophe Branchereau <cbranchereau@gmail.com> wrote:

> Hello Johnathan, am I allowed to declare the property within the if
> block like this?

Test it...

Short answer is no you aren't.  As someone explained it to me the other
day, each layer of the yaml is checked independently so if you declare
a property in the if block and not the outer layer the additionalProperties
check will fail should it be present.

So declare it outside, then set it false for the cases where it's not valid.

Jonathan

> 
> # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> # Copyright 2019-2020 Artur Rojek
> %YAML 1.2
> ---
> $id: "http://devicetree.org/schemas/iio/adc/ingenic,adc.yaml#"
> $schema: "http://devicetree.org/meta-schemas/core.yaml#"
> 
> title: Ingenic JZ47xx ADC controller IIO bindings
> 
> maintainers:
>   - Artur Rojek <contact@artur-rojek.eu>
> 
> description: >
>   Industrial I/O subsystem bindings for ADC controller found in
>   Ingenic JZ47xx SoCs.
> 
>   ADC clients must use the format described in
>   https://github.com/devicetree-org/dt-schema/blob/master/schemas/iio/iio-consumer.yaml,
>   giving a phandle and IIO specifier pair ("io-channels") to the ADC controller.
> 
> properties:
>   compatible:
>     enum:
>       - ingenic,jz4725b-adc
>       - ingenic,jz4740-adc
>       - ingenic,jz4760-adc
>       - ingenic,jz4760b-adc
>       - ingenic,jz4770-adc
> 
>   '#io-channel-cells':
>     const: 1
>     description:
>       Must be set to <1> to indicate channels are selected by index.
> 
>   reg:
>     maxItems: 1
> 
>   clocks:
>     maxItems: 1
> 
>   clock-names:
>     items:
>       - const: adc
> 
>   interrupts:
>     maxItems: 1
> 
> allOf:
>   - if:
>       properties:
>         compatible:
>           contains:
>             enum:
>               - ingenic,jz4760b-adc
> then:
>   properties:
>     ingenic,use-internal-divider:
>       description:
>         If present, battery voltage is read from the VBAT_IR pin, which has an
>         internal 1/4 divider. If absent, it is read through the VBAT_ER pin,
>         which does not have such a divider.
>       type: boolean
> 
> required:
>   - compatible
>   - '#io-channel-cells'
>   - reg
>   - clocks
>   - clock-names
>   - interrupts
> 
> additionalProperties: false
> 
> examples:
>   - |
>     #include <dt-bindings/clock/jz4740-cgu.h>
>     #include <dt-bindings/iio/adc/ingenic,adc.h>
> 
>     adc@10070000 {
>             compatible = "ingenic,jz4740-adc";
>             #io-channel-cells = <1>;
> 
>             reg = <0x10070000 0x30>;
> 
>             clocks = <&cgu JZ4740_CLK_ADC>;
>             clock-names = "adc";
> 
>             interrupt-parent = <&intc>;
>             interrupts = <18>;
>     };
> 
> On Fri, Jul 23, 2021 at 6:17 PM Jonathan Cameron
> <Jonathan.Cameron@huawei.com> wrote:
> >
> > On Fri, 23 Jul 2021 10:58:13 +0200
> > Christophe Branchereau <cbranchereau@gmail.com> wrote:
> >  
> > > The jz4760b variant differs slightly from the jz4760, add a property to
> > > let users sample the internal divider if needed and document it.
> > >
> > > Signed-off-by: Christophe Branchereau <cbranchereau@gmail.com>
> > > ---
> > >  .../devicetree/bindings/iio/adc/ingenic,adc.yaml         | 9 +++++++++
> > >  1 file changed, 9 insertions(+)
> > >
> > > diff --git a/Documentation/devicetree/bindings/iio/adc/ingenic,adc.yaml b/Documentation/devicetree/bindings/iio/adc/ingenic,adc.yaml
> > > index 433a3fb55a2e..0dc42959a64f 100644
> > > --- a/Documentation/devicetree/bindings/iio/adc/ingenic,adc.yaml
> > > +++ b/Documentation/devicetree/bindings/iio/adc/ingenic,adc.yaml
> > > @@ -23,6 +23,8 @@ properties:
> > >      enum:
> > >        - ingenic,jz4725b-adc
> > >        - ingenic,jz4740-adc
> > > +      - ingenic,jz4760-adc
> > > +      - ingenic,jz4760b-adc
> > >        - ingenic,jz4770-adc
> > >
> > >    '#io-channel-cells':
> > > @@ -43,6 +45,13 @@ properties:
> > >    interrupts:
> > >      maxItems: 1
> > >
> > > +  ingenic,use-internal-divider:
> > > +    description:
> > > +      This property can be used to set VBAT_SEL in the JZ4760B CFG register
> > > +      to sample the battery voltage from the internal divider. If absent, it
> > > +      will sample the external divider.
> > > +    type: boolean
> > > +  
> > See reply to the v1 patch for hint on how to 'enforce' that this
> > only exists for the jz4760b
> >
> > Thanks,
> >
> > Jonathan
> >  
> > >  required:
> > >    - compatible
> > >    - '#io-channel-cells'  
> >
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/iio/adc/ingenic,adc.yaml b/Documentation/devicetree/bindings/iio/adc/ingenic,adc.yaml
index 433a3fb55a2e..0dc42959a64f 100644
--- a/Documentation/devicetree/bindings/iio/adc/ingenic,adc.yaml
+++ b/Documentation/devicetree/bindings/iio/adc/ingenic,adc.yaml
@@ -23,6 +23,8 @@  properties:
     enum:
       - ingenic,jz4725b-adc
       - ingenic,jz4740-adc
+      - ingenic,jz4760-adc
+      - ingenic,jz4760b-adc
       - ingenic,jz4770-adc
 
   '#io-channel-cells':
@@ -43,6 +45,13 @@  properties:
   interrupts:
     maxItems: 1
 
+  ingenic,use-internal-divider:
+    description:
+      This property can be used to set VBAT_SEL in the JZ4760B CFG register
+      to sample the battery voltage from the internal divider. If absent, it
+      will sample the external divider.
+    type: boolean
+
 required:
   - compatible
   - '#io-channel-cells'