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 49This is the only wiring configuration supported when using `SPI offload support`_. 50 51CS mode, 4-wire, without busy indicator 52^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 53 54.. code-block:: 55 56 +-------------+ 57 +-----------------------------------| CS | 58 | | | 59 | +--------------------| GPIO | 60 | v | | 61 | +--------------------+ | HOST | 62 | | CNV | | | 63 +--->| SDI AD7944 SDO |-------->| SDI | 64 | SCK | | | 65 +--------------------+ | | 66 ^ | | 67 +--------------------| SCLK | 68 +-------------+ 69 70To select this mode in the device tree, omit the ``adi,spi-mode`` property and 71provide the ``cnv-gpios`` property. 72 73Chain mode, without busy indicator 74^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 75 76.. code-block:: 77 78 +-------------+ 79 +-------------------------+--------------------| CS | 80 v v | | 81 +--------------------+ +--------------------+ | HOST | 82 | CNV | | CNV | | | 83 +--->| SDI AD7944 SDO |--->| SDI AD7944 SDO |-------->| SDI | 84 | | SCK | | SCK | | | 85 GND +--------------------+ +--------------------+ | | 86 ^ ^ | | 87 +-------------------------+--------------------| SCLK | 88 +-------------+ 89 90To select this mode in the device tree, set the ``adi,spi-mode`` property to 91``"chain"``, add the ``spi-cs-high`` flag, add the ``#daisy-chained-devices`` 92property, and omit the ``cnv-gpios`` property. 93 94Reference voltage 95----------------- 96 97All 3 possible reference voltage sources are supported: 98 99- Internal reference 100- External 1.2V reference and internal buffer 101- External reference 102 103The source is determined by the device tree. If ``ref-supply`` is present, then 104the external reference is used. If ``refin-supply`` is present, then the internal 105buffer is used. If neither is present, then the internal reference is used. 106 107Unimplemented features 108---------------------- 109 110- ``BUSY`` indication 111 112 113Device attributes 114================= 115 116There are two types of ADCs in this family, pseudo-differential and fully 117differential. The channel name is different depending on the type of ADC. 118 119Pseudo-differential ADCs 120------------------------ 121 122AD7944 and AD7985 are pseudo-differential ADCs and have the following attributes: 123 124+---------------------------------------+--------------------------------------------------------------+ 125| Attribute | Description | 126+=======================================+==============================================================+ 127| ``in_voltage0_raw`` | Raw ADC voltage value (*IN+* referenced to ground sense). | 128+---------------------------------------+--------------------------------------------------------------+ 129| ``in_voltage0_scale`` | Scale factor to convert raw value to mV. | 130+---------------------------------------+--------------------------------------------------------------+ 131 132In "chain" mode, additional chips will appear as additional voltage input 133channels, e.g. ``in_voltage1_raw``. 134 135Fully-differential ADCs 136----------------------- 137 138AD7986 is a fully-differential ADC and has the following attributes: 139 140+---------------------------------------+--------------------------------------------------------------+ 141| Attribute | Description | 142+=======================================+==============================================================+ 143| ``in_voltage0-voltage1_raw`` | Raw ADC voltage value (*IN+* - *IN-*). | 144+---------------------------------------+--------------------------------------------------------------+ 145| ``in_voltage0-voltage1_scale`` | Scale factor to convert raw value to mV. | 146+---------------------------------------+--------------------------------------------------------------+ 147 148In "chain" mode, additional chips will appear as additional voltage input 149channels, e.g. ``in_voltage2-voltage3_raw``. 150 151SPI offload support 152=================== 153 154To be able to achieve the maximum sample rate, the driver can be used with the 155`AXI SPI Engine`_ to provide SPI offload support. 156 157.. _AXI SPI Engine: http://analogdevicesinc.github.io/hdl/projects/pulsar_adc/index.html 158 159When SPI offload is being used, some attributes will be different. 160 161* ``trigger`` directory is removed. 162* ``in_voltage0_sampling_frequency`` attribute is added for setting the sample 163 rate. 164* ``in_voltage0_sampling_frequency_available`` attribute is added for querying 165 the max sample rate. 166* ``timestamp`` channel is removed. 167* Buffer data format may be different compared to when offload is not used, 168 e.g. the ``in_voltage0_type`` attribute. 169 170If the ``turbo-gpios`` property is present in the device tree, the driver will 171turn on TURBO during buffered reads and turn it off otherwise. 172 173Device buffers 174============== 175 176This driver supports IIO triggered buffers. 177 178See :doc:`iio_devbuf` for more information. 179