On Sat, 01 Aug 2020, Icenowy Zheng wrote: > 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.
Thanks for reporting this. Do you mind if I fix this another way? I plan to reinstate the old code that was removed as part of the offending patch. I will of course add your Reported-by tag. > 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 <icen...@aosc.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; > } -- Lee Jones [李琼斯] Senior Technical Lead - Developer Services Linaro.org │ Open source software for Arm SoCs Follow Linaro: Facebook | Twitter | Blog