linux_dsm_epyc7002/drivers/iio/adc
Lars-Peter Clausen 3b7f9dbb82 iio: xilinx-xadc: Make sure not exceed maximum samplerate
The XADC supports a samplerate of up to 1MSPS. Unfortunately the hardware
does not have a FIFO, which means it generates an interrupt for each
conversion sequence. At one 1MSPS this creates an interrupt storm that
causes the system to soft-lock.

For this reason the driver limits the maximum samplerate to 150kSPS.
Currently this check is only done when setting a new samplerate. But it is
also possible that the initial samplerate configured in the FPGA bitstream
exceeds the limit.

In this case when starting to capture data without first changing the
samplerate the system can overload.

To prevent this check the currently configured samplerate in the probe
function and reduce it to the maximum if necessary.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Fixes: bdc8cda1d0 ("iio:adc: Add Xilinx XADC driver")
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
2020-04-19 17:50:02 +01: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: add pm_ops to disable the device completely 2019-12-15 11:42:14 +00:00
ad7091r5.c iio: adc: ad7091r5: Add scale and external VREF support 2019-11-16 17:06:10 +00:00
ad7091r-base.c iio: adc: ad7091r5: Add scale and external VREF support 2019-11-16 17:06:10 +00:00
ad7091r-base.h iio: adc: ad7091r5: Add scale and external VREF support 2019-11-16 17:06:10 +00:00
ad7124.c iio: adc: ad7124: Add direct reg access 2020-03-08 17:28:31 +00:00
ad7192.c staging: iio: adc: ad7192: Re-indent enum labels 2020-03-23 11:43:42 +01:00
ad7266.c iio: ad7266: Convert to use GPIO descriptors 2019-12-15 11:42:16 +00:00
ad7291.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 149 2019-05-30 11:25:18 -07:00
ad7292.c iio: adc: ad9292: Use new structure for SPI transfer delays 2020-03-08 17:28:44 +00:00
ad7298.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 177 2019-05-30 11:29:19 -07:00
ad7476.c
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
ad7780.c iio: adc: ad-sigma-delta: Allow custom IRQ flags 2020-01-18 11:43:16 +00:00
ad7791.c iio: adc: ad-sigma-delta: Allow custom IRQ flags 2020-01-18 11:43:16 +00:00
ad7793.c iio:ad7797: Use correct attribute_group 2020-03-28 16:34:58 +00:00
ad7887.c iio: adc: ad7887: Cleanup channel assignment 2019-12-15 11:42:13 +00:00
ad7923.c iio: adc: ad7923: Add support for the ad7908/ad7918/ad7928 2019-12-29 15:20:03 +00: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: Allow custom IRQ flags 2020-01-18 11:43:16 +00: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_adc: fix differential channels in triggered mode 2020-02-02 11:00:23 +00: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
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: Silence warning about regulators during deferred probe 2020-03-08 17:28:44 +00: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
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 staging: iio: adc: ad7192: move out of staging 2020-03-08 17:28:33 +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
ltc2496.c iio: adc: new driver to support Linear technology's ltc2496 2019-12-15 12:15:19 +00:00
ltc2497-core.c iio: adc: ltc2497: split protocol independent part in a separate module 2019-12-15 12:15:19 +00:00
ltc2497.c iio: adc: ltc2497: split protocol independent part in a separate module 2019-12-15 12:15:19 +00:00
ltc2497.h iio: adc: ltc2497: split protocol independent part in a separate module 2019-12-15 12:15:19 +00:00
Makefile staging: iio: adc: ad7192: move out of staging 2020-03-08 17:28:33 +00:00
max1027.c iio: adc: max1027: fix not unregistered iio trigger 2019-12-08 18:10:29 +00:00
max1118.c iio: adc: max1118: Use new structure for SPI transfer delays 2020-03-08 17:28:44 +00:00
max1363.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
max9611.c First set of new device support, features and cleanups for IIO in the 5.6 cycle 2020-01-10 10:44:00 +01:00
max11100.c
mcp320x.c iio: adc: mcp320x: Use new structure for SPI transfer delays 2020-03-08 17:28:45 +00:00
mcp3422.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
mcp3911.c
men_z188_adc.c drivers: mcb: use symbol namespaces 2019-11-03 19:54:53 +01: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: modify NPCM reset support 2020-02-14 15:06:24 +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
qcom-spmi-adc5.c
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: qcom-vadc-common: use <linux/units.h> helpers 2020-01-31 10:30:40 -08:00
qcom-vadc-common.h iio: adc: qcom-vadc-common: use <linux/units.h> helpers 2020-01-31 10:30:40 -08: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
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-adc: don't print an error on probe deferral 2020-01-18 14:22:00 +00:00
stm32-adc-core.h iio: adc: stm32-adc: Add check on overrun interrupt 2019-12-15 11:42:17 +00:00
stm32-adc.c iio: adc: stm32-adc: fix sleep in atomic context 2020-03-28 16:35:00 +00:00
stm32-dfsdm-adc.c iio: adc: stm32-dfsdm: fix sleep in atomic context 2020-02-02 14:07:49 +00:00
stm32-dfsdm-core.c
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
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
ti-adc161s626.c
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
ti-ads1015.c iio: adc: ti-ads1015: Make use of device property API 2019-12-15 11:42:18 +00:00
ti-ads7950.c iio: adc: ti-ads7950: Fix a typo in an error message 2019-12-15 11:42:17 +00:00
ti-ads8344.c
ti-ads8688.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
ti-tlc4541.c iio: adc: ti-tlc4541: Use new structure for SPI transfer delays 2020-03-08 17:28:45 +00: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: xilinx-xadc: Make sure not exceed maximum samplerate 2020-04-19 17:50:02 +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