linux/drivers/mfd
Michal Oleszczyk 8e88c61d6f mfd: core: Delete corresponding OF node entries from list on MFD removal
When we consider MFD which implements hotplug (e.g. USB hotplug
driver based on product and vendor IDs) functionality it turns out
that its sub-devices are correctly matched with corresponding device
tree nodes only at the first time. When physical device reboots
or is replugged (and MFD driver is disconnected and probed back
again) all sub-devices fails in mfd_add_device() with error
'Failed to locate of_node'.

The reason of that behavior is that when any MFD sub-device is
created for the first time (and matched with device tree node) it
is added to the mfd_of_node_list. It looks like this list is never
cleaned even if devices added there are intentionally removed from
the system. So when MFD device is replugged and all sub-devices
are matched with their device tree nodes again they fail as matched
nodes already exist in mfd_of_node_list. In other words current
implementation does not support MFD with hotplug feature.

This commit extends MFD core for hotplugging support by removing
appropriate OF node entry from mfd_of_node_list when corresponding
device is removed from the system. Thanks to that when device is
added once again it can be matched with its device tree node
successfully.

Signed-off-by: Michal Oleszczyk <oleszczyk.m@gmail.com>
Signed-off-by: Lee Jones <lee@kernel.org>
Link: https://lore.kernel.org/r/20220809060336.31892-1-m.oleszczyk@grinn-global.com
2022-09-28 16:09:50 +01:00
..
88pm80x.c
88pm800.c
88pm805.c
88pm860x-core.c
88pm860x-i2c.c
aat2870-core.c
ab8500-core.c
ab8500-sysctrl.c
abx500-core.c
ac100.c
acer-ec-a500.c
act8945a.c
adp5520.c
altera-a10sr.c
altera-sysmgr.c
arizona-core.c
arizona-i2c.c
arizona-irq.c
arizona-spi.c
arizona.h
as3711.c
as3722.c
asic3.c
at91-usart.c
atc260x-core.c
atc260x-i2c.c
atmel-flexcom.c
atmel-hlcdc.c
atmel-smc.c
axp20x-i2c.c
axp20x-rsb.c
axp20x.c
bcm590xx.c
bcm2835-pm.c
bd9571mwv.c
cros_ec_dev.c - Core Frameworks 2022-08-06 10:25:16 -07:00
cs47l15-tables.c
cs47l24-tables.c
cs47l35-tables.c
cs47l85-tables.c
cs47l90-tables.c
cs47l92-tables.c
cs5535-mfd.c
da903x.c
da9052-core.c
da9052-i2c.c
da9052-irq.c
da9052-spi.c
da9055-core.c
da9055-i2c.c
da9062-core.c
da9063-core.c
da9063-i2c.c
da9063-irq.c
da9150-core.c
davinci_voicecodec.c
db8500-prcmu-regs.h
db8500-prcmu.c
dln2.c
dm355evm_msp.c
ene-kb3930.c
exynos-lpass.c
ezx-pcap.c
fsl-imx25-tsadc.c mfd: fsl-imx25: Fix an error handling path in mx25_tsadc_setup_irq() 2022-09-28 16:09:50 +01:00
gateworks-gsc.c
hi655x-pmic.c
hi6421-pmic-core.c
hi6421-spmi-pmic.c
htc-i2cpld.c
htc-pasic3.c
intel-lpss-acpi.c
intel-lpss-pci.c mfd: intel-lpss: Provide an SSP type to the SPI driver 2022-09-28 16:09:48 +01:00
intel-lpss.c
intel-lpss.h
intel-m10-bmc.c
intel_pmc_bxt.c
intel_quark_i2c_gpio.c
intel_soc_pmic_bxtwc.c
intel_soc_pmic_chtdc_ti.c
intel_soc_pmic_chtwc.c
intel_soc_pmic_crc.c mfd: intel_soc_pmic_crc: Update the copyright year 2022-09-28 16:09:49 +01:00
intel_soc_pmic_mrfld.c
ioc3.c
ipaq-micro.c
iqs62x.c
janz-cmodio.c
Kconfig mfd: silergy,sy7636a: Add config option MFD_SY7636A 2022-09-28 16:09:50 +01:00
kempld-core.c
khadas-mcu.c
lm3533-core.c
lm3533-ctrlbank.c
lochnagar-i2c.c
lp873x.c
lp3943.c
lp8788-irq.c mfd: lp8788: Fix an error handling path in lp8788_irq_init() and lp8788_irq_init() 2022-09-28 16:09:50 +01:00
lp8788.c mfd: lp8788: Fix an error handling path in lp8788_probe() 2022-09-28 16:09:50 +01:00
lp87565.c
lpc_ich.c
lpc_sch.c
madera-core.c
madera-i2c.c
madera-spi.c
madera.h
Makefile mfd: mt6370: Add MediaTek MT6370 support 2022-09-28 16:09:50 +01:00
max8907.c
max8925-core.c
max8925-i2c.c
max8997-irq.c
max8997.c
max8998-irq.c
max8998.c
max14577.c
max77620.c
max77650.c
max77686.c
max77693.c
max77714.c
max77843.c
mc13xxx-core.c
mc13xxx-i2c.c
mc13xxx-spi.c
mc13xxx.h
mcp-core.c
mcp-sa11x0.c
menelaus.c
menf21bmc.c
mfd-core.c mfd: core: Delete corresponding OF node entries from list on MFD removal 2022-09-28 16:09:50 +01:00
motorola-cpcap.c
mp2629.c
mt6358-irq.c
mt6360-core.c
mt6370.c mfd: mt6370: Add MediaTek MT6370 support 2022-09-28 16:09:50 +01:00
mt6370.h mfd: mt6370: Add MediaTek MT6370 support 2022-09-28 16:09:50 +01:00
mt6397-core.c
mt6397-irq.c
mxs-lradc.c
ntxec.c
ocelot-core.c mfd: ocelot: Add support for the vsc7512 chip via spi 2022-09-09 07:54:47 +01:00
ocelot-spi.c mfd: ocelot: Add support for the vsc7512 chip via spi 2022-09-09 07:54:47 +01:00
ocelot.h mfd: ocelot: Add support for the vsc7512 chip via spi 2022-09-09 07:54:47 +01:00
omap-usb-host.c
omap-usb-tll.c
omap-usb.h
palmas.c
pcf50633-adc.c
pcf50633-core.c
pcf50633-gpio.c
pcf50633-irq.c
qcom-pm8xxx.c
qcom-pm8008.c
qcom-spmi-pmic.c
qcom_rpm.c
rave-sp.c
rc5t583-irq.c
rc5t583.c
rdc321x-southbridge.c
retu-mfd.c
rk808.c mfd: rk808: Add Rockchip rk817 battery charger support 2022-09-28 16:09:49 +01:00
rn5t618.c
rohm-bd718x7.c
rohm-bd9576.c
rohm-bd71828.c
rsmu.h
rsmu_core.c
rsmu_i2c.c
rsmu_spi.c
rt4831.c
rt5033.c
sec-core.c
sec-irq.c
si476x-cmd.c
si476x-i2c.c
si476x-prop.c
simple-mfd-i2c.c
simple-mfd-i2c.h
sky81452.c
sm501.c
sprd-sc27xx-spi.c
ssbi.c
sta2x11-mfd.c
stm32-lptimer.c
stm32-timers.c
stmfx.c
stmpe-i2c.c
stmpe-spi.c
stmpe.c mfd: stmpe: Probe sub-function by compatible 2022-09-28 16:09:48 +01:00
stmpe.h
stpmic1.c
stw481x.c
sun4i-gpadc.c
sun6i-prcm.c
syscon.c
t7l66xb.c
tc3589x.c
tc6387xb.c
tc6393xb.c
ti-lmu.c
ti_am335x_tscadc.c
timberdale.c
timberdale.h
tmio_core.c
tps6105x.c
tps6507x.c
tps6586x.c
tps65010.c
tps65086.c
tps65090.c
tps65217.c
tps65218.c
tps65910.c
tps65911-comparator.c
tps65912-core.c
tps65912-i2c.c
tps65912-spi.c
tqmx86.c
twl-core.c mfd: twl-core: Fix double "to to" in comment. 2022-09-28 16:09:50 +01:00
twl-core.h
twl4030-audio.c
twl4030-irq.c
twl4030-power.c
twl6030-irq.c
twl6040.c
ucb1x00-assabet.c
ucb1x00-core.c
ucb1x00-ts.c
ucb1400_core.c
vexpress-sysreg.c
viperboard.c
vx855.c
wcd934x.c
wl1273-core.c
wm97xx-core.c
wm831x-auxadc.c
wm831x-core.c
wm831x-i2c.c
wm831x-irq.c
wm831x-otp.c
wm831x-spi.c
wm5102-tables.c
wm5110-tables.c
wm8350-core.c
wm8350-gpio.c
wm8350-i2c.c
wm8350-irq.c
wm8350-regmap.c
wm8400-core.c
wm8994-core.c
wm8994-irq.c
wm8994-regmap.c
wm8994.h
wm8997-tables.c
wm8998-tables.c