xref: /linux/Documentation/iio/ad7944.rst (revision c532de5a67a70f8533d495f8f2aaa9a0491c3ad0)
1.. 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
27The driver currently supports three of the many possible SPI wiring configurations.
28
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
71Chain 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
92Reference 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
110
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
131In "chain" mode, additional chips will appear as additional voltage input
132channels, e.g. ``in_voltage1_raw``.
133
134Fully-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
147In "chain" mode, additional chips will appear as additional voltage input
148channels, e.g. ``in_voltage2-voltage3_raw``.
149
150
151Device buffers
152==============
153
154This driver supports IIO triggered buffers.
155
156See :doc:`iio_devbuf` for more information.
157