Skip to content

Commit eef85fb

Browse files
dlechnunojsa
authored andcommitted
Documentation: iio: Document ad4695 driver
The Analog Devices Inc. AD4695 (and similar chips) are complex ADCs that will benefit from a detailed driver documentation. This documents the current features supported by the driver. Signed-off-by: David Lechner <dlechner@baylibre.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
1 parent 2734aeb commit eef85fb

File tree

2 files changed

+161
-0
lines changed

2 files changed

+161
-0
lines changed

Documentation/iio/ad4695.rst

Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
.. SPDX-License-Identifier: GPL-2.0-only
2+
3+
=============
4+
AD4695 driver
5+
=============
6+
7+
ADC driver for Analog Devices Inc. AD4695 and similar devices. The module name
8+
is ``ad4695``.
9+
10+
11+
Supported devices
12+
=================
13+
14+
The following chips are supported by this driver:
15+
16+
* `AD4695 <https://www.analog.com/AD4695>`_
17+
* `AD4696 <https://www.analog.com/AD4696>`_
18+
* `AD4697 <https://www.analog.com/AD4697>`_
19+
* `AD4698 <https://www.analog.com/AD4698>`_
20+
21+
22+
Supported features
23+
==================
24+
25+
SPI wiring modes
26+
----------------
27+
28+
The driver currently supports the following SPI wiring configuration:
29+
30+
4-wire mode
31+
^^^^^^^^^^^
32+
33+
In this mode, CNV and CS are tied together and there is a single SDO line.
34+
35+
.. code-block::
36+
37+
+-------------+ +-------------+
38+
| CS |<-+------| CS |
39+
| CNV |<-+ | |
40+
| ADC | | HOST |
41+
| | | |
42+
| SDI |<--------| SDO |
43+
| SDO |-------->| SDI |
44+
| SCLK |<--------| SCLK |
45+
+-------------+ +-------------+
46+
47+
To use this mode, in the device tree, omit the ``cnv-gpios`` and
48+
``spi-rx-bus-width`` properties.
49+
50+
Channel configuration
51+
---------------------
52+
53+
Since the chip supports multiple ways to configure each channel, this must be
54+
described in the device tree based on what is actually wired up to the inputs.
55+
56+
There are three typical configurations:
57+
58+
An ``INx`` pin is used as the positive input with the ``REFGND``, ``COM`` or
59+
the next ``INx`` pin as the negative input.
60+
61+
Pairing with REFGND
62+
^^^^^^^^^^^^^^^^^^^
63+
64+
Each ``INx`` pin can be used as a pseudo-differential input in conjunction with
65+
the ``REFGND`` pin. The device tree will look like this:
66+
67+
.. code-block::
68+
69+
channel@0 {
70+
reg = <0>; /* IN0 */
71+
};
72+
73+
If no other channel properties are needed (e.g. ``adi,no-high-z``), the channel
74+
node can be omitted entirely.
75+
76+
This will appear on the IIO bus as the ``voltage0`` channel. The processed value
77+
(*raw × scale*) will be the voltage present on the ``IN0`` pin relative to
78+
``REFGND``. (Offset is always 0 when pairing with ``REFGND``.)
79+
80+
Pairing with COM
81+
^^^^^^^^^^^^^^^^
82+
83+
Each ``INx`` pin can be used as a pseudo-differential input in conjunction with
84+
the ``COM`` pin. The device tree will look like this:
85+
86+
.. code-block::
87+
88+
com-supply = <&vref_div_2>;
89+
90+
channel@1 {
91+
reg = <1>; /* IN1 */
92+
common-mode-channel = <AD4695_COMMON_MODE_COM>;
93+
bipolar;
94+
};
95+
96+
This will appear on the IIO bus as the ``voltage1`` channel. The processed value
97+
(*(raw + offset) × scale*) will be the voltage measured on the ``IN1`` pin
98+
relative to ``REFGND``. (The offset is determined by the ``com-supply`` voltage.)
99+
100+
The macro comes from:
101+
102+
.. code-block::
103+
104+
#include <dt-bindings/iio/adi,ad4695.h>
105+
106+
Pairing two INx pins
107+
^^^^^^^^^^^^^^^^^^^^
108+
109+
An even-numbered ``INx`` pin and the following odd-numbered ``INx`` pin can be
110+
used as a pseudo-differential input. The device tree for using ``IN2`` as the
111+
positive input and ``IN3`` as the negative input will look like this:
112+
113+
.. code-block::
114+
115+
in3-supply = <&vref_div_2>;
116+
117+
channel@2 {
118+
reg = <2>; /* IN2 */
119+
common-mode-channel = <3>; /* IN3 */
120+
bipolar;
121+
};
122+
123+
This will appear on the IIO bus as the ``voltage2`` channel. The processed value
124+
(*(raw + offset) × scale*) will be the voltage measured on the ``IN1`` pin
125+
relative to ``REFGND``. (Offset is determined by the ``in3-supply`` voltage.)
126+
127+
VCC supply
128+
----------
129+
130+
The chip supports being powered by an external LDO via the ``VCC`` input or an
131+
internal LDO via the ``LDO_IN`` input. The driver looks at the device tree to
132+
determine which is being used. If ``ldo-supply`` is present, then the internal
133+
LDO is used. If ``vcc-supply`` is present, then the external LDO is used and
134+
the internal LDO is disabled.
135+
136+
Reference voltage
137+
-----------------
138+
139+
The chip supports an external reference voltage via the ``REF`` input or an
140+
internal buffered reference voltage via the ``REFIN`` input. The driver looks
141+
at the device tree to determine which is being used. If ``ref-supply`` is
142+
present, then the external reference voltage is used and the internal buffer is
143+
disabled. If ``refin-supply`` is present, then the internal buffered reference
144+
voltage is used.
145+
146+
Unimplemented features
147+
----------------------
148+
149+
- Additional wiring modes
150+
- Buffered reads
151+
- Threshold events
152+
- Oversampling
153+
- Gain/offset calibration
154+
- GPIO support
155+
- CRC support

Documentation/iio/index.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ Industrial I/O Kernel Drivers
1717
.. toctree::
1818
:maxdepth: 1
1919

20+
<<<<<<< HEAD
21+
=======
22+
ad4695
23+
ad7380
24+
ad7944
25+
>>>>>>> 316c957feea4 (Documentation: iio: Document ad4695 driver)
2026
adis16475
2127
adis16480
2228
adxl380

0 commit comments

Comments
 (0)