The driver will support the AD7606C-16 and AD7606C-18.
This change adds the compatible strings for these devices.
The AD7606C-16,18 channels also support these (individually configurable)
types of channels:
- bipolar single-ended
- unipolar single-ended
- bipolar differential
Signed-off-by: Alexandru Ardelean <aardelean@baylibre.com>
---
.../bindings/iio/adc/adi,ad7606.yaml | 108 ++++++++++++++++++
1 file changed, 108 insertions(+)
diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml b/Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml
index 69408cae3db9..f6fbc760d25d 100644
--- a/Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml
+++ b/Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml
@@ -14,6 +14,8 @@ description: |
https://www.analog.com/media/en/technical-documentation/data-sheets/AD7605-4.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/ad7606_7606-6_7606-4.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/AD7606B.pdf
+ https://www.analog.com/media/en/technical-documentation/data-sheets/ad7606c-16.pdf
+ https://www.analog.com/media/en/technical-documentation/data-sheets/ad7606c-18.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/AD7616.pdf
properties:
@@ -24,11 +26,19 @@ properties:
- adi,ad7606-6
- adi,ad7606-8 # Referred to as AD7606 (without -8) in the datasheet
- adi,ad7606b
+ - adi,ad7606c-16
+ - adi,ad7606c-18
- adi,ad7616
reg:
maxItems: 1
+ "#address-cells":
+ const: 1
+
+ "#size-cells":
+ const: 0
+
spi-cpha: true
spi-cpol: true
@@ -114,6 +124,45 @@ properties:
assumed that the pins are hardwired to VDD.
type: boolean
+patternProperties:
+ "^channel@([1-8])$":
+ type: object
+ $ref: adc.yaml
+ unevaluatedProperties: false
+
+ properties:
+ reg:
+ description:
+ The channel number, as specified in the datasheet (from 1 to 8).
+ minimum: 1
+ maximum: 8
+
+ diff-channels:
+ description:
+ Each channel can be configured as a differential bipolar channel.
+ The ADC uses the same positive and negative inputs for this.
+ This property must be specified as 'reg' (or the channel number) for
+ both positive and negative inputs (i.e. diff-channels = <reg reg>).
+ items:
+ minimum: 1
+ maximum: 8
+
+ bipolar:
+ description:
+ Each channel can be configured as a unipolar or bipolar single-ended.
+ When this property is not specified, it's unipolar, so the ADC will
+ have only the positive input wired.
+ For this ADC the 'diff-channels' & 'bipolar' properties are mutually
+ exclusive.
+
+ oneOf:
+ - required:
+ - reg
+ - diff-channels
+ - required:
+ - reg
+ - bipolar
+
required:
- compatible
- reg
@@ -170,6 +219,17 @@ allOf:
adi,conversion-start-gpios:
maxItems: 1
+ - if:
+ not:
+ properties:
+ compatible:
+ enum:
+ - adi,ad7606c-16
+ - adi,ad7606c-18
+ then:
+ patternProperties:
+ "^channel@[1-8]+$": false
+
unevaluatedProperties: false
examples:
@@ -202,4 +262,52 @@ examples:
standby-gpios = <&gpio 24 GPIO_ACTIVE_LOW>;
};
};
+ - |
+ #include <dt-bindings/gpio/gpio.h>
+ #include <dt-bindings/interrupt-controller/irq.h>
+ spi {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ adc@0 {
+ compatible = "adi,ad7606c-18";
+ reg = <0>;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ spi-max-frequency = <1000000>;
+ spi-cpol;
+ spi-cpha;
+
+ avcc-supply = <&adc_vref>;
+ vdrive-supply = <&vdd_supply>;
+
+ interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
+ interrupt-parent = <&gpio>;
+
+ adi,conversion-start-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
+ reset-gpios = <&gpio 27 GPIO_ACTIVE_HIGH>;
+ adi,first-data-gpios = <&gpio 22 GPIO_ACTIVE_HIGH>;
+ standby-gpios = <&gpio 24 GPIO_ACTIVE_LOW>;
+
+ adi,sw-mode;
+
+ channel@1 {
+ reg = <1>;
+ diff-channels = <1 1>;
+ };
+
+ channel@3 {
+ reg = <3>;
+ bipolar;
+ };
+
+ channel@8 {
+ reg = <8>;
+ diff-channels = <8 8>;
+ };
+
+ };
+ };
...
--
2.46.0
On Wed, Sep 04, 2024 at 10:27:15AM +0300, Alexandru Ardelean wrote:
> @@ -114,6 +124,45 @@ properties:
> assumed that the pins are hardwired to VDD.
> type: boolean
>
> +patternProperties:
> + "^channel@([1-8])$":
Drop ()
> + type: object
> + $ref: adc.yaml
> + unevaluatedProperties: false
> +
> + properties:
> + reg:
> + description:
> + The channel number, as specified in the datasheet (from 1 to 8).
> + minimum: 1
> + maximum: 8
> +
> + diff-channels:
> + description:
> + Each channel can be configured as a differential bipolar channel.
> + The ADC uses the same positive and negative inputs for this.
> + This property must be specified as 'reg' (or the channel number) for
> + both positive and negative inputs (i.e. diff-channels = <reg reg>).
> + items:
> + minimum: 1
> + maximum: 8
> +
> + bipolar:
> + description:
> + Each channel can be configured as a unipolar or bipolar single-ended.
> + When this property is not specified, it's unipolar, so the ADC will
> + have only the positive input wired.
> + For this ADC the 'diff-channels' & 'bipolar' properties are mutually
> + exclusive.
> +
> + oneOf:
> + - required:
> + - reg
> + - diff-channels
> + - required:
> + - reg
> + - bipolar
rather:
required:
- reg
oneOf:
- required:
- diff-channels
- required:
- bipolar
> +
> required:
> - compatible
> - reg
> @@ -170,6 +219,17 @@ allOf:
> adi,conversion-start-gpios:
> maxItems: 1
>
> + - if:
> + not:
> + properties:
> + compatible:
> + enum:
> + - adi,ad7606c-16
> + - adi,ad7606c-18
> + then:
> + patternProperties:
> + "^channel@[1-8]+$": false
You have two different patterns here and in top-level. Please keep one:
^channel@[1-8]$
Best regards,
Krzysztof
On Thu, Sep 5, 2024 at 9:39 AM Krzysztof Kozlowski <krzk@kernel.org> wrote: > > On Wed, Sep 04, 2024 at 10:27:15AM +0300, Alexandru Ardelean wrote: > > @@ -114,6 +124,45 @@ properties: > > assumed that the pins are hardwired to VDD. > > type: boolean > > > > +patternProperties: > > + "^channel@([1-8])$": > > Drop () > > > + type: object > > + $ref: adc.yaml > > + unevaluatedProperties: false > > + > > + properties: > > + reg: > > + description: > > + The channel number, as specified in the datasheet (from 1 to 8). > > + minimum: 1 > > + maximum: 8 > > + > > + diff-channels: > > + description: > > + Each channel can be configured as a differential bipolar channel. > > + The ADC uses the same positive and negative inputs for this. > > + This property must be specified as 'reg' (or the channel number) for > > + both positive and negative inputs (i.e. diff-channels = <reg reg>). > > + items: > > + minimum: 1 > > + maximum: 8 > > + > > + bipolar: > > + description: > > + Each channel can be configured as a unipolar or bipolar single-ended. > > + When this property is not specified, it's unipolar, so the ADC will > > + have only the positive input wired. > > + For this ADC the 'diff-channels' & 'bipolar' properties are mutually > > + exclusive. > > + > > + oneOf: > > + - required: > > + - reg > > + - diff-channels > > + - required: > > + - reg > > + - bipolar > > rather: > > required: > - reg > > oneOf: > - required: > - diff-channels > - required: > - bipolar Ack > > > + > > required: > > - compatible > > - reg > > @@ -170,6 +219,17 @@ allOf: > > adi,conversion-start-gpios: > > maxItems: 1 > > > > + - if: > > + not: > > + properties: > > + compatible: > > + enum: > > + - adi,ad7606c-16 > > + - adi,ad7606c-18 > > + then: > > + patternProperties: > > + "^channel@[1-8]+$": false > > > You have two different patterns here and in top-level. Please keep one: > ^channel@[1-8]$ Ah. Good point. > > > Best regards, > Krzysztof >
© 2016 - 2026 Red Hat, Inc.