Message ID | 20220707083126.181-3-Ibrahim.Tilki@analog.com (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
Series | [v2,1/3] iio: adc: add max11410 adc driver | expand |
On Thu, 7 Jul 2022 08:31:26 +0000 Ibrahim Tilki <Ibrahim.Tilki@analog.com> wrote: > Adding devicetree binding documentation for max11410 adc. > > Signed-off-by: Ibrahim Tilki <Ibrahim.Tilki@analog.com> > Reviewed-by: Nurettin Bolucu <Nurettin.Bolucu@analog.com> Hi. A few questions inline. Mostly stuff I couldn't figure out from a quick scan through the datasheet. > --- > .../bindings/iio/adc/adi,max11410.yaml | 168 ++++++++++++++++++ > 1 file changed, 168 insertions(+) > create mode 100644 Documentation/devicetree/bindings/iio/adc/adi,max11410.yaml > > diff --git a/Documentation/devicetree/bindings/iio/adc/adi,max11410.yaml b/Documentation/devicetree/bindings/iio/adc/adi,max11410.yaml > new file mode 100644 > index 000000000..f28d29fb2 > --- /dev/null > +++ b/Documentation/devicetree/bindings/iio/adc/adi,max11410.yaml > @@ -0,0 +1,168 @@ > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) > +# Copyright 2022 Analog Devices Inc. > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/iio/adc/adi,max11410.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Analog Devices MAX11410 ADC device driver > + > +maintainers: > + - Ibrahim Tilki <ibrahim.tilki@analog.com> > + > +description: | > + Bindings for the Analog Devices MAX11410 ADC device. Datasheet can be > + found here: > + https://datasheets.maximintegrated.com/en/ds/MAX11410.pdf > + > +properties: > + compatible: > + enum: > + - adi,max11410 > + > + reg: > + description: SPI chip select number for the device Description not needed as same for all SPI devices. > + maxItems: 1 > + > + interrupts: > + description: IRQ line for the ADC The description doesn't tell us anything so drop it. There is no need to provide description lines for self documenting items like this. > + maxItems: 1 > + > + '#address-cells': > + const: 1 > + > + '#size-cells': > + const: 0 > + > + avdd-supply: > + description: avdd supply can be used as reference for conversion. Mention it's also a necessary power supply. As mentioned in driver review I'd suggest you actually treat this as 'no explicit reference supplied'. That simplifies the meaning of the adi,reference below. > + > + vref0p-supply: > + description: vref0p supply can be used as reference for conversion. > + > + vref1p-supply: > + description: vref1p supply can be used as reference for conversion. > + > + vref2p-supply: > + description: vref2p supply can be used as reference for conversion. > + > + vref0n-supply: > + description: vref0n supply can be used as reference for conversion. > + > + vref1n-supply: > + description: vref1n supply can be used as reference for conversion. > + > + vref2n-supply: > + description: vref2n supply can be used as reference for conversion. > + > + spi-max-frequency: > + maximum: 8000000 > + > +required: > + - compatible > + - reg > + - avdd-supply > + > +patternProperties: > + "^channel(@[0-9a-f]+)?$": > + $ref: "adc.yaml" > + type: object > + description: Represents the external channels which are connected to the ADC. > + > + properties: > + reg: > + description: The channel number in single-ended mode. > + minimum: 0 > + maximum: 10 > + > + adi,reference: > + description: | > + Select the reference source to use when converting on > + the specific channel. Valid values are: > + 0: REF0P/REF0N VREF0P etc to match namign above. > + 1: REF1P/REF1N > + 2: REF2P/REF2N > + 3: AVDD/AGND > + 4: REF0P/AGND > + 5: REF1P/AGND > + 6: REF2P/AGND Is it valid to use REF0P/AGND for a differential channel? If not I would reduce this list to 0-2 only. If it is valid (so actually useful to do so) then we are stuck with this. That does make me wonder if there is a difference between 3 and 7? If not, just don't list 7 > + 7: AVDD/AGND > + If this field is left empty, AVDD/AGND is selected. > + $ref: /schemas/types.yaml#/definitions/uint32 > + enum: [0, 1, 2, 3, 4, 5, 6, 7] > + default: 7 > + > + adi,input-mode: > + description: | > + Select signal path of input channels. When PGA path is selected, > + hardwaregain property is enabled for channel. Valid values are: > + 0: Buffered, low-power, unity-gain path (default) > + 1: Bypass path > + 2: PGA path > + $ref: /schemas/types.yaml#/definitions/uint32 > + enum: [0, 1, 2] > + default: 0 > + > + diff-channels: true > + > + bipolar: true > + > + settling-time-us: true > + > + adi,buffered-vrefp: > + description: Enable buffered mode for positive reference. > + type: boolean > + > + adi,buffered-vrefn: > + description: Enable buffered mode for negative reference. > + type: boolean > + > + required: > + - reg > + > + additionalProperties: false > + > +additionalProperties: false > + > +examples: > + - | > + spi { > + #address-cells = <1>; > + #size-cells = <0>; > + > + adc@0 { > + compatible = "adi,max11410"; > + reg = <0>; > + spi-max-frequency = <8000000>; > + interrupts = <25 2>; > + interrupt-parent = <&gpio>; > + > + avdd-supply = <&adc_avdd>; > + > + vref1p-supply = <&adc_vref1p>; > + vref1n-supply = <&adc_vref1n>; > + > + #address-cells = <1>; > + #size-cells = <0>; > + > + channel@0 { > + reg = <0>; > + }; > + > + channel@1 { > + reg = <1>; > + diff-channels = <2 3>; > + adi,reference = <1>; > + bipolar; > + settling-time-us = <100000>; > + }; > + > + channel@2 { > + reg = <2>; > + diff-channels = <7 9>; > + adi,reference = <5>; > + adi,input-mode = <2>; > + settling-time-us = <50000>; > + }; > + }; > + };
> On Thu, 7 Jul 2022 08:31:26 +0000 > Ibrahim Tilki <Ibrahim.Tilki@analog.com> wrote: > > > Adding devicetree binding documentation for max11410 adc. > > > > Signed-off-by: Ibrahim Tilki <Ibrahim.Tilki@analog.com> > > Reviewed-by: Nurettin Bolucu <Nurettin.Bolucu@analog.com> > > Hi. > > A few questions inline. Mostly stuff I couldn't figure out from a quick > scan through the datasheet. > > > --- > > .../bindings/iio/adc/adi,max11410.yaml | 168 ++++++++++++++++++ > > 1 file changed, 168 insertions(+) > > create mode 100644 Documentation/devicetree/bindings/iio/adc/adi,max11410.yaml > > > > diff --git a/Documentation/devicetree/bindings/iio/adc/adi,max11410.yaml b/Documentation/devicetree/bindings/iio/adc/adi,max11410.yaml > > new file mode 100644 > > index 000000000..f28d29fb2 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/iio/adc/adi,max11410.yaml > > @@ -0,0 +1,168 @@ > > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) > > +# Copyright 2022 Analog Devices Inc. > > +%YAML 1.2 > > +--- > > +$id: http://devicetree.org/schemas/iio/adc/adi,max11410.yaml# > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > + > > +title: Analog Devices MAX11410 ADC device driver > > + > > +maintainers: > > + - Ibrahim Tilki <ibrahim.tilki@analog.com> > > + > > +description: | > > + Bindings for the Analog Devices MAX11410 ADC device. Datasheet can be > > + found here: > > + https://datasheets.maximintegrated.com/en/ds/MAX11410.pdf > > + > > +properties: > > + compatible: > > + enum: > > + - adi,max11410 > > + > > + reg: > > + description: SPI chip select number for the device > > Description not needed as same for all SPI devices. > Removed in v3. > > + maxItems: 1 > > + > > + interrupts: > > + description: IRQ line for the ADC > The description doesn't tell us anything so drop it. > There is no need to provide description lines for self documenting > items like this. Removed in v3. > > + maxItems: 1 > > + > > + '#address-cells': > > + const: 1 > > + > > + '#size-cells': > > + const: 0 > > + > > + avdd-supply: > > + description: avdd supply can be used as reference for conversion. > > Mention it's also a necessary power supply. As mentioned in driver review > I'd suggest you actually treat this as 'no explicit reference supplied'. > That simplifies the meaning of the adi,reference below. > Please see my comments to this in section "adi,reference". > > + > > + vref0p-supply: > > + description: vref0p supply can be used as reference for conversion. > > + > > + vref1p-supply: > > + description: vref1p supply can be used as reference for conversion. > > + > > + vref2p-supply: > > + description: vref2p supply can be used as reference for conversion. > > + > > + vref0n-supply: > > + description: vref0n supply can be used as reference for conversion. > > + > > + vref1n-supply: > > + description: vref1n supply can be used as reference for conversion. > > + > > + vref2n-supply: > > + description: vref2n supply can be used as reference for conversion. > > + > > + spi-max-frequency: > > + maximum: 8000000 > > + > > +required: > > + - compatible > > + - reg > > + - avdd-supply > > + > > +patternProperties: > > + "^channel(@[0-9a-f]+)?$": > > + $ref: "adc.yaml" > > + type: object > > + description: Represents the external channels which are connected to the ADC. > > + > > + properties: > > + reg: > > + description: The channel number in single-ended mode. > > + minimum: 0 > > + maximum: 10 > > + > > + adi,reference: > > + description: | > > + Select the reference source to use when converting on > > + the specific channel. Valid values are: > > + 0: REF0P/REF0N > > VREF0P etc to match namign above. > Corrected in v3. > > + 1: REF1P/REF1N > > + 2: REF2P/REF2N > > + 3: AVDD/AGND > > + 4: REF0P/AGND > > + 5: REF1P/AGND > > + 6: REF2P/AGND > > Is it valid to use REF0P/AGND for a differential channel? If not > I would reduce this list to 0-2 only. If it is valid (so actually > useful to do so) then we are stuck with this. That does make me wonder > if there is a difference between 3 and 7? If not, just don't list 7 > Yes, it is valid. Option 3 and 7 are the same, 7 is removed in v3. I think we should list 4-6 here and removing 3 would cause more confusion to users in that case. This enum reflects the register field directly, maybe we can do some mapping for convenience. AVDD is already treated as default reference and user is free to specify it explicitly. Maybe we can split reference description into two parts: "adi,reference" = <0>; // [0-2], AVDD if not specified. "adi,reference-n-agnd"; // boolean for connecting negative input to agnd. But I think it would be more confusing. The most straightforward way is the enum IMO. I cannot think of a better way to describe reference than what we already have. > > + 7: AVDD/AGND > > + If this field is left empty, AVDD/AGND is selected. > > + $ref: /schemas/types.yaml#/definitions/uint32 > > + enum: [0, 1, 2, 3, 4, 5, 6, 7] > > + default: 7 ...
On Tue, 19 Jul 2022 14:59:30 +0000 Ibrahim Tilki <Ibrahim.Tilki@analog.com> wrote: > > On Thu, 7 Jul 2022 08:31:26 +0000 > > Ibrahim Tilki <Ibrahim.Tilki@analog.com> wrote: > > > > > Adding devicetree binding documentation for max11410 adc. > > > > > > Signed-off-by: Ibrahim Tilki <Ibrahim.Tilki@analog.com> > > > Reviewed-by: Nurettin Bolucu <Nurettin.Bolucu@analog.com> > > > > Hi. > > > > A few questions inline. Mostly stuff I couldn't figure out from a quick > > scan through the datasheet. > > > > > --- > > > .../bindings/iio/adc/adi,max11410.yaml | 168 ++++++++++++++++++ > > > 1 file changed, 168 insertions(+) > > > create mode 100644 Documentation/devicetree/bindings/iio/adc/adi,max11410.yaml > > > > > > diff --git a/Documentation/devicetree/bindings/iio/adc/adi,max11410.yaml b/Documentation/devicetree/bindings/iio/adc/adi,max11410.yaml > > > new file mode 100644 > > > index 000000000..f28d29fb2 > > > --- /dev/null > > > +++ b/Documentation/devicetree/bindings/iio/adc/adi,max11410.yaml > > > @@ -0,0 +1,168 @@ > > > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) > > > +# Copyright 2022 Analog Devices Inc. > > > +%YAML 1.2 > > > +--- > > > +$id: http://devicetree.org/schemas/iio/adc/adi,max11410.yaml# > > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > > + > > > +title: Analog Devices MAX11410 ADC device driver > > > + > > > +maintainers: > > > + - Ibrahim Tilki <ibrahim.tilki@analog.com> > > > + > > > +description: | > > > + Bindings for the Analog Devices MAX11410 ADC device. Datasheet can be > > > + found here: > > > + https://datasheets.maximintegrated.com/en/ds/MAX11410.pdf > > > + > > > +properties: > > > + compatible: > > > + enum: > > > + - adi,max11410 > > > + > > > + reg: > > > + description: SPI chip select number for the device > > > > Description not needed as same for all SPI devices. > > > > Removed in v3. > > > > + maxItems: 1 > > > + > > > + interrupts: > > > + description: IRQ line for the ADC > > The description doesn't tell us anything so drop it. > > There is no need to provide description lines for self documenting > > items like this. > > Removed in v3. > > > > + maxItems: 1 > > > + > > > + '#address-cells': > > > + const: 1 > > > + > > > + '#size-cells': > > > + const: 0 > > > + > > > + avdd-supply: > > > + description: avdd supply can be used as reference for conversion. > > > > Mention it's also a necessary power supply. As mentioned in driver review > > I'd suggest you actually treat this as 'no explicit reference supplied'. > > That simplifies the meaning of the adi,reference below. > > > > Please see my comments to this in section "adi,reference". > > > > + > > > + vref0p-supply: > > > + description: vref0p supply can be used as reference for conversion. > > > + > > > + vref1p-supply: > > > + description: vref1p supply can be used as reference for conversion. > > > + > > > + vref2p-supply: > > > + description: vref2p supply can be used as reference for conversion. > > > + > > > + vref0n-supply: > > > + description: vref0n supply can be used as reference for conversion. > > > + > > > + vref1n-supply: > > > + description: vref1n supply can be used as reference for conversion. > > > + > > > + vref2n-supply: > > > + description: vref2n supply can be used as reference for conversion. > > > + > > > + spi-max-frequency: > > > + maximum: 8000000 > > > + > > > +required: > > > + - compatible > > > + - reg > > > + - avdd-supply > > > + > > > +patternProperties: > > > + "^channel(@[0-9a-f]+)?$": > > > + $ref: "adc.yaml" > > > + type: object > > > + description: Represents the external channels which are connected to the ADC. > > > + > > > + properties: > > > + reg: > > > + description: The channel number in single-ended mode. > > > + minimum: 0 > > > + maximum: 10 > > > + > > > + adi,reference: > > > + description: | > > > + Select the reference source to use when converting on > > > + the specific channel. Valid values are: > > > + 0: REF0P/REF0N > > > > VREF0P etc to match namign above. > > > > Corrected in v3. > > > > + 1: REF1P/REF1N > > > + 2: REF2P/REF2N > > > + 3: AVDD/AGND > > > + 4: REF0P/AGND > > > + 5: REF1P/AGND > > > + 6: REF2P/AGND > > > > Is it valid to use REF0P/AGND for a differential channel? If not > > I would reduce this list to 0-2 only. If it is valid (so actually > > useful to do so) then we are stuck with this. That does make me wonder > > if there is a difference between 3 and 7? If not, just don't list 7 > > > > Yes, it is valid. Option 3 and 7 are the same, 7 is removed in v3. > > I think we should list 4-6 here and removing 3 would cause more confusion > to users in that case. This enum reflects the register field directly, maybe we > can do some mapping for convenience. AVDD is already treated as default reference > and user is free to specify it explicitly. > > Maybe we can split reference description into two parts: > "adi,reference" = <0>; // [0-2], AVDD if not specified. > "adi,reference-n-agnd"; // boolean for connecting negative input to agnd. > > But I think it would be more confusing. The most straightforward way is the enum IMO. > I cannot think of a better way to describe reference than what we already have. Fair enough. Sometimes we can't do better than something opaque :( Jonathan > > > > + 7: AVDD/AGND > > > + If this field is left empty, AVDD/AGND is selected. > > > + $ref: /schemas/types.yaml#/definitions/uint32 > > > + enum: [0, 1, 2, 3, 4, 5, 6, 7] > > > + default: 7 > > ...
diff --git a/Documentation/devicetree/bindings/iio/adc/adi,max11410.yaml b/Documentation/devicetree/bindings/iio/adc/adi,max11410.yaml new file mode 100644 index 000000000..f28d29fb2 --- /dev/null +++ b/Documentation/devicetree/bindings/iio/adc/adi,max11410.yaml @@ -0,0 +1,168 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +# Copyright 2022 Analog Devices Inc. +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/iio/adc/adi,max11410.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Analog Devices MAX11410 ADC device driver + +maintainers: + - Ibrahim Tilki <ibrahim.tilki@analog.com> + +description: | + Bindings for the Analog Devices MAX11410 ADC device. Datasheet can be + found here: + https://datasheets.maximintegrated.com/en/ds/MAX11410.pdf + +properties: + compatible: + enum: + - adi,max11410 + + reg: + description: SPI chip select number for the device + maxItems: 1 + + interrupts: + description: IRQ line for the ADC + maxItems: 1 + + '#address-cells': + const: 1 + + '#size-cells': + const: 0 + + avdd-supply: + description: avdd supply can be used as reference for conversion. + + vref0p-supply: + description: vref0p supply can be used as reference for conversion. + + vref1p-supply: + description: vref1p supply can be used as reference for conversion. + + vref2p-supply: + description: vref2p supply can be used as reference for conversion. + + vref0n-supply: + description: vref0n supply can be used as reference for conversion. + + vref1n-supply: + description: vref1n supply can be used as reference for conversion. + + vref2n-supply: + description: vref2n supply can be used as reference for conversion. + + spi-max-frequency: + maximum: 8000000 + +required: + - compatible + - reg + - avdd-supply + +patternProperties: + "^channel(@[0-9a-f]+)?$": + $ref: "adc.yaml" + type: object + description: Represents the external channels which are connected to the ADC. + + properties: + reg: + description: The channel number in single-ended mode. + minimum: 0 + maximum: 10 + + adi,reference: + description: | + Select the reference source to use when converting on + the specific channel. Valid values are: + 0: REF0P/REF0N + 1: REF1P/REF1N + 2: REF2P/REF2N + 3: AVDD/AGND + 4: REF0P/AGND + 5: REF1P/AGND + 6: REF2P/AGND + 7: AVDD/AGND + If this field is left empty, AVDD/AGND is selected. + $ref: /schemas/types.yaml#/definitions/uint32 + enum: [0, 1, 2, 3, 4, 5, 6, 7] + default: 7 + + adi,input-mode: + description: | + Select signal path of input channels. When PGA path is selected, + hardwaregain property is enabled for channel. Valid values are: + 0: Buffered, low-power, unity-gain path (default) + 1: Bypass path + 2: PGA path + $ref: /schemas/types.yaml#/definitions/uint32 + enum: [0, 1, 2] + default: 0 + + diff-channels: true + + bipolar: true + + settling-time-us: true + + adi,buffered-vrefp: + description: Enable buffered mode for positive reference. + type: boolean + + adi,buffered-vrefn: + description: Enable buffered mode for negative reference. + type: boolean + + required: + - reg + + additionalProperties: false + +additionalProperties: false + +examples: + - | + spi { + #address-cells = <1>; + #size-cells = <0>; + + adc@0 { + compatible = "adi,max11410"; + reg = <0>; + spi-max-frequency = <8000000>; + interrupts = <25 2>; + interrupt-parent = <&gpio>; + + avdd-supply = <&adc_avdd>; + + vref1p-supply = <&adc_vref1p>; + vref1n-supply = <&adc_vref1n>; + + #address-cells = <1>; + #size-cells = <0>; + + channel@0 { + reg = <0>; + }; + + channel@1 { + reg = <1>; + diff-channels = <2 3>; + adi,reference = <1>; + bipolar; + settling-time-us = <100000>; + }; + + channel@2 { + reg = <2>; + diff-channels = <7 9>; + adi,reference = <5>; + adi,input-mode = <2>; + settling-time-us = <50000>; + }; + }; + };