Devicetree bindings for MAX22007 4-channel 12-bit DAC that drives a
voltage or current output on each channel
Signed-off-by: Janani Sunil <janani.sunil@analog.com>
---
.../devicetree/bindings/iio/dac/adi,max22007.yaml | 136 +++++++++++++++++++++
MAINTAINERS | 7 ++
2 files changed, 143 insertions(+)
diff --git a/Documentation/devicetree/bindings/iio/dac/adi,max22007.yaml b/Documentation/devicetree/bindings/iio/dac/adi,max22007.yaml
new file mode 100644
index 000000000000..52c7c3217f90
--- /dev/null
+++ b/Documentation/devicetree/bindings/iio/dac/adi,max22007.yaml
@@ -0,0 +1,136 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/dac/adi,max22007.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Analog Devices MAX22007 DAC
+
+maintainers:
+ - Janani Sunil <janani.sunil@analog.com>
+
+description:
+ The MAX22007 is a quad-channel, 12-bit digital-to-analog converter (DAC)
+ with integrated precision output amplifiers and current output capability.
+ Each channel can be independently configured for voltage or current output.
+ Datasheet available at https://www.analog.com/en/products/max22007.html
+
+$ref: /schemas/spi/spi-peripheral-props.yaml#
+
+properties:
+ compatible:
+ const: adi,max22007
+
+ reg:
+ maxItems: 1
+
+ spi-max-frequency:
+ maximum: 500000
+
+ '#address-cells':
+ const: 1
+
+ '#size-cells':
+ const: 0
+
+ vdd-supply:
+ description: Low-Voltage Power Supply from +2.7V to +5.5V.
+
+ hvdd-supply:
+ description:
+ Positive High-Voltage Power Supply from +8V to (HVSS +24V) for
+ the Output Channels.
+
+ hvss-supply:
+ description:
+ Optional Negative High-Voltage Power Supply from -2V to 0V for the Output
+ Channels. For most applications HVSS can be connected to GND (0V), but for
+ applications requiring output down to true 0V or 0mA, connect to a -2V supply.
+
+ reset-gpios:
+ maxItems: 1
+ description:
+ Active low GPIO used for hardware reset.
+
+patternProperties:
+ "^channel@[0-3]$":
+ $ref: /schemas/iio/dac/dac.yaml#
+ type: object
+ description:
+ Represents the external channels which are connected to the DAC.
+
+ properties:
+ reg:
+ description: Channel number
+ items:
+ minimum: 0
+ maximum: 3
+
+ adi,ch-func:
+ description:
+ Channel output type. Use CH_FUNC_VOLTAGE_OUTPUT for voltage
+ output or CH_FUNC_CURRENT_OUTPUT for current output.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ enum: [1, 2]
+
+ required:
+ - reg
+ - adi,ch-func
+
+ unevaluatedProperties: false
+
+required:
+ - compatible
+ - reg
+ - vdd-supply
+ - hvdd-supply
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/gpio/gpio.h>
+ #include <dt-bindings/iio/addac/adi,ad74413r.h>
+
+ vdd_reg: regulator-vdd {
+ compatible = "regulator-fixed";
+ regulator-name = "vdd-3v3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-always-on;
+ };
+
+ hvdd_reg: regulator-hvdd {
+ compatible = "regulator-fixed";
+ regulator-name = "hvdd-12v";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ regulator-always-on;
+ };
+
+ spi {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ dac@0 {
+ compatible = "adi,max22007";
+ reg = <0>;
+ spi-max-frequency = <500000>;
+ reset-gpios = <&gpio 19 GPIO_ACTIVE_LOW>;
+ vdd-supply = <&vdd_reg>;
+ hvdd-supply = <&hvdd_reg>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ channel@0 {
+ reg = <0>;
+ adi,ch-func = <CH_FUNC_VOLTAGE_OUTPUT>;
+ };
+
+ channel@1 {
+ reg = <1>;
+ adi,ch-func = <CH_FUNC_CURRENT_OUTPUT>;
+ };
+ };
+ };
+...
diff --git a/MAINTAINERS b/MAINTAINERS
index 29340394ac9d..e1addbd21562 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1593,6 +1593,13 @@ W: https://ez.analog.com/linux-software-drivers
F: Documentation/devicetree/bindings/iio/dac/adi,ad9739a.yaml
F: drivers/iio/dac/ad9739a.c
+ANALOG DEVICES INC MAX22007 DRIVER
+M: Janani Sunil <janani.sunil@analog.com>
+L: linux-iio@vger.kernel.org
+S: Supported
+W: https://ez.analog.com/linux-software-drivers
+F: Documentation/devicetree/bindings/iio/dac/adi,max22007.yaml
+
ANALOG DEVICES INC ADA4250 DRIVER
M: Antoniu Miclaus <antoniu.miclaus@analog.com>
L: linux-iio@vger.kernel.org
--
2.43.0
Hi Janani, One extra comment in addition to Krzysztof's. On 01/08, Janani Sunil wrote: > Devicetree bindings for MAX22007 4-channel 12-bit DAC that drives a > voltage or current output on each channel > > Signed-off-by: Janani Sunil <janani.sunil@analog.com> > --- ... > + > +patternProperties: > + "^channel@[0-3]$": > + $ref: /schemas/iio/dac/dac.yaml# > + type: object > + description: > + Represents the external channels which are connected to the DAC. > + > + properties: > + reg: > + description: Channel number > + items: > + minimum: 0 > + maximum: 3 > + > + adi,ch-func: > + description: > + Channel output type. Use CH_FUNC_VOLTAGE_OUTPUT for voltage > + output or CH_FUNC_CURRENT_OUTPUT for current output. > + $ref: /schemas/types.yaml#/definitions/uint32 > + enum: [1, 2] adi,ad74413r.yaml has many possibilities for the channel output type. max22007 is only either voltage or current. Can't we do this with output-range-microamp and output-range-microvolt from dac.yaml? Figure out the channel type from the output-range- property? > + > + required: > + - reg > + - adi,ch-func > + > + unevaluatedProperties: false With best regards, Marcelo
Hi Marcelo, Thank you for the suggestion. However, reusing the output-range-microamp and output-range-microvolt properties might mislead the users into thinking that they can configure the DAC output range, which the device does not support. The adi,ch-func fits better here. On 1/9/26 13:44, Marcelo Schmitt wrote: > Hi Janani, > > One extra comment in addition to Krzysztof's. > > On 01/08, Janani Sunil wrote: >> Devicetree bindings for MAX22007 4-channel 12-bit DAC that drives a >> voltage or current output on each channel >> >> Signed-off-by: Janani Sunil <janani.sunil@analog.com> >> --- > ... >> + >> +patternProperties: >> + "^channel@[0-3]$": >> + $ref: /schemas/iio/dac/dac.yaml# >> + type: object >> + description: >> + Represents the external channels which are connected to the DAC. >> + >> + properties: >> + reg: >> + description: Channel number >> + items: >> + minimum: 0 >> + maximum: 3 >> + >> + adi,ch-func: >> + description: >> + Channel output type. Use CH_FUNC_VOLTAGE_OUTPUT for voltage >> + output or CH_FUNC_CURRENT_OUTPUT for current output. >> + $ref: /schemas/types.yaml#/definitions/uint32 >> + enum: [1, 2] > adi,ad74413r.yaml has many possibilities for the channel output type. > max22007 is only either voltage or current. > Can't we do this with output-range-microamp and output-range-microvolt from dac.yaml? > Figure out the channel type from the output-range- property? > >> + >> + required: >> + - reg >> + - adi,ch-func >> + >> + unevaluatedProperties: false > With best regards, > Marcelo Best Regards, Janani Sunil
On Thu, Jan 08, 2026 at 01:58:23PM +0100, Janani Sunil wrote:
> +required:
> + - compatible
> + - reg
> + - vdd-supply
> + - hvdd-supply
> +
> +unevaluatedProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/gpio/gpio.h>
> + #include <dt-bindings/iio/addac/adi,ad74413r.h>
> +
> + vdd_reg: regulator-vdd {
This was not here, drop entire node.
> + compatible = "regulator-fixed";
> + regulator-name = "vdd-3v3";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-always-on;
> + };
> +
> + hvdd_reg: regulator-hvdd {
Same here.
With these two fixed:
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Best regards,
Krzysztof
© 2016 - 2026 Red Hat, Inc.