|
Takashi Iwai |
bb8104 |
From aea6cb99703e17019e025aa71643b4d3e0a24413 Mon Sep 17 00:00:00 2001
|
|
Takashi Iwai |
bb8104 |
From: =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= <mirq-linux@rere.qmqm.pl>
|
|
Takashi Iwai |
bb8104 |
Date: Sat, 26 Sep 2020 23:32:41 +0200
|
|
Takashi Iwai |
bb8104 |
Subject: [PATCH] regulator: resolve supply after creating regulator
|
|
Takashi Iwai |
bb8104 |
Mime-version: 1.0
|
|
Takashi Iwai |
bb8104 |
Content-type: text/plain; charset=UTF-8
|
|
Takashi Iwai |
bb8104 |
Content-transfer-encoding: 8bit
|
|
Takashi Iwai |
bb8104 |
Git-commit: aea6cb99703e17019e025aa71643b4d3e0a24413
|
|
Takashi Iwai |
bb8104 |
Patch-mainline: v5.10-rc1
|
|
Takashi Iwai |
bb8104 |
References: git-fixes
|
|
Takashi Iwai |
bb8104 |
|
|
Takashi Iwai |
bb8104 |
When creating a new regulator its supply cannot create the sysfs link
|
|
Takashi Iwai |
bb8104 |
because the device is not yet published. Remove early supply resolving
|
|
Takashi Iwai |
bb8104 |
since it will be done later anyway. This makes the following error
|
|
Takashi Iwai |
bb8104 |
disappear and the symlinks get created instead.
|
|
Takashi Iwai |
bb8104 |
|
|
Takashi Iwai |
bb8104 |
DCDC_REG1: supplied by VSYS
|
|
Takashi Iwai |
bb8104 |
VSYS: could not add device link regulator.3 err -2
|
|
Takashi Iwai |
bb8104 |
|
|
Takashi Iwai |
bb8104 |
Note: It doesn't fix the problem for bypassed regulators, though.
|
|
Takashi Iwai |
bb8104 |
|
|
Takashi Iwai |
bb8104 |
Fixes: 45389c47526d ("regulator: core: Add early supply resolution for regulators")
|
|
Takashi Iwai |
bb8104 |
Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
|
|
Takashi Iwai |
bb8104 |
Link: https://lore.kernel.org/r/ba09e0a8617ffeeb25cb4affffe6f3149319cef8.1601155770.git.mirq-linux@rere.qmqm.pl
|
|
Takashi Iwai |
bb8104 |
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Takashi Iwai |
bb8104 |
Acked-by: Takashi Iwai <tiwai@suse.de>
|
|
Takashi Iwai |
bb8104 |
|
|
Takashi Iwai |
bb8104 |
---
|
|
Takashi Iwai |
bb8104 |
drivers/regulator/core.c | 21 +++++++++++++--------
|
|
Takashi Iwai |
bb8104 |
1 file changed, 13 insertions(+), 8 deletions(-)
|
|
Takashi Iwai |
bb8104 |
|
|
Takashi Iwai |
bb8104 |
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
|
|
Takashi Iwai |
bb8104 |
index ff8e99ca0306..9f704a6c4802 100644
|
|
Takashi Iwai |
bb8104 |
--- a/drivers/regulator/core.c
|
|
Takashi Iwai |
bb8104 |
+++ b/drivers/regulator/core.c
|
|
Takashi Iwai |
bb8104 |
@@ -5280,15 +5280,20 @@ regulator_register(const struct regulator_desc *regulator_desc,
|
|
Takashi Iwai |
bb8104 |
else if (regulator_desc->supply_name)
|
|
Takashi Iwai |
bb8104 |
rdev->supply_name = regulator_desc->supply_name;
|
|
Takashi Iwai |
bb8104 |
|
|
Takashi Iwai |
bb8104 |
- /*
|
|
Takashi Iwai |
bb8104 |
- * Attempt to resolve the regulator supply, if specified,
|
|
Takashi Iwai |
bb8104 |
- * but don't return an error if we fail because we will try
|
|
Takashi Iwai |
bb8104 |
- * to resolve it again later as more regulators are added.
|
|
Takashi Iwai |
bb8104 |
- */
|
|
Takashi Iwai |
bb8104 |
- if (regulator_resolve_supply(rdev))
|
|
Takashi Iwai |
bb8104 |
- rdev_dbg(rdev, "unable to resolve supply\n");
|
|
Takashi Iwai |
bb8104 |
-
|
|
Takashi Iwai |
bb8104 |
ret = set_machine_constraints(rdev, constraints);
|
|
Takashi Iwai |
bb8104 |
+ if (ret == -EPROBE_DEFER) {
|
|
Takashi Iwai |
bb8104 |
+ /* Regulator might be in bypass mode and so needs its supply
|
|
Takashi Iwai |
bb8104 |
+ * to set the constraints */
|
|
Takashi Iwai |
bb8104 |
+ /* FIXME: this currently triggers a chicken-and-egg problem
|
|
Takashi Iwai |
bb8104 |
+ * when creating -SUPPLY symlink in sysfs to a regulator
|
|
Takashi Iwai |
bb8104 |
+ * that is just being created */
|
|
Takashi Iwai |
bb8104 |
+ ret = regulator_resolve_supply(rdev);
|
|
Takashi Iwai |
bb8104 |
+ if (!ret)
|
|
Takashi Iwai |
bb8104 |
+ ret = set_machine_constraints(rdev, constraints);
|
|
Takashi Iwai |
bb8104 |
+ else
|
|
Takashi Iwai |
bb8104 |
+ rdev_dbg(rdev, "unable to resolve supply early: %pe\n",
|
|
Takashi Iwai |
bb8104 |
+ ERR_PTR(ret));
|
|
Takashi Iwai |
bb8104 |
+ }
|
|
Takashi Iwai |
bb8104 |
if (ret < 0)
|
|
Takashi Iwai |
bb8104 |
goto wash;
|
|
Takashi Iwai |
bb8104 |
|
|
Takashi Iwai |
bb8104 |
--
|
|
Takashi Iwai |
bb8104 |
2.16.4
|
|
Takashi Iwai |
bb8104 |
|