Add dt-bindings for AD4062 family, devices AD4060/AD4062, low-power with
monitor capabilities SAR ADCs. Each variant of the family differs in
resolution. The device contains two outputs (gp0, gp1). The outputs can
be configured for range of options, such as threshold and data ready.
The device uses a 2-wire I3C interface.
Signed-off-by: Jorge Marques <jorge.marques@analog.com>
---
.../devicetree/bindings/iio/adc/adi,ad4062.yaml | 124 +++++++++++++++++++++
MAINTAINERS | 6 +
2 files changed, 130 insertions(+)
diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad4062.yaml b/Documentation/devicetree/bindings/iio/adc/adi,ad4062.yaml
new file mode 100644
index 0000000000000..a7a2ad761d1f0
--- /dev/null
+++ b/Documentation/devicetree/bindings/iio/adc/adi,ad4062.yaml
@@ -0,0 +1,124 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+# Copyright 2024 Analog Devices Inc.
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/adc/adi,ad4062.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Analog Devices AD4062 ADC family device driver
+
+maintainers:
+ - Jorge Marques <jorge.marques@analog.com>
+
+description: |
+ Analog Devices AD4062 Single Channel Precision SAR ADC family
+
+ https://www.analog.com/media/en/technical-documentation/data-sheets/ad4060.pdf
+ https://www.analog.com/media/en/technical-documentation/data-sheets/ad4062.pdf
+
+properties:
+ compatible:
+ enum:
+ - adi,ad4060
+ - adi,ad4062
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ description:
+ The interrupt pins are digital outputs that can be configured at runtime
+ as multiple interrupt signals. Each can be configured as GP_INTR, RDY,
+ DEV_EN, logic low, logic high and DEV_RDY (GP1 only). RDY is the
+ active-low data ready signal, indicates when new ADC data are ready to
+ read. DEV_EN synchronizes the enable and power-down states of signal
+ chain devices with the ADC sampling instant. DEV_RDY is an active-high
+ signal that indicates when the device is ready to accept serial interface
+ communications. In GP_INTR mode, the interrupt outputs one of the
+ threshold detection interrupt signals (MIN_INTR, MAX_INTR or either).
+ minItems: 1
+ items:
+ - description:
+ GP0 pin, cannot be configured as DEV_RDY.
+ - description:
+ GP1 pin, can be configured to any setting.
+
+ interrupt-names:
+ minItems: 1
+ items:
+ - const: gp0
+ - const: gp1
+
+ gpio-controller:
+ description:
+ Marks the device node as a GPIO controller. GPs not listed as interrupts
+ are exposed as a GPO.
+
+ '#gpio-cells':
+ const: 2
+ description:
+ The first cell is the GPIO number and the second cell specifies
+ GPIO flags, as defined in <dt-bindings/gpio/gpio.h>.
+
+ vdd-supply:
+ description: Analog power supply.
+
+ vio-supply:
+ description: Digital interface logic power supply.
+
+ ref-supply:
+ description:
+ Reference voltage to set the ADC full-scale range. If not present,
+ vdd-supply is used as the reference voltage.
+
+required:
+ - compatible
+ - reg
+ - vdd-supply
+ - vio-supply
+
+allOf:
+ - $ref: /schemas/i3c/i3c.yaml#
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/gpio/gpio.h>
+ #include <dt-bindings/interrupt-controller/irq.h>
+
+ i3c {
+ #address-cells = <3>;
+ #size-cells = <0>;
+
+ adc@0,2ee007c0000 {
+ reg = <0x0 0x2ee 0x7c0000>;
+ vdd-supply = <&vdd>;
+ vio-supply = <&vio>;
+ ref-supply = <&ref>;
+
+ interrupt-parent = <&gpio>;
+ interrupts = <0 0 IRQ_TYPE_EDGE_RISING>,
+ <0 1 IRQ_TYPE_EDGE_FALLING>;
+ interrupt-names = "gp0", "gp1";
+ };
+ };
+
+ - |
+ #include <dt-bindings/gpio/gpio.h>
+ #include <dt-bindings/interrupt-controller/irq.h>
+
+ i3c {
+ #address-cells = <3>;
+ #size-cells = <0>;
+
+ adc@0,2ee007c0000 {
+ reg = <0x0 0x2ee 0x7c0000>;
+ vdd-supply = <&vdd>;
+ vio-supply = <&vio>;
+ ref-supply = <&ref>;
+
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+ };
diff --git a/MAINTAINERS b/MAINTAINERS
index 31d98efb1ad15..e22ba5ec8c849 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1432,6 +1432,12 @@ F: Documentation/devicetree/bindings/iio/adc/adi,ad4030.yaml
F: Documentation/iio/ad4030.rst
F: drivers/iio/adc/ad4030.c
+ANALOG DEVICES INC AD4062 DRIVER
+M: Jorge Marques <jorge.marques@analog.com>
+S: Supported
+W: https://ez.analog.com/linux-software-drivers
+F: Documentation/devicetree/bindings/iio/adc/adi,ad4062.yaml
+
ANALOG DEVICES INC AD4080 DRIVER
M: Antoniu Miclaus <antoniu.miclaus@analog.com>
L: linux-iio@vger.kernel.org
--
2.51.1
On Fri, 5 Dec 2025 16:12:02 +0100
Jorge Marques <jorge.marques@analog.com> wrote:
> Add dt-bindings for AD4062 family, devices AD4060/AD4062, low-power with
> monitor capabilities SAR ADCs. Each variant of the family differs in
> resolution. The device contains two outputs (gp0, gp1). The outputs can
> be configured for range of options, such as threshold and data ready.
> The device uses a 2-wire I3C interface.
>
> Signed-off-by: Jorge Marques <jorge.marques@analog.com>
> ---
> .../devicetree/bindings/iio/adc/adi,ad4062.yaml | 124 +++++++++++++++++++++
> MAINTAINERS | 6 +
> 2 files changed, 130 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad4062.yaml b/Documentation/devicetree/bindings/iio/adc/adi,ad4062.yaml
> new file mode 100644
> index 0000000000000..a7a2ad761d1f0
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/iio/adc/adi,ad4062.yaml
> @@ -0,0 +1,124 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +# Copyright 2024 Analog Devices Inc.
It's changed enough in the versions posted that probably wants to at
least include 2025.
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/iio/adc/adi,ad4062.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Analog Devices AD4062 ADC family device driver
> +
> +maintainers:
> + - Jorge Marques <jorge.marques@analog.com>
> +
> +description: |
> + Analog Devices AD4062 Single Channel Precision SAR ADC family
> +
> + https://www.analog.com/media/en/technical-documentation/data-sheets/ad4060.pdf
> + https://www.analog.com/media/en/technical-documentation/data-sheets/ad4062.pdf
> +
> +properties:
> + compatible:
> + enum:
> + - adi,ad4060
> + - adi,ad4062
> +
> + reg:
> + maxItems: 1
> +
> + interrupts:
> + description:
> + The interrupt pins are digital outputs that can be configured at runtime
> + as multiple interrupt signals. Each can be configured as GP_INTR, RDY,
> + DEV_EN, logic low, logic high and DEV_RDY (GP1 only).
This is a bit confused. logic low / logic high aren't interrupt signals so I'd
not mention them here. Maybe something less detailed such as
Two pins are available that can be configured as either a general purpose
digital output, device enable signal (used to synchronise other parts of
the signal chain with ADC sampling), device ready (GP1 only) or various
interrupt signals. If intended for use as a GPIO or device enable, will not
present here.
For the binding I'm not sure we care about which interrupts are possible.
I guess even for device ready we might treat it as a onetime interrupt. Probably poll
it though - which requires a GPIO not an interrupt binding. If we don't need
to use that mode (and can poll a register or something like that) then no need
to mention that bit.
> RDY is the
> + active-low data ready signal, indicates when new ADC data are ready to
> + read. DEV_EN synchronizes the enable and power-down states of signal
> + chain devices with the ADC sampling instant. DEV_RDY is an active-high
> + signal that indicates when the device is ready to accept serial interface
> + communications. In GP_INTR mode, the interrupt outputs one of the
> + threshold detection interrupt signals (MIN_INTR, MAX_INTR or either).
> + minItems: 1
> + items:
> + - description:
> + GP0 pin, cannot be configured as DEV_RDY.
> + - description:
> + GP1 pin, can be configured to any setting.
> +
> + interrupt-names:
> + minItems: 1
> + items:
> + - const: gp0
> + - const: gp1
> +
> + gpio-controller:
> + description:
> + Marks the device node as a GPIO controller. GPs not listed as interrupts
> + are exposed as a GPO.
> +
> + '#gpio-cells':
> + const: 2
> + description:
> + The first cell is the GPIO number and the second cell specifies
> + GPIO flags, as defined in <dt-bindings/gpio/gpio.h>.
> +
> + vdd-supply:
> + description: Analog power supply.
> +
> + vio-supply:
> + description: Digital interface logic power supply.
> +
> + ref-supply:
> + description:
> + Reference voltage to set the ADC full-scale range. If not present,
> + vdd-supply is used as the reference voltage.
> +
> +required:
> + - compatible
> + - reg
> + - vdd-supply
> + - vio-supply
> +
> +allOf:
> + - $ref: /schemas/i3c/i3c.yaml#
On Sat, Dec 06, 2025 at 04:58:22PM +0000, Jonathan Cameron wrote: > On Fri, 5 Dec 2025 16:12:02 +0100 > Jorge Marques <jorge.marques@analog.com> wrote: > > > Add dt-bindings for AD4062 family, devices AD4060/AD4062, low-power with > > monitor capabilities SAR ADCs. Each variant of the family differs in > > resolution. The device contains two outputs (gp0, gp1). The outputs can > > be configured for range of options, such as threshold and data ready. > > The device uses a 2-wire I3C interface. > > > > Signed-off-by: Jorge Marques <jorge.marques@analog.com> > > --- > > .../devicetree/bindings/iio/adc/adi,ad4062.yaml | 124 +++++++++++++++++++++ > > MAINTAINERS | 6 + > > 2 files changed, 130 insertions(+) > > > > diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad4062.yaml b/Documentation/devicetree/bindings/iio/adc/adi,ad4062.yaml > > new file mode 100644 > > index 0000000000000..a7a2ad761d1f0 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/iio/adc/adi,ad4062.yaml > > + interrupts: > > + description: > > + The interrupt pins are digital outputs that can be configured at runtime > > + as multiple interrupt signals. Each can be configured as GP_INTR, RDY, > > + DEV_EN, logic low, logic high and DEV_RDY (GP1 only). > This is a bit confused. logic low / logic high aren't interrupt signals so I'd > not mention them here. Maybe something less detailed such as > > Two pins are available that can be configured as either a general purpose > digital output, device enable signal (used to synchronise other parts of > the signal chain with ADC sampling), device ready (GP1 only) or various > interrupt signals. If intended for use as a GPIO or device enable, will not > present here. > > For the binding I'm not sure we care about which interrupts are possible. > I guess even for device ready we might treat it as a onetime interrupt. Probably poll > it though - which requires a GPIO not an interrupt binding. If we don't need > to use that mode (and can poll a register or something like that) then no need > to mention that bit. Hi Jonathan, Device enabled (DEV_EN) and device ready (DEV_RDY) are not implemented at this time at the driver. I believe it is fair to briefly mention in the dt-binding. I will use your suggested description. Best regards, Jorge
© 2016 - 2025 Red Hat, Inc.