blob: 0d26e56aba8862a8d2ff541012bb4681d05c7bb5 [file] [log] [blame]
David Lechner18b51452024-03-22 16:52:14 -05001.. SPDX-License-Identifier: GPL-2.0-only
2
3=============
4AD7944 driver
5=============
6
7ADC driver for Analog Devices Inc. AD7944 and similar devices. The module name
8is ``ad7944``.
9
10
11Supported devices
12=================
13
14The following chips are supported by this driver:
15
16* `AD7944 <https://www.analog.com/AD7944>`_
17* `AD7985 <https://www.analog.com/AD7985>`_
18* `AD7986 <https://www.analog.com/AD7986>`_
19
20
21Supported features
22==================
23
24SPI wiring modes
25----------------
26
David Lechner633e3012024-04-25 09:10:00 -050027The driver currently supports three of the many possible SPI wiring configurations.
David Lechner18b51452024-03-22 16:52:14 -050028
29CS mode, 3-wire, without busy indicator
30^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
31
32.. code-block::
33
34 +-------------+
35 +--------------------| CS |
36 v | |
37 VIO +--------------------+ | HOST |
38 | | CNV | | |
39 +--->| SDI AD7944 SDO |-------->| SDI |
40 | SCK | | |
41 +--------------------+ | |
42 ^ | |
43 +--------------------| SCLK |
44 +-------------+
45
46To select this mode in the device tree, set the ``adi,spi-mode`` property to
47``"single"`` and omit the ``cnv-gpios`` property.
48
49CS mode, 4-wire, without busy indicator
50^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
51
52.. code-block::
53
54 +-------------+
55 +-----------------------------------| CS |
56 | | |
57 | +--------------------| GPIO |
58 | v | |
59 | +--------------------+ | HOST |
60 | | CNV | | |
61 +--->| SDI AD7944 SDO |-------->| SDI |
62 | SCK | | |
63 +--------------------+ | |
64 ^ | |
65 +--------------------| SCLK |
66 +-------------+
67
68To select this mode in the device tree, omit the ``adi,spi-mode`` property and
69provide the ``cnv-gpios`` property.
70
David Lechner633e3012024-04-25 09:10:00 -050071Chain mode, without busy indicator
72^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
73
74.. code-block::
75
76 +-------------+
77 +-------------------------+--------------------| CS |
78 v v | |
79 +--------------------+ +--------------------+ | HOST |
80 | CNV | | CNV | | |
81 +--->| SDI AD7944 SDO |--->| SDI AD7944 SDO |-------->| SDI |
82 | | SCK | | SCK | | |
83 GND +--------------------+ +--------------------+ | |
84 ^ ^ | |
85 +-------------------------+--------------------| SCLK |
86 +-------------+
87
88To select this mode in the device tree, set the ``adi,spi-mode`` property to
89``"chain"``, add the ``spi-cs-high`` flag, add the ``#daisy-chained-devices``
90property, and omit the ``cnv-gpios`` property.
91
David Lechner18b51452024-03-22 16:52:14 -050092Reference voltage
93-----------------
94
95All 3 possible reference voltage sources are supported:
96
97- Internal reference
98- External 1.2V reference and internal buffer
99- External reference
100
101The source is determined by the device tree. If ``ref-supply`` is present, then
102the external reference is used. If ``refin-supply`` is present, then the internal
103buffer is used. If neither is present, then the internal reference is used.
104
105Unimplemented features
106----------------------
107
108- ``BUSY`` indication
109- ``TURBO`` mode
David Lechner18b51452024-03-22 16:52:14 -0500110
111
112Device attributes
113=================
114
115There are two types of ADCs in this family, pseudo-differential and fully
116differential. The channel name is different depending on the type of ADC.
117
118Pseudo-differential ADCs
119------------------------
120
121AD7944 and AD7985 are pseudo-differential ADCs and have the following attributes:
122
123+---------------------------------------+--------------------------------------------------------------+
124| Attribute | Description |
125+=======================================+==============================================================+
126| ``in_voltage0_raw`` | Raw ADC voltage value (*IN+* referenced to ground sense). |
127+---------------------------------------+--------------------------------------------------------------+
128| ``in_voltage0_scale`` | Scale factor to convert raw value to mV. |
129+---------------------------------------+--------------------------------------------------------------+
130
David Lechner633e3012024-04-25 09:10:00 -0500131In "chain" mode, additional chips will appear as additional voltage input
132channels, e.g. ``in_voltage1_raw``.
133
David Lechner18b51452024-03-22 16:52:14 -0500134Fully-differential ADCs
135-----------------------
136
137AD7986 is a fully-differential ADC and has the following attributes:
138
139+---------------------------------------+--------------------------------------------------------------+
140| Attribute | Description |
141+=======================================+==============================================================+
142| ``in_voltage0-voltage1_raw`` | Raw ADC voltage value (*IN+* - *IN-*). |
143+---------------------------------------+--------------------------------------------------------------+
144| ``in_voltage0-voltage1_scale`` | Scale factor to convert raw value to mV. |
145+---------------------------------------+--------------------------------------------------------------+
146
David Lechner633e3012024-04-25 09:10:00 -0500147In "chain" mode, additional chips will appear as additional voltage input
148channels, e.g. ``in_voltage2-voltage3_raw``.
149
David Lechner18b51452024-03-22 16:52:14 -0500150
151Device buffers
152==============
153
154This driver supports IIO triggered buffers.
155
156See :doc:`iio_devbuf` for more information.