summaryrefslogtreecommitdiff
path: root/drivers/regulator
diff options
context:
space:
mode:
authorMichał Mirosław <mirq-linux@rere.qmqm.pl>2020-11-13 03:20:28 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2020-11-24 15:27:25 +0300
commit47a15b5c7ad24d854e4399a855ff2117ce31e73d (patch)
tree61c5ea2f89fd1115b74b8ae4c2c222f8d8a65c0f /drivers/regulator
parent00aa5e8d1a3334701cdf0a7d0965e7650a7cd797 (diff)
downloadlinux-47a15b5c7ad24d854e4399a855ff2117ce31e73d.tar.xz
regulator: workaround self-referent regulators
commit f5c042b23f7429e5c2ac987b01a31c69059a978b upstream. Workaround regulators whose supply name happens to be the same as its own name. This fixes boards that used to work before the early supply resolving was removed. The error message is left in place so that offending drivers can be detected. Fixes: aea6cb99703e ("regulator: resolve supply after creating regulator") Cc: stable@vger.kernel.org Reported-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Tested-by: Ahmad Fatoum <a.fatoum@pengutronix.de> # stpmic1 Link: https://lore.kernel.org/r/d703acde2a93100c3c7a81059d716c50ad1b1f52.1605226675.git.mirq-linux@rere.qmqm.pl Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/regulator')
-rw-r--r--drivers/regulator/core.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index 2dd7e87ee378..8a6ca06d9c16 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -1598,7 +1598,10 @@ static int regulator_resolve_supply(struct regulator_dev *rdev)
if (r == rdev) {
dev_err(dev, "Supply for %s (%s) resolved to itself\n",
rdev->desc->name, rdev->supply_name);
- return -EINVAL;
+ if (!have_full_constraints())
+ return -EINVAL;
+ r = dummy_regulator_rdev;
+ get_device(&r->dev);
}
/*