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>
---
.../devicetree/bindings/iio/adc/adi,ad7476.yaml | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad7476.yaml b/Documentation/devicetree/bindings/iio/adc/adi,ad7476.yaml
index d0cb32f136e5..16d3866dd633 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
@@ -115,6 +116,7 @@ allOf:
- adi,ad7274
- adi,ad7475
- lltc,ltc2314-14
+ - rohm,bd79105
then:
properties:
vref-supply: true
@@ -131,6 +133,7 @@ allOf:
- adi,ad7274
- adi,ad7475
- lltc,ltc2314-14
+ - rohm,bd79105
then:
required:
- vref-supply
@@ -141,6 +144,7 @@ allOf:
enum:
- adi,ad7475
- adi,ad7495
+ - rohm,bd79105
then:
properties:
vdrive-supply: true
@@ -154,6 +158,7 @@ allOf:
enum:
- adi,ad7091
- adi,ad7091r
+ - rohm,bd79105
then:
properties:
adi,conversion-start-gpios: true
@@ -161,6 +166,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
On 8/6/25 2:04 AM, Matti Vaittinen 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. There are lots of other ADC chips that have a ready signal like this and we've made them work. Since devicetree bindings should be as complete as possible even if the driver doesn't use all of the features, I think we should be including the interrupt in the binding. We have also found that some interrupt controllers won't work as you have suggested and in that case we also needed a ready-gpios to be able to read the state of the pin.
On 06/08/2025 18:15, David Lechner wrote: > On 8/6/25 2:04 AM, Matti Vaittinen 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. > > There are lots of other ADC chips that have a ready signal like this > and we've made them work. Ah. I had no idea. Thanks for the insight! > Since devicetree bindings should be as > complete as possible even if the driver doesn't use all of the > features, I think we should be including the interrupt in the binding. After what you wrote above, I do agree. There may be systems where the IRQ is usable, so dt should have it even if the Linux driver never used it. > We have also found that some interrupt controllers won't work > as you have suggested and in that case we also needed a ready-gpios > to be able to read the state of the pin. Oh. My thinking was just hard-coding the conversion-time delay, but this can indeed make sense - especially if there are other examples :) Thanks a lot for the insight! Yours, -- Matti
© 2016 - 2025 Red Hat, Inc.