Messages in this thread Patch in this message | | | From | Paul Kocialkowski <> | Subject | [PATCH] mfd: core: Restore error-free return for dt-disabled devices | Date | Fri, 30 Oct 2020 15:18:06 +0100 |
| |
When adding devices via mfd (mfd_add_device), a check on the device-tree status of the device was performed to gracefully handle disabled devices without errors.
This was done with a check using of_device_is_available, that was recently moved to the mfd_match_of_node_to_dev function (by returning -ENODEV). However, no specific case was added to handle -ENODEV, so it was handled like any error.
At the end of the day, this causes the mfd_add_devices process to fail as soon as one device is marked disabled. This is quite problematic and definitely not what we want.
Introduce a special case to handle -ENODEV gracefully and restore original behavior.
Fixes: 466a62d7642f ("mfd: core: Make a best effort attempt to match devices with the correct of_nodes")
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com> --- drivers/mfd/mfd-core.c | 7 +++++++ 1 file changed, 7 insertions(+)
diff --git a/drivers/mfd/mfd-core.c b/drivers/mfd/mfd-core.c index c3651f06684f..be9900866f2d 100644 --- a/drivers/mfd/mfd-core.c +++ b/drivers/mfd/mfd-core.c @@ -215,6 +215,13 @@ static int mfd_add_device(struct device *parent, int id, ret = mfd_match_of_node_to_dev(pdev, np, cell); if (ret == -EAGAIN) continue; + + /* Ignore 'disabled' devices error free */ + if (ret == -ENODEV) { + ret = 0; + goto fail_alias; + } + if (ret) goto fail_alias; -- 2.28.0
| |