[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20200801070130.3323112-1-icenowy@aosc.io>
Date: Sat, 1 Aug 2020 15:01:30 +0800
From: Icenowy Zheng <icenowy@...c.io>
To: Lee Jones <lee.jones@...aro.org>
Cc: linux-kernel@...r.kernel.org, Icenowy Zheng <icenowy@...c.io>
Subject: [PATCH] mfd: core: Fix handle of OF disabled MFD cells
When rewriting the OF match code of MFD core, addition of cells disabled
in OF will result in a failure with error -ENODEV. This is an unexpected
behavior, as the previous behavior is silently ignore the cell. On
SBCs with AXP20x PMICs, this leads to boot failure if AXP20x PMIC
support is built-in and some cells (especially power supply ones) are
disabled.
Silently ignore the cell when -ENODEV occurs.
Fixes: e49aa9a9bd22 ("mfd: core: Make a best effort attempt to match devices with the correct of_nodes")
Signed-off-by: Icenowy Zheng <icenowy@...c.io>
---
drivers/mfd/mfd-core.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/mfd/mfd-core.c b/drivers/mfd/mfd-core.c
index c3ef58a802bee..31b363c64f4b4 100644
--- a/drivers/mfd/mfd-core.c
+++ b/drivers/mfd/mfd-core.c
@@ -215,8 +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;
- if (ret)
+ if (ret) {
+ if (ret == -ENODEV) {
+ /* Ignore disabled devices error free */
+ ret = 0;
+ }
goto fail_alias;
+ }
break;
}
--
2.27.0
Powered by blists - more mailing lists