Re: [PATCH v2] mfd: core: Delete corresponding OF node entries from list on MFD removal

From: Lee Jones
Date: Wed Aug 10 2022 - 07:28:40 EST


On Tue, 09 Aug 2022, Michał Oleszczyk wrote:

> From: Michal Oleszczyk <oleszczyk.m@xxxxxxxxx>
>
> 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@xxxxxxxxx>
> ---
>
> Changes in v2: removing unused variable declaration.
>
> drivers/mfd/mfd-core.c | 7 +++++++
> 1 file changed, 7 insertions(+)

Applied, thanks.

--
Lee Jones [李琼斯]