mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 12:11:40 +00:00
Documentation: iio: Document ad4695 driver
The Analog Devices Inc. AD4695 (and similar chips) are complex ADCs that will benefit from a detailed driver documentation. This documents the current features supported by the driver. Signed-off-by: David Lechner <dlechner@baylibre.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
parent
0277f93e84
commit
316c957fee
155
Documentation/iio/ad4695.rst
Normal file
155
Documentation/iio/ad4695.rst
Normal file
@ -0,0 +1,155 @@
|
|||||||
|
.. SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
|
||||||
|
=============
|
||||||
|
AD4695 driver
|
||||||
|
=============
|
||||||
|
|
||||||
|
ADC driver for Analog Devices Inc. AD4695 and similar devices. The module name
|
||||||
|
is ``ad4695``.
|
||||||
|
|
||||||
|
|
||||||
|
Supported devices
|
||||||
|
=================
|
||||||
|
|
||||||
|
The following chips are supported by this driver:
|
||||||
|
|
||||||
|
* `AD4695 <https://www.analog.com/AD4695>`_
|
||||||
|
* `AD4696 <https://www.analog.com/AD4696>`_
|
||||||
|
* `AD4697 <https://www.analog.com/AD4697>`_
|
||||||
|
* `AD4698 <https://www.analog.com/AD4698>`_
|
||||||
|
|
||||||
|
|
||||||
|
Supported features
|
||||||
|
==================
|
||||||
|
|
||||||
|
SPI wiring modes
|
||||||
|
----------------
|
||||||
|
|
||||||
|
The driver currently supports the following SPI wiring configuration:
|
||||||
|
|
||||||
|
4-wire mode
|
||||||
|
^^^^^^^^^^^
|
||||||
|
|
||||||
|
In this mode, CNV and CS are tied together and there is a single SDO line.
|
||||||
|
|
||||||
|
.. code-block::
|
||||||
|
|
||||||
|
+-------------+ +-------------+
|
||||||
|
| CS |<-+------| CS |
|
||||||
|
| CNV |<-+ | |
|
||||||
|
| ADC | | HOST |
|
||||||
|
| | | |
|
||||||
|
| SDI |<--------| SDO |
|
||||||
|
| SDO |-------->| SDI |
|
||||||
|
| SCLK |<--------| SCLK |
|
||||||
|
+-------------+ +-------------+
|
||||||
|
|
||||||
|
To use this mode, in the device tree, omit the ``cnv-gpios`` and
|
||||||
|
``spi-rx-bus-width`` properties.
|
||||||
|
|
||||||
|
Channel configuration
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
Since the chip supports multiple ways to configure each channel, this must be
|
||||||
|
described in the device tree based on what is actually wired up to the inputs.
|
||||||
|
|
||||||
|
There are three typical configurations:
|
||||||
|
|
||||||
|
An ``INx`` pin is used as the positive input with the ``REFGND``, ``COM`` or
|
||||||
|
the next ``INx`` pin as the negative input.
|
||||||
|
|
||||||
|
Pairing with REFGND
|
||||||
|
^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Each ``INx`` pin can be used as a pseudo-differential input in conjunction with
|
||||||
|
the ``REFGND`` pin. The device tree will look like this:
|
||||||
|
|
||||||
|
.. code-block::
|
||||||
|
|
||||||
|
channel@0 {
|
||||||
|
reg = <0>; /* IN0 */
|
||||||
|
};
|
||||||
|
|
||||||
|
If no other channel properties are needed (e.g. ``adi,no-high-z``), the channel
|
||||||
|
node can be omitted entirely.
|
||||||
|
|
||||||
|
This will appear on the IIO bus as the ``voltage0`` channel. The processed value
|
||||||
|
(*raw × scale*) will be the voltage present on the ``IN0`` pin relative to
|
||||||
|
``REFGND``. (Offset is always 0 when pairing with ``REFGND``.)
|
||||||
|
|
||||||
|
Pairing with COM
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Each ``INx`` pin can be used as a pseudo-differential input in conjunction with
|
||||||
|
the ``COM`` pin. The device tree will look like this:
|
||||||
|
|
||||||
|
.. code-block::
|
||||||
|
|
||||||
|
com-supply = <&vref_div_2>;
|
||||||
|
|
||||||
|
channel@1 {
|
||||||
|
reg = <1>; /* IN1 */
|
||||||
|
common-mode-channel = <AD4695_COMMON_MODE_COM>;
|
||||||
|
bipolar;
|
||||||
|
};
|
||||||
|
|
||||||
|
This will appear on the IIO bus as the ``voltage1`` channel. The processed value
|
||||||
|
(*(raw + offset) × scale*) will be the voltage measured on the ``IN1`` pin
|
||||||
|
relative to ``REFGND``. (The offset is determined by the ``com-supply`` voltage.)
|
||||||
|
|
||||||
|
The macro comes from:
|
||||||
|
|
||||||
|
.. code-block::
|
||||||
|
|
||||||
|
#include <dt-bindings/iio/adi,ad4695.h>
|
||||||
|
|
||||||
|
Pairing two INx pins
|
||||||
|
^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
An even-numbered ``INx`` pin and the following odd-numbered ``INx`` pin can be
|
||||||
|
used as a pseudo-differential input. The device tree for using ``IN2`` as the
|
||||||
|
positive input and ``IN3`` as the negative input will look like this:
|
||||||
|
|
||||||
|
.. code-block::
|
||||||
|
|
||||||
|
in3-supply = <&vref_div_2>;
|
||||||
|
|
||||||
|
channel@2 {
|
||||||
|
reg = <2>; /* IN2 */
|
||||||
|
common-mode-channel = <3>; /* IN3 */
|
||||||
|
bipolar;
|
||||||
|
};
|
||||||
|
|
||||||
|
This will appear on the IIO bus as the ``voltage2`` channel. The processed value
|
||||||
|
(*(raw + offset) × scale*) will be the voltage measured on the ``IN1`` pin
|
||||||
|
relative to ``REFGND``. (Offset is determined by the ``in3-supply`` voltage.)
|
||||||
|
|
||||||
|
VCC supply
|
||||||
|
----------
|
||||||
|
|
||||||
|
The chip supports being powered by an external LDO via the ``VCC`` input or an
|
||||||
|
internal LDO via the ``LDO_IN`` input. The driver looks at the device tree to
|
||||||
|
determine which is being used. If ``ldo-supply`` is present, then the internal
|
||||||
|
LDO is used. If ``vcc-supply`` is present, then the external LDO is used and
|
||||||
|
the internal LDO is disabled.
|
||||||
|
|
||||||
|
Reference voltage
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
The chip supports an external reference voltage via the ``REF`` input or an
|
||||||
|
internal buffered reference voltage via the ``REFIN`` input. The driver looks
|
||||||
|
at the device tree to determine which is being used. If ``ref-supply`` is
|
||||||
|
present, then the external reference voltage is used and the internal buffer is
|
||||||
|
disabled. If ``refin-supply`` is present, then the internal buffered reference
|
||||||
|
voltage is used.
|
||||||
|
|
||||||
|
Unimplemented features
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
- Additional wiring modes
|
||||||
|
- Buffered reads
|
||||||
|
- Threshold events
|
||||||
|
- Oversampling
|
||||||
|
- Gain/offset calibration
|
||||||
|
- GPIO support
|
||||||
|
- CRC support
|
@ -18,6 +18,7 @@ Industrial I/O Kernel Drivers
|
|||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
|
|
||||||
|
ad4695
|
||||||
ad7380
|
ad7380
|
||||||
ad7944
|
ad7944
|
||||||
adis16475
|
adis16475
|
||||||
|
@ -1231,6 +1231,7 @@ L: linux-iio@vger.kernel.org
|
|||||||
S: Supported
|
S: Supported
|
||||||
W: https://ez.analog.com/linux-software-drivers
|
W: https://ez.analog.com/linux-software-drivers
|
||||||
F: Documentation/devicetree/bindings/iio/adc/adi,ad4695.yaml
|
F: Documentation/devicetree/bindings/iio/adc/adi,ad4695.yaml
|
||||||
|
F: Documentation/iio/ad4695.rst
|
||||||
F: drivers/iio/adc/ad4695.c
|
F: drivers/iio/adc/ad4695.c
|
||||||
F: include/dt-bindings/iio/adi,ad4695.h
|
F: include/dt-bindings/iio/adi,ad4695.h
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user