linux/drivers/iio/adc
Quentin Schulz 82237f2682 iio: adc: sun4i-gpadc-iio: fix parent device being used in devm function
For the sake of DT binding stability, this IIO driver is a child of an
MFD driver for Allwinner A10, A13 and A31 because there already exists a
DT binding for this IP. The MFD driver has a DT node but the IIO driver
does not.

The IIO device registers the temperature sensor in the thermal framework
using the DT node of the parent, the MFD device, so the thermal
framework could match the phandle to the MFD device in the DT and the
struct device used to register in the thermal framework.

devm_thermal_zone_of_sensor_register was previously used to register the
thermal sensor with the parent struct device of the IIO device,
representing the MFD device. By doing so, we registered actually the
parent in the devm routine and not the actual IIO device.

This lead to the devm unregister function not being called when the IIO
module driver is removed. It resulted in the thermal framework still
polling the get_temp function of the IIO module while the device doesn't
exist anymore, thus generated a kernel panic.

Use the non-devm function instead and do the unregister manually in the
remove function.

Fixes: d1caa99055 ("iio: adc: add support for Allwinner SoCs ADC")

Signed-off-by: Quentin Schulz <quentin.schulz@free-electrons.com>
Reported-by: Corentin Labbe <clabbe.montjoie@gmail.com>
Reviewed-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2017-05-21 15:17:40 +01: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 iio: adc: ad_sigma_delta: Fix indio_dev->trig assignment 2014-08-25 21:48:29 +01:00
aspeed_adc.c iio: Aspeed ADC 2017-04-01 11:53:20 +01:00
at91_adc.c iio: adc: at91: add suspend and resume callback 2016-11-05 16:33:00 +00:00
at91-sama5d2_adc.c Merge 4.6-rc7 into staging-next 2016-05-09 13:20:04 +02:00
axp288_adc.c iio: adc: axp288: Drop bogus AXP288_ADC_TS_PIN_CTRL register modifications 2017-01-10 19:54:57 +00: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
Kconfig iio: adc: add max1117/max1118/max1119 ADC driver 2017-04-14 15:09:06 +01:00
lp8788_adc.c iio: remove .owner field for driver using module_platform_driver 2014-08-26 21:08:38 +01:00
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
Makefile iio: adc: add max1117/max1118/max1119 ADC driver 2017-04-14 15:09:06 +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: add calibration 2017-03-25 14:55:03 +00:00
mt6577_auxadc.c iio: adc: mt2701: Add Mediatek auxadc driver for mt2701. 2016-08-21 19:54:30 +01:00
mxs-lradc.c iio: mxs-lradc: disable only masked channels in mxs_lradc_hw_stop 2016-05-04 10:44:28 +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 iio: stx104: Set parent device 2017-02-19 11:53:05 +00:00
sun4i-gpadc-iio.c iio: adc: sun4i-gpadc-iio: fix parent device being used in devm function 2017-05-21 15:17:40 +01:00
ti_am335x_adc.c iio: adc: ti_am335x_adc: allocating too much in probe 2017-05-14 16:21:13 +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
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: Remove unnecessary cast on void pointer 2017-04-02 09:46:25 +01:00
viperboard_adc.c iio: remove .owner field for driver using module_platform_driver 2014-08-26 21:08:38 +01:00
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