| # 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>; |
| }; |
| }; |
| }; |
| ... |