183 lines
4.4 KiB
YAML
183 lines
4.4 KiB
YAML
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||
# Copyright 2019 Analog Devices Inc.
|
||
%YAML 1.2
|
||
---
|
||
$id: http://devicetree.org/schemas/iio/adc/adi,ad7124.yaml#
|
||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||
|
||
title: Analog Devices AD7124 ADC device driver
|
||
|
||
maintainers:
|
||
- Marcelo Schmitt <marcelo.schmitt@analog.com>
|
||
- Nuno Sá <nuno.sa@analog.com>
|
||
|
||
description: |
|
||
Bindings for the Analog Devices AD7124 ADC device. Datasheet can be
|
||
found here:
|
||
https://www.analog.com/media/en/technical-documentation/data-sheets/AD7124-8.pdf
|
||
|
||
properties:
|
||
compatible:
|
||
enum:
|
||
- adi,ad7124-4
|
||
- adi,ad7124-8
|
||
|
||
reg:
|
||
description: SPI chip select number for the device
|
||
maxItems: 1
|
||
|
||
clocks:
|
||
maxItems: 1
|
||
description: Optional external clock connected to the CLK pin.
|
||
|
||
clock-names:
|
||
deprecated: true
|
||
description:
|
||
MCLK is an internal counter in the ADC. Do not use this property.
|
||
items:
|
||
- const: mclk
|
||
|
||
'#clock-cells':
|
||
description:
|
||
The CLK pin can be used as an output. When that is the case, include
|
||
this property.
|
||
const: 0
|
||
|
||
interrupts:
|
||
description: IRQ line for the ADC
|
||
maxItems: 1
|
||
|
||
rdy-gpios:
|
||
description:
|
||
GPIO reading the R̅D̅Y̅ line. Having such a GPIO is technically optional but
|
||
highly recommended because DOUT/R̅D̅Y̅ toggles during SPI transfers (in its
|
||
DOUT aka MISO role) and so usually triggers a spurious interrupt. The
|
||
distinction between such a spurious event and a real one can only be done
|
||
by reading such a GPIO. (There is a register telling the same
|
||
information, but accessing that one needs a SPI transfer which then
|
||
triggers another interrupt event.)
|
||
maxItems: 1
|
||
|
||
'#address-cells':
|
||
const: 1
|
||
|
||
'#size-cells':
|
||
const: 0
|
||
|
||
refin1-supply:
|
||
description: refin1 supply can be used as reference for conversion.
|
||
|
||
refin2-supply:
|
||
description: refin2 supply can be used as reference for conversion.
|
||
|
||
avdd-supply:
|
||
description: avdd supply can be used as reference for conversion.
|
||
|
||
required:
|
||
- compatible
|
||
- reg
|
||
- interrupts
|
||
|
||
# Can't have both clock input and output at the same time.
|
||
not:
|
||
required:
|
||
- '#clock-cells'
|
||
- clocks
|
||
|
||
patternProperties:
|
||
"^channel@([0-9]|1[0-5])$":
|
||
$ref: adc.yaml
|
||
type: object
|
||
description: |
|
||
Represents the external channels which are connected to the ADC.
|
||
|
||
properties:
|
||
reg:
|
||
description: |
|
||
The channel number. It can have up to 8 channels on ad7124-4
|
||
and 16 channels on ad7124-8, numbered from 0 to 15.
|
||
items:
|
||
minimum: 0
|
||
maximum: 15
|
||
|
||
adi,reference-select:
|
||
description: |
|
||
Select the reference source to use when converting on
|
||
the specific channel. Valid values are:
|
||
0: REFIN1(+)/REFIN1(−).
|
||
1: REFIN2(+)/REFIN2(−).
|
||
3: AVDD
|
||
If this field is left empty, internal reference is selected.
|
||
$ref: /schemas/types.yaml#/definitions/uint32
|
||
enum: [0, 1, 3]
|
||
|
||
diff-channels: true
|
||
|
||
bipolar: true
|
||
|
||
adi,buffered-positive:
|
||
description: Enable buffered mode for positive input.
|
||
type: boolean
|
||
|
||
adi,buffered-negative:
|
||
description: Enable buffered mode for negative input.
|
||
type: boolean
|
||
|
||
required:
|
||
- reg
|
||
- diff-channels
|
||
|
||
additionalProperties: false
|
||
|
||
allOf:
|
||
- $ref: /schemas/spi/spi-peripheral-props.yaml#
|
||
|
||
unevaluatedProperties: false
|
||
|
||
examples:
|
||
- |
|
||
#include <dt-bindings/gpio/gpio.h>
|
||
spi {
|
||
#address-cells = <1>;
|
||
#size-cells = <0>;
|
||
|
||
adc@0 {
|
||
compatible = "adi,ad7124-4";
|
||
reg = <0>;
|
||
spi-max-frequency = <5000000>;
|
||
interrupts = <25 2>;
|
||
interrupt-parent = <&gpio>;
|
||
rdy-gpios = <&gpio 25 GPIO_ACTIVE_LOW>;
|
||
refin1-supply = <&adc_vref>;
|
||
|
||
#address-cells = <1>;
|
||
#size-cells = <0>;
|
||
|
||
channel@0 {
|
||
reg = <0>;
|
||
diff-channels = <0 1>;
|
||
adi,reference-select = <0>;
|
||
adi,buffered-positive;
|
||
};
|
||
|
||
channel@1 {
|
||
reg = <1>;
|
||
bipolar;
|
||
diff-channels = <2 3>;
|
||
adi,reference-select = <0>;
|
||
adi,buffered-positive;
|
||
adi,buffered-negative;
|
||
};
|
||
|
||
channel@2 {
|
||
reg = <2>;
|
||
diff-channels = <4 5>;
|
||
};
|
||
|
||
channel@3 {
|
||
reg = <3>;
|
||
diff-channels = <6 7>;
|
||
};
|
||
};
|
||
};
|