* [PATCH v2 0/2] iio: adc: ti-ads1119: Add driver
@ 2024-06-06 16:35 Francesco Dolcini
2024-06-06 16:35 ` [PATCH v2 1/2] dt-bindings: iio: adc: add ti,ads1119 Francesco Dolcini
0 siblings, 1 reply; 6+ messages in thread
From: Francesco Dolcini @ 2024-06-06 16:35 UTC (permalink / raw)
To: Francesco Dolcini, João Paulo Gonçalves,
Jonathan Cameron, Lars-Peter Clausen, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Liam Girdwood, Mark Brown
Cc: Francesco Dolcini, linux-iio, devicetree, linux-kernel
From: Francesco Dolcini <francesco.dolcini@toradex.com>
The ADS1119 is a precision, 16-bit, analog-to-digital converter (ADC)
that features two differential or four single-ended inputs through a
flexible input multiplexer (MUX), rail-to-rail input
buffers, a programmable gain stage, a voltage reference, and an
oscillator.
Apart from normal single conversion, the driver also supports
continuous conversion mode using a triggered buffer. However, in this
mode only one channel can be scanned at a time, and it only uses the data
ready interrupt as a trigger. This is because the device channels are
multiplexed, and using its own data ready interrupt as a trigger guarantees
the signal sampling frequency.
v2:
bindings:
- add diff-channels and single-channel
- remove ti,gain and ti,datarate
- more details on the patch changelog
driver:
- adaptation for the binding changes
- changed i2c read/write to the device (not using regmap anymore, use FIELD macros)
- more details on the patch changelog
v1: https://lore.kernel.org/all/20240527154050.24975-1-francesco@dolcini.it/
João Paulo Gonçalves (2):
dt-bindings: iio: adc: add ti,ads1119
iio: adc: ti-ads1119: Add driver
.../bindings/iio/adc/ti,ads1119.yaml | 148 +++
MAINTAINERS | 8 +
drivers/iio/adc/Kconfig | 12 +
drivers/iio/adc/Makefile | 1 +
drivers/iio/adc/ti-ads1119.c | 850 ++++++++++++++++++
5 files changed, 1019 insertions(+)
create mode 100644 Documentation/devicetree/bindings/iio/adc/ti,ads1119.yaml
create mode 100644 drivers/iio/adc/ti-ads1119.c
--
2.39.2
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 1/2] dt-bindings: iio: adc: add ti,ads1119
2024-06-06 16:35 [PATCH v2 0/2] iio: adc: ti-ads1119: Add driver Francesco Dolcini
@ 2024-06-06 16:35 ` Francesco Dolcini
2024-06-06 17:07 ` Conor Dooley
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Francesco Dolcini @ 2024-06-06 16:35 UTC (permalink / raw)
To: Francesco Dolcini, João Paulo Gonçalves,
Jonathan Cameron, Lars-Peter Clausen, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: João Paulo Gonçalves, linux-iio, devicetree,
linux-kernel, Francesco Dolcini
From: João Paulo Gonçalves <joao.goncalves@toradex.com>
Add devicetree bindings for Texas Instruments ADS1119 16-bit ADC
with I2C interface.
Datasheet: https://www.ti.com/lit/gpn/ads1119
Signed-off-by: João Paulo Gonçalves <joao.goncalves@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
---
v2:
- add diff-channels and single-channel
- add XOR check to make diff/single channel property required
- add interrupts, reset-gpios and vref-supply to the example
- fix missing additionalProperties/unevaluatedProperties warning in channels
- remove ti,gain and ti,datarate as they aren't fixed hw properties
- remove unnecessary |
---
.../bindings/iio/adc/ti,ads1119.yaml | 148 ++++++++++++++++++
MAINTAINERS | 7 +
2 files changed, 155 insertions(+)
create mode 100644 Documentation/devicetree/bindings/iio/adc/ti,ads1119.yaml
diff --git a/Documentation/devicetree/bindings/iio/adc/ti,ads1119.yaml b/Documentation/devicetree/bindings/iio/adc/ti,ads1119.yaml
new file mode 100644
index 000000000000..cbf0d4ef3a11
--- /dev/null
+++ b/Documentation/devicetree/bindings/iio/adc/ti,ads1119.yaml
@@ -0,0 +1,148 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/adc/ti,ads1119.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Texas Instruments ADS1119 ADC
+
+maintainers:
+ - João Paulo Gonçalves <jpaulo.silvagoncalves@gmail.com>
+
+description:
+ The TI ADS1119 is a precision 16-bit ADC over I2C that offers single-ended and
+ differential measurements using a multiplexed input. It features a programmable
+ gain, a programmable sample rate, an internal oscillator and voltage reference,
+ and a 50/60Hz rejection filter.
+
+properties:
+ compatible:
+ const: ti,ads1119
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ reset-gpios:
+ maxItems: 1
+
+ vref-supply:
+ description:
+ ADC external reference voltage (VREF).
+
+ "#address-cells":
+ const: 1
+
+ "#size-cells":
+ const: 0
+
+ "#io-channel-cells":
+ const: 1
+
+required:
+ - compatible
+ - reg
+ - "#address-cells"
+ - "#size-cells"
+
+patternProperties:
+ "^channel@([0-6])$":
+ $ref: adc.yaml
+ type: object
+ properties:
+ reg:
+ minimum: 0
+ maximum: 6
+
+ diff-channels:
+ description:
+ Differential input channels AIN0-AIN1, AIN2-AIN3 and AIN1-AIN2.
+ oneOf:
+ - items:
+ - const: 0
+ - const: 1
+ - items:
+ - const: 2
+ - const: 3
+ - items:
+ - const: 1
+ - const: 2
+
+ single-channel:
+ description:
+ Single-ended input channels AIN0, AIN1, AIN2 and AIN3.
+ minimum: 0
+ maximum: 3
+
+ oneOf:
+ - required:
+ - diff-channels
+ - required:
+ - single-channel
+
+ required:
+ - reg
+
+ unevaluatedProperties: false
+
+additionalProperties: false
+
+examples:
+ - |
+
+ #include <dt-bindings/gpio/gpio.h>
+ #include <dt-bindings/interrupt-controller/irq.h>
+
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ adc@40 {
+ compatible = "ti,ads1119";
+ reg = <0x40>;
+ interrupt-parent = <&gpio1>;
+ interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
+ reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
+ vref-supply = <®_vref_ads1119>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ #io-channel-cells = <1>;
+
+ channel@0 {
+ reg = <0>;
+ single-channel = <0>;
+ };
+
+ channel@1 {
+ reg = <1>;
+ diff-channels = <0 1>;
+ };
+
+ channel@2 {
+ reg = <2>;
+ single-channel = <3>;
+ };
+
+ channel@3 {
+ reg = <3>;
+ single-channel = <1>;
+ };
+
+ channel@4 {
+ reg = <4>;
+ single-channel = <2>;
+ };
+
+ channel@5 {
+ reg = <5>;
+ diff-channels = <1 2>;
+ };
+
+ channel@6 {
+ reg = <6>;
+ diff-channels = <2 3>;
+ };
+ };
+ };
diff --git a/MAINTAINERS b/MAINTAINERS
index d6c90161c7bf..f1b2c4b815e2 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -22380,6 +22380,13 @@ M: Robert Richter <rric@kernel.org>
S: Odd Fixes
F: drivers/gpio/gpio-thunderx.c
+TI ADS1119 ADC DRIVER
+M: Francesco Dolcini <francesco@dolcini.it>
+M: João Paulo Gonçalves <jpaulo.silvagoncalves@gmail.com>
+L: linux-iio@vger.kernel.org
+S: Maintained
+F: Documentation/devicetree/bindings/iio/adc/ti,ads1119.yaml
+
TI ADS7924 ADC DRIVER
M: Hugo Villeneuve <hvilleneuve@dimonoff.com>
L: linux-iio@vger.kernel.org
--
2.39.2
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH v2 1/2] dt-bindings: iio: adc: add ti,ads1119
2024-06-06 16:35 ` [PATCH v2 1/2] dt-bindings: iio: adc: add ti,ads1119 Francesco Dolcini
@ 2024-06-06 17:07 ` Conor Dooley
2024-06-06 20:49 ` Rob Herring
2024-06-09 10:17 ` Jonathan Cameron
2 siblings, 0 replies; 6+ messages in thread
From: Conor Dooley @ 2024-06-06 17:07 UTC (permalink / raw)
To: Francesco Dolcini
Cc: João Paulo Gonçalves, Jonathan Cameron,
Lars-Peter Clausen, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, João Paulo Gonçalves, linux-iio,
devicetree, linux-kernel, Francesco Dolcini
[-- Attachment #1: Type: text/plain, Size: 859 bytes --]
On Thu, Jun 06, 2024 at 06:35:28PM +0200, Francesco Dolcini wrote:
> From: João Paulo Gonçalves <joao.goncalves@toradex.com>
>
> Add devicetree bindings for Texas Instruments ADS1119 16-bit ADC
> with I2C interface.
>
> Datasheet: https://www.ti.com/lit/gpn/ads1119
> Signed-off-by: João Paulo Gonçalves <joao.goncalves@toradex.com>
> Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
> ---
> v2:
> - add diff-channels and single-channel
> - add XOR check to make diff/single channel property required
> - add interrupts, reset-gpios and vref-supply to the example
> - fix missing additionalProperties/unevaluatedProperties warning in channels
> - remove ti,gain and ti,datarate as they aren't fixed hw properties
> - remove unnecessary |
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
Thanks,
Conor.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] dt-bindings: iio: adc: add ti,ads1119
2024-06-06 16:35 ` [PATCH v2 1/2] dt-bindings: iio: adc: add ti,ads1119 Francesco Dolcini
2024-06-06 17:07 ` Conor Dooley
@ 2024-06-06 20:49 ` Rob Herring
2024-06-06 22:11 ` Francesco Dolcini
2024-06-09 10:17 ` Jonathan Cameron
2 siblings, 1 reply; 6+ messages in thread
From: Rob Herring @ 2024-06-06 20:49 UTC (permalink / raw)
To: Francesco Dolcini
Cc: João Paulo Gonçalves, Jonathan Cameron,
Lars-Peter Clausen, Krzysztof Kozlowski, Conor Dooley,
João Paulo Gonçalves, linux-iio, devicetree,
linux-kernel, Francesco Dolcini
On Thu, Jun 06, 2024 at 06:35:28PM +0200, Francesco Dolcini wrote:
> From: João Paulo Gonçalves <joao.goncalves@toradex.com>
>
> Add devicetree bindings for Texas Instruments ADS1119 16-bit ADC
> with I2C interface.
>
> Datasheet: https://www.ti.com/lit/gpn/ads1119
> Signed-off-by: João Paulo Gonçalves <joao.goncalves@toradex.com>
> Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
> ---
> v2:
> - add diff-channels and single-channel
Running the checks gives this error:
dtschema/dtc warnings/errors:
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/iio/adc/ti,ads1119.yaml: single-channel: missing type definition
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] dt-bindings: iio: adc: add ti,ads1119
2024-06-06 20:49 ` Rob Herring
@ 2024-06-06 22:11 ` Francesco Dolcini
0 siblings, 0 replies; 6+ messages in thread
From: Francesco Dolcini @ 2024-06-06 22:11 UTC (permalink / raw)
To: Rob Herring
Cc: Francesco Dolcini, João Paulo Gonçalves,
Jonathan Cameron, Lars-Peter Clausen, Krzysztof Kozlowski,
Conor Dooley, João Paulo Gonçalves, linux-iio,
devicetree, linux-kernel, Francesco Dolcini
Hello Rob,
On Thu, Jun 06, 2024 at 02:49:24PM -0600, Rob Herring wrote:
> On Thu, Jun 06, 2024 at 06:35:28PM +0200, Francesco Dolcini wrote:
> > From: João Paulo Gonçalves <joao.goncalves@toradex.com>
> >
> > Add devicetree bindings for Texas Instruments ADS1119 16-bit ADC
> > with I2C interface.
> >
> > Datasheet: https://www.ti.com/lit/gpn/ads1119
> > Signed-off-by: João Paulo Gonçalves <joao.goncalves@toradex.com>
> > Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
> > ---
> > v2:
> > - add diff-channels and single-channel
>
> Running the checks gives this error:
>
> dtschema/dtc warnings/errors:
> /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/iio/adc/ti,ads1119.yaml: single-channel: missing type definition
It's defined starting from commit dd471a2b7759 ("dt-bindings: iio: adc: Add single-channel property")
that is part of the IIO branch (and linux-next).
Francesco
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] dt-bindings: iio: adc: add ti,ads1119
2024-06-06 16:35 ` [PATCH v2 1/2] dt-bindings: iio: adc: add ti,ads1119 Francesco Dolcini
2024-06-06 17:07 ` Conor Dooley
2024-06-06 20:49 ` Rob Herring
@ 2024-06-09 10:17 ` Jonathan Cameron
2 siblings, 0 replies; 6+ messages in thread
From: Jonathan Cameron @ 2024-06-09 10:17 UTC (permalink / raw)
To: Francesco Dolcini
Cc: João Paulo Gonçalves, Lars-Peter Clausen, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, João Paulo Gonçalves,
linux-iio, devicetree, linux-kernel, Francesco Dolcini
On Thu, 6 Jun 2024 18:35:28 +0200
Francesco Dolcini <francesco@dolcini.it> wrote:
> From: João Paulo Gonçalves <joao.goncalves@toradex.com>
>
> Add devicetree bindings for Texas Instruments ADS1119 16-bit ADC
> with I2C interface.
>
> Datasheet: https://www.ti.com/lit/gpn/ads1119
> Signed-off-by: João Paulo Gonçalves <joao.goncalves@toradex.com>
> Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
I missed it on previous version but you only have description in here
for vref and few devices power them selves from something called vref!
The binding should describe the other power supplies as well and mark
them as required.
We've left these out too many times in the past and ended up having
a patch very soon after adding them. Better to have them from the start.
Driver should just use devm_regulator_get_enabled() to turn them on and
register them to be turned off on driver removal, and ignore them
after that. If anyone has controlled supplies and wants to do more
sophisticated handling they can add it later.
Note that even though the dt-binding will list them as required, if
a particular DTS doesn't provide them the regulator framework will
give a dummy uncontrolled regulator to represent the assumption that
the power is always there. We still document them as required in
the dt-binding though as other OS may not be so clever.
Only needs minimal entries though - see inline
Jonathan
> ---
> v2:
> - add diff-channels and single-channel
> - add XOR check to make diff/single channel property required
> - add interrupts, reset-gpios and vref-supply to the example
> - fix missing additionalProperties/unevaluatedProperties warning in channels
> - remove ti,gain and ti,datarate as they aren't fixed hw properties
> - remove unnecessary |
> ---
> .../bindings/iio/adc/ti,ads1119.yaml | 148 ++++++++++++++++++
> MAINTAINERS | 7 +
> 2 files changed, 155 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/iio/adc/ti,ads1119.yaml
>
> diff --git a/Documentation/devicetree/bindings/iio/adc/ti,ads1119.yaml b/Documentation/devicetree/bindings/iio/adc/ti,ads1119.yaml
> new file mode 100644
> index 000000000000..cbf0d4ef3a11
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/iio/adc/ti,ads1119.yaml
> @@ -0,0 +1,148 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/iio/adc/ti,ads1119.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Texas Instruments ADS1119 ADC
> +
> +maintainers:
> + - João Paulo Gonçalves <jpaulo.silvagoncalves@gmail.com>
> +
> +description:
> + The TI ADS1119 is a precision 16-bit ADC over I2C that offers single-ended and
> + differential measurements using a multiplexed input. It features a programmable
> + gain, a programmable sample rate, an internal oscillator and voltage reference,
> + and a 50/60Hz rejection filter.
> +
> +properties:
> + compatible:
> + const: ti,ads1119
> +
> + reg:
> + maxItems: 1
> +
> + interrupts:
> + maxItems: 1
> +
> + reset-gpios:
> + maxItems: 1
> +
avdd-supply: true
dvdd-supply: true
> + vref-supply:
> + description:
> + ADC external reference voltage (VREF).
> +
> + "#address-cells":
> + const: 1
> +
> + "#size-cells":
> + const: 0
> +
> + "#io-channel-cells":
> + const: 1
> +
> +required:
> + - compatible
> + - reg
> + - "#address-cells"
> + - "#size-cells"
- avdd-supply
- dvdd-supply
> +
> +patternProperties:
> + "^channel@([0-6])$":
> + $ref: adc.yaml
> + type: object
> + properties:
> + reg:
> + minimum: 0
> + maximum: 6
> +
> + diff-channels:
> + description:
> + Differential input channels AIN0-AIN1, AIN2-AIN3 and AIN1-AIN2.
> + oneOf:
> + - items:
> + - const: 0
> + - const: 1
> + - items:
> + - const: 2
> + - const: 3
> + - items:
> + - const: 1
> + - const: 2
> +
> + single-channel:
> + description:
> + Single-ended input channels AIN0, AIN1, AIN2 and AIN3.
> + minimum: 0
> + maximum: 3
> +
> + oneOf:
> + - required:
> + - diff-channels
> + - required:
> + - single-channel
> +
> + required:
> + - reg
> +
> + unevaluatedProperties: false
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> +
> + #include <dt-bindings/gpio/gpio.h>
> + #include <dt-bindings/interrupt-controller/irq.h>
> +
> + i2c {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + adc@40 {
> + compatible = "ti,ads1119";
> + reg = <0x40>;
> + interrupt-parent = <&gpio1>;
> + interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
> + reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
> + vref-supply = <®_vref_ads1119>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + #io-channel-cells = <1>;
> +
> + channel@0 {
> + reg = <0>;
> + single-channel = <0>;
> + };
> +
> + channel@1 {
> + reg = <1>;
> + diff-channels = <0 1>;
> + };
> +
> + channel@2 {
> + reg = <2>;
> + single-channel = <3>;
> + };
> +
> + channel@3 {
> + reg = <3>;
> + single-channel = <1>;
> + };
> +
> + channel@4 {
> + reg = <4>;
> + single-channel = <2>;
> + };
> +
> + channel@5 {
> + reg = <5>;
> + diff-channels = <1 2>;
> + };
> +
> + channel@6 {
> + reg = <6>;
> + diff-channels = <2 3>;
> + };
> + };
> + };
> diff --git a/MAINTAINERS b/MAINTAINERS
> index d6c90161c7bf..f1b2c4b815e2 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -22380,6 +22380,13 @@ M: Robert Richter <rric@kernel.org>
> S: Odd Fixes
> F: drivers/gpio/gpio-thunderx.c
>
> +TI ADS1119 ADC DRIVER
> +M: Francesco Dolcini <francesco@dolcini.it>
> +M: João Paulo Gonçalves <jpaulo.silvagoncalves@gmail.com>
> +L: linux-iio@vger.kernel.org
> +S: Maintained
> +F: Documentation/devicetree/bindings/iio/adc/ti,ads1119.yaml
> +
> TI ADS7924 ADC DRIVER
> M: Hugo Villeneuve <hvilleneuve@dimonoff.com>
> L: linux-iio@vger.kernel.org
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2024-06-09 10:18 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-06 16:35 [PATCH v2 0/2] iio: adc: ti-ads1119: Add driver Francesco Dolcini
2024-06-06 16:35 ` [PATCH v2 1/2] dt-bindings: iio: adc: add ti,ads1119 Francesco Dolcini
2024-06-06 17:07 ` Conor Dooley
2024-06-06 20:49 ` Rob Herring
2024-06-06 22:11 ` Francesco Dolcini
2024-06-09 10:17 ` Jonathan Cameron
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox