David Lechner | 18b5145 | 2024-03-22 16:52:14 -0500 | [diff] [blame] | 1 | .. SPDX-License-Identifier: GPL-2.0-only |
| 2 | |
| 3 | ============= |
| 4 | AD7944 driver |
| 5 | ============= |
| 6 | |
| 7 | ADC driver for Analog Devices Inc. AD7944 and similar devices. The module name |
| 8 | is ``ad7944``. |
| 9 | |
| 10 | |
| 11 | Supported devices |
| 12 | ================= |
| 13 | |
| 14 | The 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 | |
| 21 | Supported features |
| 22 | ================== |
| 23 | |
| 24 | SPI wiring modes |
| 25 | ---------------- |
| 26 | |
David Lechner | 633e301 | 2024-04-25 09:10:00 -0500 | [diff] [blame] | 27 | The driver currently supports three of the many possible SPI wiring configurations. |
David Lechner | 18b5145 | 2024-03-22 16:52:14 -0500 | [diff] [blame] | 28 | |
| 29 | CS 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 | |
| 46 | To select this mode in the device tree, set the ``adi,spi-mode`` property to |
| 47 | ``"single"`` and omit the ``cnv-gpios`` property. |
| 48 | |
| 49 | CS 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 | |
| 68 | To select this mode in the device tree, omit the ``adi,spi-mode`` property and |
| 69 | provide the ``cnv-gpios`` property. |
| 70 | |
David Lechner | 633e301 | 2024-04-25 09:10:00 -0500 | [diff] [blame] | 71 | Chain 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 | |
| 88 | To 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`` |
| 90 | property, and omit the ``cnv-gpios`` property. |
| 91 | |
David Lechner | 18b5145 | 2024-03-22 16:52:14 -0500 | [diff] [blame] | 92 | Reference voltage |
| 93 | ----------------- |
| 94 | |
| 95 | All 3 possible reference voltage sources are supported: |
| 96 | |
| 97 | - Internal reference |
| 98 | - External 1.2V reference and internal buffer |
| 99 | - External reference |
| 100 | |
| 101 | The source is determined by the device tree. If ``ref-supply`` is present, then |
| 102 | the external reference is used. If ``refin-supply`` is present, then the internal |
| 103 | buffer is used. If neither is present, then the internal reference is used. |
| 104 | |
| 105 | Unimplemented features |
| 106 | ---------------------- |
| 107 | |
| 108 | - ``BUSY`` indication |
| 109 | - ``TURBO`` mode |
David Lechner | 18b5145 | 2024-03-22 16:52:14 -0500 | [diff] [blame] | 110 | |
| 111 | |
| 112 | Device attributes |
| 113 | ================= |
| 114 | |
| 115 | There are two types of ADCs in this family, pseudo-differential and fully |
| 116 | differential. The channel name is different depending on the type of ADC. |
| 117 | |
| 118 | Pseudo-differential ADCs |
| 119 | ------------------------ |
| 120 | |
| 121 | AD7944 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 Lechner | 633e301 | 2024-04-25 09:10:00 -0500 | [diff] [blame] | 131 | In "chain" mode, additional chips will appear as additional voltage input |
| 132 | channels, e.g. ``in_voltage1_raw``. |
| 133 | |
David Lechner | 18b5145 | 2024-03-22 16:52:14 -0500 | [diff] [blame] | 134 | Fully-differential ADCs |
| 135 | ----------------------- |
| 136 | |
| 137 | AD7986 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 Lechner | 633e301 | 2024-04-25 09:10:00 -0500 | [diff] [blame] | 147 | In "chain" mode, additional chips will appear as additional voltage input |
| 148 | channels, e.g. ``in_voltage2-voltage3_raw``. |
| 149 | |
David Lechner | 18b5145 | 2024-03-22 16:52:14 -0500 | [diff] [blame] | 150 | |
| 151 | Device buffers |
| 152 | ============== |
| 153 | |
| 154 | This driver supports IIO triggered buffers. |
| 155 | |
| 156 | See :doc:`iio_devbuf` for more information. |