blob: 30194880f45702e0e2e9714f6d3c8b91efc04b4a [file] [log] [blame]
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/dac/adi,ad5592r.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Analog Devices AD5592R/AD5593R DAC/ADC
maintainers:
- Michael Hennerich <michael.hennerich@analog.com>
properties:
compatible:
enum:
- adi,ad5592r
- adi,ad5593r
reg:
maxItems: 1
spi-max-frequency:
maximum: 30000000
spi-cpol: true
"#address-cells":
const: 1
"#size-cells":
const: 0
"#io-channel-cells":
const: 1
vref-supply:
description: If not set internal 2.5V reference used.
reset-gpios:
maxItems: 1
gpio-controller:
description: Marks the device node as a GPIO controller.
"#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>.
required:
- compatible
- reg
- "#address-cells"
- "#size-cells"
allOf:
- if:
properties:
compatible:
contains:
const: adi,ad5592r
then:
required:
- spi-cpol
else:
properties:
spi-cpol: false
additionalProperties: false
patternProperties:
"^(channel@)[0-7]$":
type: object
description: Child node to describe a channel
properties:
reg:
minimum: 0
maximum: 7
adi,mode:
$ref: /schemas/types.yaml#/definitions/uint32
enum: [0, 1, 2, 3, 8]
description: |
Mode or function of this channel.
Macros specifying the valid values can be found in
<dt-bindings/iio/adi,ad5592r.h>.
The following values are currently supported:
* CH_MODE_UNUSED (the pin is unused)
* CH_MODE_ADC (the pin is ADC input)
* CH_MODE_DAC (the pin is DAC output)
* CH_MODE_DAC_AND_ADC (the pin is DAC output but can be monitored
by an ADC, since there is no disadvantage this should be
considered as the preferred DAC mode)
* CH_MODE_GPIO (the pin is registered with GPIOLIB)
adi,off-state:
$ref: /schemas/types.yaml#/definitions/uint32
enum: [0, 1, 2, 3]
description: |
State of this channel when unused or the device gets removed.
Macros specifying the valid values can be found in
<dt-bindings/iio/adi,ad5592r.h>.
* CH_OFFSTATE_PULLDOWN (the pin is pulled down)
* CH_OFFSTATE_OUT_LOW (the pin is output low)
* CH_OFFSTATE_OUT_HIGH (the pin is output high)
* CH_OFFSTATE_OUT_TRISTATE (the pin is tristated output)
required:
- reg
- adi,mode
additionalProperties: false
examples:
- |
#include <dt-bindings/iio/adi,ad5592r.h>
spi {
#address-cells = <1>;
#size-cells = <0>;
addac@0 {
compatible = "adi,ad5592r";
#size-cells = <0>;
#address-cells = <1>;
#gpio-cells = <2>;
reg = <0>;
spi-max-frequency = <1000000>;
spi-cpol;
vref-supply = <&vref>;
reset-gpios = <&gpio0 86 0>;
gpio-controller;
channel@0 {
reg = <0>;
adi,mode = <CH_MODE_DAC>;
};
channel@1 {
reg = <1>;
adi,mode = <CH_MODE_ADC>;
};
channel@2 {
reg = <2>;
adi,mode = <CH_MODE_DAC_AND_ADC>;
};
channel@3 {
reg = <3>;
adi,mode = <CH_MODE_DAC_AND_ADC>;
adi,off-state = <CH_OFFSTATE_PULLDOWN>;
};
channel@4 {
reg = <4>;
adi,mode = <CH_MODE_UNUSED>;
adi,off-state = <CH_OFFSTATE_PULLDOWN>;
};
channel@5 {
reg = <5>;
adi,mode = <CH_MODE_GPIO>;
adi,off-state = <CH_OFFSTATE_PULLDOWN>;
};
channel@6 {
reg = <6>;
adi,mode = <CH_MODE_GPIO>;
adi,off-state = <CH_OFFSTATE_PULLDOWN>;
};
channel@7 {
reg = <7>;
adi,mode = <CH_MODE_GPIO>;
adi,off-state = <CH_OFFSTATE_PULLDOWN>;
};
};
ad5593r@10 {
compatible = "adi,ad5593r";
#size-cells = <0>;
#address-cells = <1>;
#gpio-cells = <2>;
reg = <0x10>;
gpio-controller;
channel@0 {
reg = <0>;
adi,mode = <CH_MODE_DAC>;
adi,off-state = <CH_OFFSTATE_PULLDOWN>;
};
channel@1 {
reg = <1>;
adi,mode = <CH_MODE_ADC>;
adi,off-state = <CH_OFFSTATE_PULLDOWN>;
};
channel@2 {
reg = <2>;
adi,mode = <CH_MODE_DAC_AND_ADC>;
adi,off-state = <CH_OFFSTATE_PULLDOWN>;
};
channel@6 {
reg = <6>;
adi,mode = <CH_MODE_GPIO>;
adi,off-state = <CH_OFFSTATE_PULLDOWN>;
};
};
};
...