[PATCH v3 08/10] dt-bindings: iio: adc: ad7476: Add ROHM bd79105

Matti Vaittinen posted 10 patches 4 months, 1 week ago
There is a newer version of this series
[PATCH v3 08/10] dt-bindings: iio: adc: ad7476: Add ROHM bd79105
Posted by Matti Vaittinen 4 months, 1 week ago
The ROHM BD79105 is a simple, 16-bit, 1-channel ADC with a 'CONVSTART'
pin used to start the ADC conversion. Other than the 'CONVSTART', there
are 3 supply pins (one used as a reference), analog inputs, ground and
communication pins. It's worth noting that the pin somewhat confusingly
labeled as 'DIN', is a pin which should be used as a chip-select. The IC
does not have any writable registers.

The device is designed so that the output pin can, in addition to
outputting the data, be used as a 'data-ready'-IRQ. This, however, would
require the IRQ to be masked from host side for the duration of the data
reads - and it wouldn't also work when the SPI is shared. (As access to
the other SPI devices would cause data line changes to be detected as
IRQs - and the BD79105 provides no means to detect if it has generated
an IRQ).

Hence the device-tree does not contain any IRQ properties.

Add a compatible for the bd79105.

Signed-off-by: Matti Vaittinen <mazziesaccount@gmail.com>

---
Revision history:
 v2 => :
 - No changes

 v1 => v2:
 - BD79105 can provide data-ready IRQ (or GPIO) via DOUT-pin.
---
 .../bindings/iio/adc/adi,ad7476.yaml          | 54 +++++++++++++++++++
 1 file changed, 54 insertions(+)

diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad7476.yaml b/Documentation/devicetree/bindings/iio/adc/adi,ad7476.yaml
index d0cb32f136e5..c411a7467651 100644
--- a/Documentation/devicetree/bindings/iio/adc/adi,ad7476.yaml
+++ b/Documentation/devicetree/bindings/iio/adc/adi,ad7476.yaml
@@ -41,6 +41,7 @@ properties:
               - adi,ad7910
               - adi,ad7920
               - adi,ad7940
+              - rohm,bd79105
               - ti,adc081s
               - ti,adc101s
               - ti,adc121s
@@ -55,6 +56,11 @@ properties:
   reg:
     maxItems: 1
 
+  interrupts:
+    description:
+      The data-ready interrupt. Provided via DOUT pin.
+    maxItems: 1
+
   vcc-supply:
     description:
       Main powersupply voltage for the chips, sometimes referred to as VDD on
@@ -75,6 +81,10 @@ properties:
     description: A GPIO used to trigger the start of a conversion
     maxItems: 1
 
+  rdy-gpios:
+    description: A GPIO for detecting the data-ready.
+    maxItems: 1
+
 required:
   - compatible
   - reg
@@ -82,6 +92,20 @@ required:
 allOf:
   - $ref: /schemas/spi/spi-peripheral-props.yaml#
 
+# Devices with an IRQ
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - rohm,bd79105
+    then:
+      properties:
+        interrupts: true
+    else:
+      properties:
+        interrupts: false
+
   # Devices where reference is vcc
   - if:
       properties:
@@ -115,6 +139,7 @@ allOf:
               - adi,ad7274
               - adi,ad7475
               - lltc,ltc2314-14
+              - rohm,bd79105
     then:
       properties:
         vref-supply: true
@@ -131,6 +156,7 @@ allOf:
               - adi,ad7274
               - adi,ad7475
               - lltc,ltc2314-14
+              - rohm,bd79105
     then:
       required:
         - vref-supply
@@ -141,12 +167,28 @@ allOf:
             enum:
               - adi,ad7475
               - adi,ad7495
+              - rohm,bd79105
     then:
       properties:
         vdrive-supply: true
     else:
       properties:
         vdrive-supply: false
+
+  # Devices which support polling the data-ready via GPIO
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - rohm,bd79105
+    then:
+      properties:
+        rdy-gpios: true
+    else:
+      properties:
+        rdy-gpios: false
+
   - if:
       properties:
         compatible:
@@ -154,6 +196,7 @@ allOf:
             enum:
               - adi,ad7091
               - adi,ad7091r
+              - rohm,bd79105
     then:
       properties:
         adi,conversion-start-gpios: true
@@ -161,6 +204,17 @@ allOf:
       properties:
         adi,conversion-start-gpios: false
 
+  # Devices with a convstart GPIO where it is not optional
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - rohm,bd79105
+    then:
+      required:
+        - adi,conversion-start-gpios
+
 unevaluatedProperties: false
 
 examples:
-- 
2.50.1

Re: [PATCH v3 08/10] dt-bindings: iio: adc: ad7476: Add ROHM bd79105
Posted by Jonathan Cameron 4 months ago
On Fri, 8 Aug 2025 11:54:25 +0300
Matti Vaittinen <mazziesaccount@gmail.com> wrote:

> The ROHM BD79105 is a simple, 16-bit, 1-channel ADC with a 'CONVSTART'
> pin used to start the ADC conversion. Other than the 'CONVSTART', there
> are 3 supply pins (one used as a reference), analog inputs, ground and
> communication pins. It's worth noting that the pin somewhat confusingly
> labeled as 'DIN', is a pin which should be used as a chip-select. The IC
> does not have any writable registers.
> 
> The device is designed so that the output pin can, in addition to
> outputting the data, be used as a 'data-ready'-IRQ. This, however, would
> require the IRQ to be masked from host side for the duration of the data
> reads - and it wouldn't also work when the SPI is shared. (As access to
> the other SPI devices would cause data line changes to be detected as
> IRQs - and the BD79105 provides no means to detect if it has generated
> an IRQ).
> 
> Hence the device-tree does not contain any IRQ properties.

Commit message needs an update as it now allows for IRQ properties.


> 
> Add a compatible for the bd79105.
> 
> Signed-off-by: Matti Vaittinen <mazziesaccount@gmail.com>
> 
> ---
> Revision history:
>  v2 => :
>  - No changes
> 
>  v1 => v2:
>  - BD79105 can provide data-ready IRQ (or GPIO) via DOUT-pin.
> ---
>  .../bindings/iio/adc/adi,ad7476.yaml          | 54 +++++++++++++++++++
>  1 file changed, 54 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad7476.yaml b/Documentation/devicetree/bindings/iio/adc/adi,ad7476.yaml
> index d0cb32f136e5..c411a7467651 100644
> --- a/Documentation/devicetree/bindings/iio/adc/adi,ad7476.yaml
> +++ b/Documentation/devicetree/bindings/iio/adc/adi,ad7476.yaml
> @@ -41,6 +41,7 @@ properties:
>                - adi,ad7910
>                - adi,ad7920
>                - adi,ad7940
> +              - rohm,bd79105
>                - ti,adc081s
>                - ti,adc101s
>                - ti,adc121s
> @@ -55,6 +56,11 @@ properties:
>    reg:
>      maxItems: 1
>  
> +  interrupts:
> +    description:
> +      The data-ready interrupt. Provided via DOUT pin.
> +    maxItems: 1
> +
>    vcc-supply:
>      description:
>        Main powersupply voltage for the chips, sometimes referred to as VDD on
> @@ -75,6 +81,10 @@ properties:
>      description: A GPIO used to trigger the start of a conversion
>      maxItems: 1
>  
> +  rdy-gpios:
> +    description: A GPIO for detecting the data-ready.
> +    maxItems: 1
> +
>  required:
>    - compatible
>    - reg
> @@ -82,6 +92,20 @@ required:
>  allOf:
>    - $ref: /schemas/spi/spi-peripheral-props.yaml#
>  
> +# Devices with an IRQ
> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            enum:
> +              - rohm,bd79105
> +    then:
> +      properties:
> +        interrupts: true

It's been a while since I wrote one of these, but do we need
the true bit given we have already specified the interrupts
property.  I think we only need to do the setting to false
on an if: not: 

> +    else:
> +      properties:
> +        interrupts: false
> +
>    # Devices where reference is vcc
>    - if:
>        properties:
> @@ -115,6 +139,7 @@ allOf:
>                - adi,ad7274
>                - adi,ad7475
>                - lltc,ltc2314-14
> +              - rohm,bd79105
>      then:
>        properties:
>          vref-supply: true
> @@ -131,6 +156,7 @@ allOf:
>                - adi,ad7274
>                - adi,ad7475
>                - lltc,ltc2314-14
> +              - rohm,bd79105
>      then:
>        required:
>          - vref-supply
> @@ -141,12 +167,28 @@ allOf:
>              enum:
>                - adi,ad7475
>                - adi,ad7495
> +              - rohm,bd79105
>      then:
>        properties:
>          vdrive-supply: true
>      else:
>        properties:
>          vdrive-supply: false
> +
> +  # Devices which support polling the data-ready via GPIO
> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            enum:
> +              - rohm,bd79105
> +    then:
> +      properties:
> +        rdy-gpios: true

As above, I believe we only need the not case.

> +    else:
> +      properties:
> +        rdy-gpios: false
> +
>    - if:
>        properties:
>          compatible:
> @@ -154,6 +196,7 @@ allOf:
>              enum:
>                - adi,ad7091
>                - adi,ad7091r
> +              - rohm,bd79105
>      then:
>        properties:
>          adi,conversion-start-gpios: true
> @@ -161,6 +204,17 @@ allOf:
>        properties:
>          adi,conversion-start-gpios: false
>  
> +  # Devices with a convstart GPIO where it is not optional
> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            enum:
> +              - rohm,bd79105
> +    then:
> +      required:
> +        - adi,conversion-start-gpios
> +
>  unevaluatedProperties: false
>  
>  examples:
Re: [PATCH v3 08/10] dt-bindings: iio: adc: ad7476: Add ROHM bd79105
Posted by Matti Vaittinen 4 months ago
On 09/08/2025 22:21, Jonathan Cameron wrote:
> On Fri, 8 Aug 2025 11:54:25 +0300
> Matti Vaittinen <mazziesaccount@gmail.com> wrote:
> 
>> The ROHM BD79105 is a simple, 16-bit, 1-channel ADC with a 'CONVSTART'
>> pin used to start the ADC conversion. Other than the 'CONVSTART', there
>> are 3 supply pins (one used as a reference), analog inputs, ground and
>> communication pins. It's worth noting that the pin somewhat confusingly
>> labeled as 'DIN', is a pin which should be used as a chip-select. The IC
>> does not have any writable registers.
>>
>> The device is designed so that the output pin can, in addition to
>> outputting the data, be used as a 'data-ready'-IRQ. This, however, would
>> require the IRQ to be masked from host side for the duration of the data
>> reads - and it wouldn't also work when the SPI is shared. (As access to
>> the other SPI devices would cause data line changes to be detected as
>> IRQs - and the BD79105 provides no means to detect if it has generated
>> an IRQ).
>>
>> Hence the device-tree does not contain any IRQ properties.
> 
> Commit message needs an update as it now allows for IRQ properties.

Ah, true. Thanks :)

> 
>>
>> Add a compatible for the bd79105.
>>
>> Signed-off-by: Matti Vaittinen <mazziesaccount@gmail.com>
>>
>> ---
>> Revision history:
>>   v2 => :
>>   - No changes
>>
>>   v1 => v2:
>>   - BD79105 can provide data-ready IRQ (or GPIO) via DOUT-pin.
>> ---
>>   .../bindings/iio/adc/adi,ad7476.yaml          | 54 +++++++++++++++++++
>>   1 file changed, 54 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad7476.yaml b/Documentation/devicetree/bindings/iio/adc/adi,ad7476.yaml
>> index d0cb32f136e5..c411a7467651 100644
>> --- a/Documentation/devicetree/bindings/iio/adc/adi,ad7476.yaml
>> +++ b/Documentation/devicetree/bindings/iio/adc/adi,ad7476.yaml
>> @@ -41,6 +41,7 @@ properties:
>>                 - adi,ad7910
>>                 - adi,ad7920
>>                 - adi,ad7940
>> +              - rohm,bd79105
>>                 - ti,adc081s
>>                 - ti,adc101s
>>                 - ti,adc121s
>> @@ -55,6 +56,11 @@ properties:
>>     reg:
>>       maxItems: 1
>>   
>> +  interrupts:
>> +    description:
>> +      The data-ready interrupt. Provided via DOUT pin.
>> +    maxItems: 1
>> +
>>     vcc-supply:
>>       description:
>>         Main powersupply voltage for the chips, sometimes referred to as VDD on
>> @@ -75,6 +81,10 @@ properties:
>>       description: A GPIO used to trigger the start of a conversion
>>       maxItems: 1
>>   
>> +  rdy-gpios:
>> +    description: A GPIO for detecting the data-ready.
>> +    maxItems: 1
>> +
>>   required:
>>     - compatible
>>     - reg
>> @@ -82,6 +92,20 @@ required:
>>   allOf:
>>     - $ref: /schemas/spi/spi-peripheral-props.yaml#
>>   
>> +# Devices with an IRQ
>> +  - if:
>> +      properties:
>> +        compatible:
>> +          contains:
>> +            enum:
>> +              - rohm,bd79105
>> +    then:
>> +      properties:
>> +        interrupts: true
> 
> It's been a while since I wrote one of these, but do we need
> the true bit given we have already specified the interrupts
> property.  I think we only need to do the setting to false
> on an if: not:

I think you're right. I just used same approach that had already been 
used throughout this binding. I'll try dropping the 'true'-branches, but 
then also the other 'true'-branches should be dropped from the binding.

I'll just do that and send v4. Let's see what Rob/Krzk/Conor have to say :)

Yours,
	-- Matti