Message ID | 20230113194959.3276433-3-hugo@hugovil.com |
---|---|
State | Superseded |
Headers | show |
Series | iio: adc: ti-ads7924: add Texas Instruments ADS7924 driver | expand |
On 13/01/2023 20:49, Hugo Villeneuve wrote: > From: Hugo Villeneuve <hvilleneuve@dimonoff.com> > > Add device tree bindings document for the Texas Instruments ADS7924 > ADC. > > Signed-off-by: Hugo Villeneuve <hvilleneuve@dimonoff.com> > --- > .../bindings/iio/adc/ti,ads7924.yaml | 112 ++++++++++++++++++ > 1 file changed, 112 insertions(+) > create mode 100644 Documentation/devicetree/bindings/iio/adc/ti,ads7924.yaml > > diff --git a/Documentation/devicetree/bindings/iio/adc/ti,ads7924.yaml b/Documentation/devicetree/bindings/iio/adc/ti,ads7924.yaml > new file mode 100644 > index 000000000000..24bbf95383b4 > --- /dev/null > +++ b/Documentation/devicetree/bindings/iio/adc/ti,ads7924.yaml > @@ -0,0 +1,112 @@ > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/iio/adc/ti,ads7924.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: TI ADS7924 4 channels 12 bits I2C analog to digital converter > + > +maintainers: > + - Hugo Villeneuve <hvilleneuve@dimonoff.com> > + > +description: | > + Texas Instruments ADS7924 4 channels 12 bits I2C analog to digital converter > + > + Specifications: > + https://www.ti.com/lit/gpn/ads7924 > + > +properties: > + compatible: > + const: ti,ads7924 > + > + reg: > + maxItems: 1 > + > + vref-supply: > + description: > + The regulator supply for the ADC reference voltage (AVDD) > + > + reset-gpios: > + maxItems: 1 > + > + interrupts: > + maxItems: 1 > + > + "#address-cells": > + const: 1 > + > + "#size-cells": > + const: 0 > + > + "#io-channel-cells": > + const: 1 > + > +patternProperties: > + "^channel@[0-3]+$": > + $ref: adc.yaml > + > + description: | > + Represents the external channels which are connected to the ADC. > + > + properties: > + reg: > + description: | > + The channel number. It can have up to 4 channels numbered from 0 to 3. > + items: > + - minimum: 0 > + maximum: 3 > + > + label: > + description: | > + Unique name to identify the channel. Drop description, it's coming from adc.yaml. Just "label: true" > + > + required: > + - reg > + > + additionalProperties: false You are not allowing anything else from adc.yaml. Is it on purpose? > + > +additionalProperties: false > + > +required: > + - compatible > + - reg > + - vref-supply > + - "#address-cells" > + - "#size-cells" > + Best regards, Krzysztof
On Sun, 15 Jan 2023 11:22:05 -0500 Hugo Villeneuve <hugo@hugovil.com> wrote: > On Sun, 15 Jan 2023 15:57:21 +0100 > Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> wrote: > > > On 13/01/2023 20:49, Hugo Villeneuve wrote: > > > From: Hugo Villeneuve <hvilleneuve@dimonoff.com> > > > > > > Add device tree bindings document for the Texas Instruments ADS7924 > > > ADC. > > > > > > Signed-off-by: Hugo Villeneuve <hvilleneuve@dimonoff.com> > > > --- > > > .../bindings/iio/adc/ti,ads7924.yaml | 112 ++++++++++++++++++ > > > 1 file changed, 112 insertions(+) > > > create mode 100644 Documentation/devicetree/bindings/iio/adc/ti,ads7924.yaml > > > > > > diff --git a/Documentation/devicetree/bindings/iio/adc/ti,ads7924.yaml b/Documentation/devicetree/bindings/iio/adc/ti,ads7924.yaml > > > new file mode 100644 > > > index 000000000000..24bbf95383b4 > > > --- /dev/null > > > +++ b/Documentation/devicetree/bindings/iio/adc/ti,ads7924.yaml > > > @@ -0,0 +1,112 @@ > > > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) > > > +%YAML 1.2 > > > +--- > > > +$id: http://devicetree.org/schemas/iio/adc/ti,ads7924.yaml# > > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > > + > > > +title: TI ADS7924 4 channels 12 bits I2C analog to digital converter > > > + > > > +maintainers: > > > + - Hugo Villeneuve <hvilleneuve@dimonoff.com> > > > + > > > +description: | > > > + Texas Instruments ADS7924 4 channels 12 bits I2C analog to digital converter > > > + > > > + Specifications: > > > + https://www.ti.com/lit/gpn/ads7924 > > > + > > > +properties: > > > + compatible: > > > + const: ti,ads7924 > > > + > > > + reg: > > > + maxItems: 1 > > > + > > > + vref-supply: > > > + description: > > > + The regulator supply for the ADC reference voltage (AVDD) > > > + > > > + reset-gpios: > > > + maxItems: 1 > > > + > > > + interrupts: > > > + maxItems: 1 > > > + > > > + "#address-cells": > > > + const: 1 > > > + > > > + "#size-cells": > > > + const: 0 > > > + > > > + "#io-channel-cells": > > > + const: 1 > > > + > > > +patternProperties: > > > + "^channel@[0-3]+$": > > > + $ref: adc.yaml > > > + > > > + description: | > > > + Represents the external channels which are connected to the ADC. > > > + > > > + properties: > > > + reg: > > > + description: | > > > + The channel number. It can have up to 4 channels numbered from 0 to 3. > > > + items: > > > + - minimum: 0 > > > + maximum: 3 > > > + > > > + label: > > > + description: | > > > + Unique name to identify the channel. > > > > Drop description, it's coming from adc.yaml. Just "label: true" > > Done. > > > > + > > > + required: > > > + - reg > > > + > > > + additionalProperties: false > > > > You are not allowing anything else from adc.yaml. Is it on purpose? > > I am really not an expert with this Yaml stuff, and reading the documentation makes me probably more confused than before reading it :) > > But one thing that is for sure is that these other properties in adc.yaml are not used in my driver: > > bipolar > diff-channels > settling-time-us > oversampling-ratio > > So is it Ok then to use "additionalProperties: false"? I think so, but what is your recommandation? Makes sense to me. Whilst there are lots of things a channel can support, most of them are hardware related and not universal. Jonathan > > Thank you, > Hugo. > > > > > + > > > +additionalProperties: false > > > + > > > +required: > > > + - compatible > > > + - reg > > > + - vref-supply > > > + - "#address-cells" > > > + - "#size-cells" > > > + > > > > Best regards, > > Krzysztof > > > > > >
On Sun, 15 Jan 2023 20:17:24 +0100 Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> wrote: > On 15/01/2023 17:32, Hugo Villeneuve wrote: > >>>>> + required: > >>>>> + - reg > >>>>> + > >>>>> + additionalProperties: false > >>>> > >>>> You are not allowing anything else from adc.yaml. Is it on purpose? > >>> > >>> I am really not an expert with this Yaml stuff, and reading the documentation makes me probably more confused than before reading it :) > >>> > >>> But one thing that is for sure is that these other properties in adc.yaml are not used in my driver: > >>> > >>> bipolar > >>> diff-channels > >>> settling-time-us > >>> oversampling-ratio > >>> > >>> So is it Ok then to use "additionalProperties: false"? I think so, but what is your recommandation? > >> > >> Makes sense to me. Whilst there are lots of things a channel can support, most > >> of them are hardware related and not universal. > > > > Ok, I think I am finally beginning to see the light here :) > > > > So I will then leave "additionalProperties: false". > > > > I will send a V4 soon with all the latest changes. > > > > Just to clarify - we talk about hardware, not your Linux driver. What > your driver uses or doesn't, should not matter here that much. Hi, the following properties are definitely not supported by the hardware: bipolar diff-channels oversampling-ratio does this means that we should add these lines? bipolar: false diff-channels: false oversampling-ratio: false as for settling-time-us, I am not sure of its usage and if its related to this hardware. Hugo. > Best regards, > Krzysztof > >
On Sun, 15 Jan 2023 15:11:39 -0500 Hugo Villeneuve <hugo@hugovil.com> wrote: > On Sun, 15 Jan 2023 20:17:24 +0100 > Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> wrote: > > > On 15/01/2023 17:32, Hugo Villeneuve wrote: > > >>>>> + required: > > >>>>> + - reg > > >>>>> + > > >>>>> + additionalProperties: false > > >>>> > > >>>> You are not allowing anything else from adc.yaml. Is it on purpose? > > >>> > > >>> I am really not an expert with this Yaml stuff, and reading the documentation makes me probably more confused than before reading it :) > > >>> > > >>> But one thing that is for sure is that these other properties in adc.yaml are not used in my driver: > > >>> > > >>> bipolar > > >>> diff-channels > > >>> settling-time-us > > >>> oversampling-ratio > > >>> > > >>> So is it Ok then to use "additionalProperties: false"? I think so, but what is your recommandation? > > >> > > >> Makes sense to me. Whilst there are lots of things a channel can support, most > > >> of them are hardware related and not universal. > > > > > > Ok, I think I am finally beginning to see the light here :) > > > > > > So I will then leave "additionalProperties: false". > > > > > > I will send a V4 soon with all the latest changes. > > > > > > > Just to clarify - we talk about hardware, not your Linux driver. What > > your driver uses or doesn't, should not matter here that much. Indeed. The hardware does not support bipolar inputs, differential channels or oversampling ratios as all of those require specific silicon that is not in this particular device. Technically you could emulate oversampling but there is no reason to do that in kernel and no drivers do so + then it would not be a feature of the hardware anyway so wouldn't belong in DT. > > Hi, > the following properties are definitely not supported by the hardware: > bipolar > diff-channels > oversampling-ratio > > does this means that we should add these lines? > bipolar: false > diff-channels: false > oversampling-ratio: false > > as for settling-time-us, I am not sure of its usage and if its related to this hardware. That's used for devices that will delay their ADC sampling if there is a mux that is changing which pin is being internally connected to a single shared ADC. It requires hardware support, which isn't present in this device. Jonathan > > Hugo. > > > > Best regards, > > Krzysztof > > > > > >
diff --git a/Documentation/devicetree/bindings/iio/adc/ti,ads7924.yaml b/Documentation/devicetree/bindings/iio/adc/ti,ads7924.yaml new file mode 100644 index 000000000000..24bbf95383b4 --- /dev/null +++ b/Documentation/devicetree/bindings/iio/adc/ti,ads7924.yaml @@ -0,0 +1,112 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/iio/adc/ti,ads7924.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: TI ADS7924 4 channels 12 bits I2C analog to digital converter + +maintainers: + - Hugo Villeneuve <hvilleneuve@dimonoff.com> + +description: | + Texas Instruments ADS7924 4 channels 12 bits I2C analog to digital converter + + Specifications: + https://www.ti.com/lit/gpn/ads7924 + +properties: + compatible: + const: ti,ads7924 + + reg: + maxItems: 1 + + vref-supply: + description: + The regulator supply for the ADC reference voltage (AVDD) + + reset-gpios: + maxItems: 1 + + interrupts: + maxItems: 1 + + "#address-cells": + const: 1 + + "#size-cells": + const: 0 + + "#io-channel-cells": + const: 1 + +patternProperties: + "^channel@[0-3]+$": + $ref: adc.yaml + + description: | + Represents the external channels which are connected to the ADC. + + properties: + reg: + description: | + The channel number. It can have up to 4 channels numbered from 0 to 3. + items: + - minimum: 0 + maximum: 3 + + label: + description: | + Unique name to identify the channel. + + required: + - reg + + additionalProperties: false + +additionalProperties: false + +required: + - compatible + - reg + - vref-supply + - "#address-cells" + - "#size-cells" + +examples: + - | + #include <dt-bindings/interrupt-controller/irq.h> + #include <dt-bindings/gpio/gpio.h> + i2c { + #address-cells = <1>; + #size-cells = <0>; + + adc@48 { + compatible = "ti,ads7924"; + reg = <0x48>; + vref-supply = <&ads7924_reg>; + reset-gpios = <&gpio 5 GPIO_ACTIVE_LOW>; + interrupts = <25 IRQ_TYPE_EDGE_FALLING>; + interrupt-parent = <&gpio>; + #address-cells = <1>; + #size-cells = <0>; + channel@0 { + reg = <0>; + label = "CH0"; + }; + channel@1 { + reg = <1>; + label = "CH1"; + }; + channel@2 { + reg = <2>; + label = "CH2"; + }; + channel@3 { + reg = <3>; + label = "CH3"; + }; + }; + }; +...