mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-28 16:56:26 +00:00
633e3015ca
Add documentation for chain mode support that was recently added to the AD7944 ADC driver. Signed-off-by: David Lechner <dlechner@baylibre.com> Link: https://lore.kernel.org/r/20240425-iio-ad7944-chain-mode-v1-2-9d9220ff21e1@baylibre.com Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
157 lines
6.2 KiB
ReStructuredText
157 lines
6.2 KiB
ReStructuredText
.. SPDX-License-Identifier: GPL-2.0-only
|
|
|
|
=============
|
|
AD7944 driver
|
|
=============
|
|
|
|
ADC driver for Analog Devices Inc. AD7944 and similar devices. The module name
|
|
is ``ad7944``.
|
|
|
|
|
|
Supported devices
|
|
=================
|
|
|
|
The following chips are supported by this driver:
|
|
|
|
* `AD7944 <https://www.analog.com/AD7944>`_
|
|
* `AD7985 <https://www.analog.com/AD7985>`_
|
|
* `AD7986 <https://www.analog.com/AD7986>`_
|
|
|
|
|
|
Supported features
|
|
==================
|
|
|
|
SPI wiring modes
|
|
----------------
|
|
|
|
The driver currently supports three of the many possible SPI wiring configurations.
|
|
|
|
CS mode, 3-wire, without busy indicator
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
.. code-block::
|
|
|
|
+-------------+
|
|
+--------------------| CS |
|
|
v | |
|
|
VIO +--------------------+ | HOST |
|
|
| | CNV | | |
|
|
+--->| SDI AD7944 SDO |-------->| SDI |
|
|
| SCK | | |
|
|
+--------------------+ | |
|
|
^ | |
|
|
+--------------------| SCLK |
|
|
+-------------+
|
|
|
|
To select this mode in the device tree, set the ``adi,spi-mode`` property to
|
|
``"single"`` and omit the ``cnv-gpios`` property.
|
|
|
|
CS mode, 4-wire, without busy indicator
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
.. code-block::
|
|
|
|
+-------------+
|
|
+-----------------------------------| CS |
|
|
| | |
|
|
| +--------------------| GPIO |
|
|
| v | |
|
|
| +--------------------+ | HOST |
|
|
| | CNV | | |
|
|
+--->| SDI AD7944 SDO |-------->| SDI |
|
|
| SCK | | |
|
|
+--------------------+ | |
|
|
^ | |
|
|
+--------------------| SCLK |
|
|
+-------------+
|
|
|
|
To select this mode in the device tree, omit the ``adi,spi-mode`` property and
|
|
provide the ``cnv-gpios`` property.
|
|
|
|
Chain mode, without busy indicator
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
.. code-block::
|
|
|
|
+-------------+
|
|
+-------------------------+--------------------| CS |
|
|
v v | |
|
|
+--------------------+ +--------------------+ | HOST |
|
|
| CNV | | CNV | | |
|
|
+--->| SDI AD7944 SDO |--->| SDI AD7944 SDO |-------->| SDI |
|
|
| | SCK | | SCK | | |
|
|
GND +--------------------+ +--------------------+ | |
|
|
^ ^ | |
|
|
+-------------------------+--------------------| SCLK |
|
|
+-------------+
|
|
|
|
To select this mode in the device tree, set the ``adi,spi-mode`` property to
|
|
``"chain"``, add the ``spi-cs-high`` flag, add the ``#daisy-chained-devices``
|
|
property, and omit the ``cnv-gpios`` property.
|
|
|
|
Reference voltage
|
|
-----------------
|
|
|
|
All 3 possible reference voltage sources are supported:
|
|
|
|
- Internal reference
|
|
- External 1.2V reference and internal buffer
|
|
- External reference
|
|
|
|
The source is determined by the device tree. If ``ref-supply`` is present, then
|
|
the external reference is used. If ``refin-supply`` is present, then the internal
|
|
buffer is used. If neither is present, then the internal reference is used.
|
|
|
|
Unimplemented features
|
|
----------------------
|
|
|
|
- ``BUSY`` indication
|
|
- ``TURBO`` mode
|
|
|
|
|
|
Device attributes
|
|
=================
|
|
|
|
There are two types of ADCs in this family, pseudo-differential and fully
|
|
differential. The channel name is different depending on the type of ADC.
|
|
|
|
Pseudo-differential ADCs
|
|
------------------------
|
|
|
|
AD7944 and AD7985 are pseudo-differential ADCs and have the following attributes:
|
|
|
|
+---------------------------------------+--------------------------------------------------------------+
|
|
| Attribute | Description |
|
|
+=======================================+==============================================================+
|
|
| ``in_voltage0_raw`` | Raw ADC voltage value (*IN+* referenced to ground sense). |
|
|
+---------------------------------------+--------------------------------------------------------------+
|
|
| ``in_voltage0_scale`` | Scale factor to convert raw value to mV. |
|
|
+---------------------------------------+--------------------------------------------------------------+
|
|
|
|
In "chain" mode, additional chips will appear as additional voltage input
|
|
channels, e.g. ``in_voltage1_raw``.
|
|
|
|
Fully-differential ADCs
|
|
-----------------------
|
|
|
|
AD7986 is a fully-differential ADC and has the following attributes:
|
|
|
|
+---------------------------------------+--------------------------------------------------------------+
|
|
| Attribute | Description |
|
|
+=======================================+==============================================================+
|
|
| ``in_voltage0-voltage1_raw`` | Raw ADC voltage value (*IN+* - *IN-*). |
|
|
+---------------------------------------+--------------------------------------------------------------+
|
|
| ``in_voltage0-voltage1_scale`` | Scale factor to convert raw value to mV. |
|
|
+---------------------------------------+--------------------------------------------------------------+
|
|
|
|
In "chain" mode, additional chips will appear as additional voltage input
|
|
channels, e.g. ``in_voltage2-voltage3_raw``.
|
|
|
|
|
|
Device buffers
|
|
==============
|
|
|
|
This driver supports IIO triggered buffers.
|
|
|
|
See :doc:`iio_devbuf` for more information.
|