linux/drivers/iio/adc
Hans de Goede 3091141d78 iio: adc: axp288: Fix the GPADC pin reading often wrongly returning 0
I noticed in its DSDT that one of my tablets actually is using the GPADC
pin for temperature monitoring.

The whole axp288_adc_set_ts() function is a bit weird, in the past it was
removed because it seems to make no sense, then this was reverted because
of regressions.

So I decided to test the special GPADC pin handling on this tablet.
Conclusion: not only is axp288_adc_set_ts() necessary, we need to sleep a
bit after making the AXP288_ADC_TS_PIN_CTRL changes before sampling the
GPADC, otherwise it will often (about 80% of the time) read 0 instead of
its actual value.

It seems that there is only 1 bias current source and to be able to use it
for the GPIO0 pin in GPADC mode it must be temporarily turned off for the
TS pin, but the datasheet does not mention this.

This commit adds a sleep after disabling the TS pin bias current,
fixing the GPADC more often then not wrongly returning 0.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
2017-07-09 21:16:28 +01:00
..
Kconfig Staging/IIO patches for 4.12-rc1 2017-05-05 18:16:23 -07:00
Makefile Staging/IIO patches for 4.12-rc1 2017-05-05 18:16:23 -07:00
ad799x.c iio: adc: ad799x: constify attribute_group structures 2017-03-29 22:12:41 +01:00
ad7266.c iio: devm_regulator_get_optional never returns NULL 2016-09-05 21:09:38 +01:00
ad7291.c iio: adc: add missing of_node references to iio_dev 2016-07-03 13:40:08 +01:00
ad7298.c iio: adc: ad7298: use iio helper function to guarantee direct mode 2016-07-24 19:58:42 +01:00
ad7476.c iio: adc: add missing of_node references to iio_dev 2016-07-03 13:40:08 +01:00
ad7766.c iio:adc: ad7766: testing the wrong variable in probe 2016-11-12 14:35:21 +00:00
ad7791.c iio: adc: add missing of_node references to iio_dev 2016-07-03 13:40:08 +01:00
ad7793.c iio: adc: ad7793: use iio helper function to guarantee direct mode 2016-07-24 19:58:41 +01:00
ad7887.c iio: adc: add missing of_node references to iio_dev 2016-07-03 13:40:08 +01:00
ad7923.c iio: adc: add missing of_node references to iio_dev 2016-07-03 13:40:08 +01:00
ad_sigma_delta.c
aspeed_adc.c iio: Aspeed ADC 2017-04-01 11:53:20 +01:00
at91-sama5d2_adc.c Merge 4.6-rc7 into staging-next 2016-05-09 13:20:04 +02:00
at91_adc.c iio: adc: at91: add suspend and resume callback 2016-11-05 16:33:00 +00:00
axp20x_adc.c iio: adc: add support for X-Powers AXP20X and AXP22X PMICs ADCs 2017-04-27 09:25:07 +01:00
axp288_adc.c iio: adc: axp288: Fix the GPADC pin reading often wrongly returning 0 2017-07-09 21:16:28 +01:00
bcm_iproc_adc.c iio: adc: bcm_iproc_adc: swap primary and secondary isr handler's 2017-05-21 13:01:17 +01:00
berlin2-adc.c iio:adc:berlin2-adc: coding style cleanup 2015-08-12 22:13:57 +01:00
cc10001_adc.c iio:core: timestamping clock selection support 2016-06-30 19:41:38 +01:00
cpcap-adc.c iio: adc: cpcap: Add minimal support for CPCAP PMIC ADC 2017-03-30 19:25:23 +01:00
da9150-gpadc.c iio: Add support for DA9150 GPADC 2015-02-25 21:05:26 +01:00
envelope-detector.c iio: envelope-detector: ADC driver based on a DAC and a comparator 2016-11-13 13:07:17 +00:00
exynos_adc.c iio: adc: Remove unnecessary cast on void pointer 2017-04-02 09:46:25 +01:00
fsl-imx25-gcq.c iio: adc: imx25-gcq: Fix module autoload 2017-01-10 19:54:56 +00:00
hi8435.c iio: adc: add missing of_node references to iio_dev 2016-07-03 13:40:08 +01:00
hx711.c iio: adc: hx711: constify attribute_group structures 2017-04-01 11:39:04 +01:00
imx7d_adc.c iio: adc: Remove unnecessary cast on void pointer 2017-04-02 09:46:25 +01:00
ina2xx-adc.c iio: adc: ina2xx: Add OF device ID table 2017-03-19 10:47:53 +00:00
lp8788_adc.c
lpc18xx_adc.c iio: adc: add NXP LPC18xx ADC driver 2016-03-12 18:11:48 +00:00
lpc32xx_adc.c staging:iio:adc:lpc32xx Move out of staging. 2017-02-11 11:19:25 +00:00
ltc2485.c iio: adc: ltc2485: add support for Linear Technology LTC2485 ADC 2016-08-29 16:57:40 +01:00
ltc2497.c iio:adc: Driver for Linear Technology LTC2497 ADC 2017-04-02 10:56:59 +01:00
max1027.c iio: adc: Remove unnecessary cast on void pointer 2017-04-02 09:46:25 +01:00
max1118.c iio: adc: add max1117/max1118/max1119 ADC driver 2017-04-14 15:09:06 +01:00
max1363.c iio: adc: max1363: constify attribute_group structures 2017-03-29 22:10:58 +01:00
max9611.c iio: adc: max9611: Fix attribute measure unit 2017-05-14 16:38:55 +01:00
max11100.c iio: adc: replace comma with a semicolon 2017-03-30 19:11:27 +01:00
mcp320x.c iio: adc: add missing of_node references to iio_dev 2016-07-03 13:40:08 +01:00
mcp3422.c iio: adc: add missing of_node references to iio_dev 2016-07-03 13:40:08 +01:00
men_z188_adc.c iio: adc: men_z188_adc: constify iio_info structures 2016-09-18 11:58:31 +01:00
meson_saradc.c iio: adc: meson-saradc: fix potential crash in meson_sar_adc_clear_fifo 2017-06-11 15:00:13 +01:00
mt6577_auxadc.c iio: adc: mt2701: Add Mediatek auxadc driver for mt2701. 2016-08-21 19:54:30 +01:00
mxs-lradc-adc.c iio: adc: mxs-lradc: Fix return value check in mxs_lradc_adc_probe() 2017-06-03 10:52:31 +01:00
nau7802.c iio: adc: Use complete() instead of complete_all() 2016-08-15 18:01:27 +01:00
palmas_gpadc.c iio: adc: palmas_gpadc: retrieve a valid iio_dev in suspend/resume 2017-01-21 14:26:03 +00:00
qcom-pm8xxx-xoadc.c iio: adc: add a driver for Qualcomm PM8xxx HK/XOADC 2017-04-08 17:42:26 +01:00
qcom-spmi-iadc.c iio: iadc: wait_for_completion_timeout time in jiffies 2015-01-10 11:43:26 +00:00
qcom-spmi-vadc.c iio: adc: break out common code from SPMI VADC 2017-04-08 17:40:49 +01:00
qcom-vadc-common.c iio: adc: break out common code from SPMI VADC 2017-04-08 17:40:49 +01:00
qcom-vadc-common.h iio: adc: break out common code from SPMI VADC 2017-04-08 17:40:49 +01:00
rcar-gyroadc.c iio: adc: handle unknow of_device_id data 2017-02-05 09:30:15 +00:00
rockchip_saradc.c iio: adc: Remove unnecessary cast on void pointer 2017-04-02 09:46:25 +01:00
spear_adc.c staging:iio:adc:spear Move out of staging. 2017-02-11 11:17:33 +00:00
stm32-adc-core.c iio: adc: stm32: add optional dma support 2017-01-29 12:49:17 +00:00
stm32-adc-core.h iio: adc: stm32: add optional dma support 2017-01-29 12:49:17 +00:00
stm32-adc.c iio: adc: stm32: add dt option to set resolution 2017-04-03 20:46:01 +01:00
stx104.c Annotation of module parameters that specify device settings 2017-05-10 19:13:03 -07:00
sun4i-gpadc-iio.c iio: adc: sun4i-gpadc-iio: fix unbalanced irq enable/disable 2017-07-04 20:28:34 +01:00
ti-adc081c.c iio: adc: add missing of_node references to iio_dev 2016-07-03 13:40:08 +01:00
ti-adc128s052.c iio: adc: add missing of_node references to iio_dev 2016-07-03 13:40:08 +01:00
ti-adc161s626.c iio: adc: ti-adc161s626: add regulator support 2016-09-27 20:33:03 +01:00
ti-adc0832.c iio: ti-adc0832: add triggered buffer support 2016-10-23 19:34:25 +01:00
ti-adc12138.c iio: adc: add ADC12130/ADC12132/ADC12138 ADC driver 2016-08-31 18:10:36 +01:00
ti-ads1015.c iio: adc: ti-ads1015: Add OF device ID table 2017-03-19 10:56:58 +00:00
ti-ads7950.c iio: adc: ti-ads7950: Change regulator matching string to "vref" 2017-01-15 13:56:08 +00:00
ti-ads8688.c iio: devm_regulator_get_optional never returns NULL 2016-09-05 21:09:38 +01:00
ti-tlc4541.c iio: adc: tlc4541: add support for TI tlc4541 adc 2017-01-22 13:21:28 +00:00
ti_am335x_adc.c iio: adc: ti_am335x_adc: allocating too much in probe 2017-05-14 16:21:13 +01:00
twl4030-madc.c iio: adc: twl4030: Fix ADC[3:6] readings 2015-10-03 10:27:18 +01:00
twl6030-gpadc.c iio: adc: twl6030-gpadc: Fix module autoload for OF platform driver 2015-09-23 20:23:24 +01:00
vf610_adc.c iio: adc: vf610_adc: Fix VALT selection value for REFSEL bits 2017-07-06 19:39:28 +01:00
viperboard_adc.c
xilinx-xadc-core.c iio: adc: xilinx: Fix error handling 2017-02-25 16:39:32 +00:00
xilinx-xadc-events.c iio:core: timestamping clock selection support 2016-06-30 19:41:38 +01:00
xilinx-xadc.h iio: adc: xilinx-xadc: Push interrupts into hardirq context 2015-08-16 10:51:27 +01:00