linux_dsm_epyc7002/drivers/iio/adc
Geert Uytterhoeven 9fd229c478 iio: adc: max9611: Fix too short conversion time delay
As of commit b9ddd50911 ("iio: adc: max9611: Fix temperature
reading in probe"), max9611 initialization sometimes fails on the
Salvator-X(S) development board with:

    max9611 4-007f: Invalid value received from ADC 0x8000: aborting
    max9611: probe of 4-007f failed with error -5

The max9611 driver tests communications with the chip by reading the die
temperature during the probe function, which returns an invalid value.

According to the datasheet, the typical ADC conversion time is 2 ms, but
no minimum or maximum values are provided.  Maxim Technical Support
confirmed this was tested with temperature Ta=25 degreeC, and promised
to inform me if a maximum/minimum value is available (they didn't get
back to me, so I assume it is not).

However, the driver assumes a 1 ms conversion time.  Usually the
usleep_range() call returns after more than 1.8 ms, hence it succeeds.
When it returns earlier, the data register may be read too early, and
the previous measurement value will be returned.  After boot, this is
the temperature POR (power-on reset) value, causing the failure above.

Fix this by increasing the delay from 1000-2000 µs to 3000-3300 µs.

Note that this issue has always been present, but it was exposed by the
aformentioned commit.

Fixes: 69780a3bbc ("iio: adc: Add Maxim max9611 ADC driver")
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
2019-12-08 18:10:30 +00:00
..
ab8500-gpadc.c iio: adc: New driver for the AB8500 GPADC 2019-10-18 19:37:44 +01:00
ad799x.c iio: adc: ad799x: fix probe error handling 2019-10-09 19:11:29 +01:00
ad7124.c iio: adc: ad7124: Enable internal reference 2019-12-08 18:10:29 +00:00
ad7266.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 177 2019-05-30 11:29:19 -07:00
ad7291.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 149 2019-05-30 11:25:18 -07:00
ad7292.c iio: adc: Add driver support for AD7292 2019-11-10 17:09:36 +00:00
ad7298.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 177 2019-05-30 11:29:19 -07:00
ad7476.c iio: adc: ad7476: Add support for TI ADS786X ADCs 2019-02-09 18:46:02 +00:00
ad7606_par.c iio: Remove dev_err() usage after platform_get_irq() 2019-08-05 15:59:14 +01:00
ad7606_spi.c iio: adc: ad7606: Add support for AD7606B ADC 2019-08-25 16:11:00 +01:00
ad7606.c iio: adc: ad7606: fix reading unnecessary data from device 2019-12-08 18:07:40 +00:00
ad7606.h iio: adc: ad7606: Add support for AD7606B ADC 2019-08-25 16:11:00 +01:00
ad7766.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 149 2019-05-30 11:25:18 -07:00
ad7768-1.c iio: adc: ad7768-1: Add support for setting the sampling frequency 2019-02-09 18:46:01 +00:00
ad7780.c iio: adc: ad7780: Add parentheses to macros 2019-04-04 20:20:30 +01:00
ad7791.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 177 2019-05-30 11:29:19 -07:00
ad7793.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 177 2019-05-30 11:29:19 -07:00
ad7887.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 177 2019-05-30 11:29:19 -07:00
ad7923.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 177 2019-05-30 11:29:19 -07:00
ad7949.c iio: ad7949: fix channels mixups 2019-12-08 18:10:30 +00:00
ad_sigma_delta.c iio: adc: ad_sigma_delta: Export ad_sd_calibrate 2019-09-08 10:35:31 +01:00
aspeed_adc.c iio: adc: aspeed: use devm_platform_ioremap_resource 2019-11-09 12:12:54 +00:00
at91_adc.c iio: Remove dev_err() usage after platform_get_irq() 2019-08-05 15:59:14 +01:00
at91-sama5d2_adc.c iio: adc: at91-sama5d2: Replace 0 with NULL when clearing some pointers. 2019-10-18 19:48:45 +01:00
axp20x_adc.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
axp288_adc.c iio: adc: axp288: Override TS pin bias current for some models 2019-10-09 19:11:27 +01:00
bcm_iproc_adc.c iio: adc: bcm_iproc_adc: drop a stray semicolon 2019-11-09 12:16:31 +00:00
berlin2-adc.c iio:adc: drop assign iio_info.driver_module and iio_trigger_ops.owner 2017-08-22 21:22:25 +01:00
cc10001_adc.c iio: adc: cc10001: use devm_platform_ioremap_resource 2019-11-09 12:18:22 +00:00
cpcap-adc.c iio: adc: cpcap-adc: Fix missing IRQF_ONESHOT as only threaded handler. 2019-10-18 20:02:50 +01:00
da9150-gpadc.c iio: Remove dev_err() usage after platform_get_irq() 2019-08-05 15:59:14 +01:00
dln2-adc.c iio: dln2-adc: fix iio_triggered_buffer_postenable() position 2019-11-02 14:36:33 +00:00
envelope-detector.c iio: Remove dev_err() usage after platform_get_irq() 2019-08-05 15:59:14 +01:00
ep93xx_adc.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
exynos_adc.c iio: adc: exynos: use devm_platform_ioremap_resource 2019-10-18 19:59:59 +01:00
fsl-imx25-gcq.c iio: Remove dev_err() usage after platform_get_irq() 2019-08-05 15:59:14 +01:00
hi8435.c iio: hi8435: Drop hi8435_remove() by using devres for remaining elements 2019-08-11 09:59:38 +01:00
hx711.c iio: adc: hx711: optimize performance in read cycle 2019-10-22 12:58:07 +01:00
imx7d_adc.c iio: Remove dev_err() usage after platform_get_irq() 2019-08-05 15:59:14 +01:00
ina2xx-adc.c iio: adc: ina2xx: add in early -EINVAL returns in case statements 2018-10-21 15:43:11 +01:00
ingenic-adc.c iio: adc: ingenic: Use devm_platform_ioremap_resource 2019-11-09 12:19:54 +00:00
intel_mrfld_adc.c iio: adc: intel_mrfld_adc: Allocating too much data in probe() 2019-12-08 18:10:29 +00:00
Kconfig iio: adc: Add driver support for AD7292 2019-11-10 17:09:36 +00:00
lp8788_adc.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
lpc18xx_adc.c iio: adc: lpc18xx: use devm_platform_ioremap_resource 2019-11-09 12:21:24 +00:00
lpc32xx_adc.c iio: Remove dev_err() usage after platform_get_irq() 2019-08-05 15:59:14 +01:00
ltc2471.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 253 2019-06-05 17:30:27 +02:00
ltc2485.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
ltc2497.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 177 2019-05-30 11:29:19 -07:00
Makefile iio: adc: Add driver support for AD7292 2019-11-10 17:09:36 +00:00
max1027.c iio: adc: max1027: fix not unregistered iio trigger 2019-12-08 18:10:29 +00:00
max1118.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 330 2019-06-05 17:37:06 +02:00
max1363.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
max9611.c iio: adc: max9611: Fix too short conversion time delay 2019-12-08 18:10:30 +00:00
max11100.c iio: adc: max11100: convert to SPDX identifiers 2018-11-16 18:32:27 +00:00
mcp320x.c iio: adc: mcp320x: Tidy up endian types in type cast. 2019-10-18 19:48:50 +01:00
mcp3422.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
mcp3911.c iio: adc: add support for mcp3911 2018-08-19 20:02:48 +01:00
men_z188_adc.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 441 2019-06-05 17:37:17 +02:00
meson_saradc.c iio: adc: meson_saradc: use devm_platform_ioremap_resource 2019-10-18 20:01:34 +01:00
mt6577_auxadc.c iio: adc: mt6577_auxdac: use devm_platform_ioremap_resource 2019-11-09 12:14:34 +00:00
mxs-lradc-adc.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
nau7802.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 71 2019-05-24 17:36:47 +02:00
npcm_adc.c iio: adc: npcm: use devm_platform_ioremap_resource 2019-11-09 12:22:58 +00:00
palmas_gpadc.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 372 2019-06-05 17:37:10 +02:00
qcom-pm8xxx-xoadc.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
qcom-spmi-adc5.c iio: adc: qcom-spmi-adc5: Fix of-based module autoloading 2019-04-22 11:51:29 +01:00
qcom-spmi-iadc.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 284 2019-06-05 17:36:37 +02:00
qcom-spmi-vadc.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 284 2019-06-05 17:36:37 +02:00
qcom-vadc-common.c iio: adc: Add QCOM SPMI PMIC5 ADC driver 2018-08-18 18:11:43 +01:00
qcom-vadc-common.h iio: adc: Add QCOM SPMI PMIC5 ADC driver 2018-08-18 18:11:43 +01:00
rcar-gyroadc.c iio: adc: rcar-gyroadc: use devm_platform_ioremap_resource 2019-11-09 12:24:55 +00:00
rockchip_saradc.c iio: Remove dev_err() usage after platform_get_irq() 2019-08-05 15:59:14 +01:00
sc27xx_adc.c iio: adc: sc27xx: Use devm_hwspin_lock_request_specific() to simplify code 2019-10-13 08:53:34 +01:00
sd_adc_modulator.c IIO: ADC: add sigma delta modulator support 2018-01-10 10:30:09 +00:00
spear_adc.c iio: adc: spear_adc: Use devm_platform_ioremap_resource 2019-11-09 12:26:56 +00:00
stm32-adc-core.c iio: adc: stm32: allow to tune analog clock 2019-11-09 12:37:18 +00:00
stm32-adc-core.h iio: adc: stm32-adc: fix a race when using several adcs with dma and irq 2019-10-09 19:11:26 +01:00
stm32-adc.c Merge 5.4-rc7 into staging-next 2019-11-11 06:23:37 +01:00
stm32-dfsdm-adc.c iio: Remove dev_err() usage after platform_get_irq() 2019-08-05 15:59:14 +01:00
stm32-dfsdm-core.c iio: adc: stm32-dfsdm: missing error case during probe 2019-04-27 14:09:28 +01:00
stm32-dfsdm.h iio: adc: stm32-dfsdm: add fast mode support 2019-06-22 10:29:19 +01:00
stmpe-adc.c iio: adc: stmpe-adc: Cleanup endian type of local variable 2019-10-18 19:49:03 +01:00
stx104.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
sun4i-gpadc-iio.c iio: Remove dev_err() usage after platform_get_irq() 2019-08-05 15:59:14 +01:00
ti_am335x_adc.c iio: adc: ti_am335x_tscadc: Improve accuracy of measurement 2018-12-03 11:33:20 +00:00
ti-adc081c.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
ti-adc084s021.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
ti-adc108s102.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 288 2019-06-05 17:36:37 +02:00
ti-adc128s052.c iio: adc128s052: use SPDX-License-Identifier 2018-11-03 09:44:33 +00:00
ti-adc161s626.c iio: add SPDX identifier for various drivers 2018-02-18 11:55:19 +00:00
ti-adc0832.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 330 2019-06-05 17:37:06 +02:00
ti-adc12138.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 330 2019-06-05 17:37:06 +02:00
ti-ads124s08.c iio: adc: ads124: avoid buffer overflow 2019-04-07 13:01:36 +01:00
ti-ads1015.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 330 2019-06-05 17:37:06 +02:00
ti-ads7950.c iio: adc: ti-ads7950: add GPIO support 2019-04-04 20:19:53 +01:00
ti-ads8344.c iio: adc: Add driver for the TI ADS8344 A/DC chips 2019-04-22 11:34:13 +01:00
ti-ads8688.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
ti-tlc4541.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
twl4030-madc.c iio: adc: twl4030: Use false / true instead of 0 / 1 with booleans 2019-10-22 11:34:20 +01:00
twl6030-gpadc.c iio: Remove dev_err() usage after platform_get_irq() 2019-08-05 15:59:14 +01:00
vf610_adc.c iio: adc: vf610: use devm_platform_ioremap_resource 2019-11-09 12:28:21 +00:00
viperboard_adc.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
xilinx-xadc-core.c iio: adc: xilinx-xadc: use devm_platform_ioremap_resource 2019-10-18 20:05:58 +01:00
xilinx-xadc-events.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 177 2019-05-30 11:29:19 -07:00
xilinx-xadc.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 177 2019-05-30 11:29:19 -07:00