iio: adc: add support for Allwinner SoCs ADC
authorQuentin Schulz <quentin.schulz@free-electrons.com>
Tue, 13 Dec 2016 14:33:32 +0000 (15:33 +0100)
committerJonathan Cameron <jic23@kernel.org>
Wed, 8 Mar 2017 20:27:25 +0000 (20:27 +0000)
commitd1caa99055382c91b57244343020ea37c4fa4d09
tree1a6fb4b789e201c0bb1368e29076121c2682ec49
parente0033faac39b814d23e11249d32b4e22daeeff33
iio: adc: add support for Allwinner SoCs ADC

The Allwinner SoCs all have an ADC that can also act as a touchscreen
controller and a thermal sensor. This patch adds the ADC driver which is
based on the MFD for the same SoCs ADC.

This also registers the thermal adc channel in the iio map array so
iio_hwmon could use it without modifying the Device Tree. This registers
the driver in the thermal framework.

The thermal sensor requires the IP to be in touchscreen mode to return
correct values. Therefore, if the user is continuously reading the ADC
channel(s), the thermal framework in which the thermal sensor is
registered will switch the IP in touchscreen mode to get a temperature
value and requires a delay of 100ms (because of the mode switching),
then the ADC will switch back to ADC mode and requires also a delay of
100ms. If the ADC readings are critical to user and the SoC temperature
is not, this driver is capable of not registering the thermal sensor in
the thermal framework and thus, "quicken" the ADC readings.

This driver probes on three different platform_device_id to take into
account slight differences (registers bit and temperature computation)
between Allwinner SoCs ADCs.

Signed-off-by: Quentin Schulz <quentin.schulz@free-electrons.com>
Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Acked-by: Jonathan Cameron <jic23@kernel.org>
Acked-for-MFD-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/iio/adc/Kconfig
drivers/iio/adc/Makefile
drivers/iio/adc/sun4i-gpadc-iio.c [new file with mode: 0644]
include/linux/mfd/sun4i-gpadc.h