On Thu, Mar 6, 2025 at 3:04 PM Jorge Marques <jorge.marques@xxxxxxxxxx> wrote: > > This adds a new page to document how to use the ad4052 ADC driver. > > Signed-off-by: Jorge Marques <jorge.marques@xxxxxxxxxx> > --- > Documentation/iio/ad4052.rst | 93 ++++++++++++++++++++++++++++++++++++++++++++ > MAINTAINERS | 1 + > 2 files changed, 94 insertions(+) > > diff --git a/Documentation/iio/ad4052.rst b/Documentation/iio/ad4052.rst > new file mode 100644 > index 0000000000000000000000000000000000000000..cf0cbd60d0a48ea52f74ea02fde659fcdba61aa1 > --- /dev/null > +++ b/Documentation/iio/ad4052.rst > @@ -0,0 +1,93 @@ > +.. SPDX-License-Identifier: GPL-2.0-only > + > +============= > +AD4052 driver > +============= > + > +ADC driver for Analog Devices Inc. AD4052 and similar devices. > +The module name is ``ad4052``. > + > +Supported devices > +================= > + > +The following chips are supported by this driver: > + > +* `AD4050 <https://www.analog.com/AD4050>`_ > +* `AD4052 <https://www.analog.com/AD4052>`_ > +* `AD4056 <https://www.analog.com/AD4056>`_ > +* `AD4058 <https://www.analog.com/AD4058>`_ > + > +Wiring modes > +============ > + > +The ADC uses SPI 4-wire mode, and contain two programmable GPIOs and > +a CNV pin. > + > +The CNV pin is exposed as the ``cnv-gpios`` and triggers a ADC conversion. > +GP1 is ADC conversion ready signal and GP0 Threshold event interrupt, both > +exposed as interrupts. > + > +Omit ``cnv-gpios`` and tie CNV and CS together to use the rising edge > +of the CS as the CNV signal. > + > +Device attributes > +================= > + > +The ADC contain only one channels, and the following attributes: > + > +.. list-table:: Driver attributes > + :header-rows: 1 > + > + * - Attribute > + - Description > + * - ``in_voltage0_raw`` > + - Raw ADC voltage value > + * - ``in_voltage0_oversampling_ratio`` > + - Enable the device's burst averaging mode to over sample using > + the internal sample rate. > + * - ``in_voltage0_oversampling_ratio_available`` > + - List of available oversampling values. Value 0 disable the burst > + averaging mode. > + * - ``sample_rate`` > + - Device internal sample rate used in the burst averaging mode. > + * - ``sample_rate_available`` > + - List of available sample rates. Why not using the standard sampling_frequency[_available] attributes? > + > +Threshold events > +================ > + > +The ADC supports a monitoring mode to raise threshold events. > +The driver supports a single interrupt for both rising and falling > +readings. > + > +During monitor mode, the device is busy since other transactions > +require to put the device in configuration mode first. This isn't so clear to me. Is this saying that events do not work while doing a buffered read? Do you need to do need to read the in_voltage0_raw input to trigger an event? > + > +Low-power mode > +============== > + > +The device enters low-power mode on idle to save power. > +Enabling an event puts the device out of the low-power since the ADC > +autonomously samples to assert the event condition. > + > +SPI offload support > +=================== > + > +To be able to achieve the maximum sample rate, the driver can be used with the > +`AXI SPI Engine`_ to provide SPI offload support. > + > +.. _AXI SPI Engine: http://analogdevicesinc.github.io/hdl/projects/ad4052_ardz/index.html This diagram show a PWM connected to the CNV pin on the ADC, but I didn't see a pwms property in the DT bindings to describe this. > + > +When SPI offload is being used, additional attributes are present: > + > +.. list-table:: Additional attributes > + :header-rows: 1 > + > + * - Attribute > + - Description > + * - ``in_voltage0_sampling_frequency`` > + - Set the sampling frequency. > + * - ``in_voltage0_sampling_frequency_available`` > + - Get the sampling frequency range. > + > +The scan type is different when the buffer with offload support is enabled. > diff --git a/MAINTAINERS b/MAINTAINERS > index fef8adaee888d59e1aa3b3592dda5a8bea0b7677..312b2cf94b8f06298b1cbe5975ee32e2cf9a74d8 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -1322,6 +1322,7 @@ M: Jorge Marques <jorge.marques@xxxxxxxxxx> > S: Supported > W: https://ez.analog.com/linux-software-drivers > F: Documentation/devicetree/bindings/iio/adc/adi,ad4052.yaml > +F: Documentation/iio/ad4052.rst > > ANALOG DEVICES INC AD4130 DRIVER > M: Cosmin Tanislav <cosmin.tanislav@xxxxxxxxxx> > > -- > 2.48.1 > I didn't have time to read the full datasheet or look at the driver code yet, but can do that next week.