
Hi Jiaxun,
On 2024-05-13 20:13, Jiaxun Yang wrote:
When bootph-all is enabled for a syscon driver, the device may leave unprobed when syscon_get_regmap is called by another driver.
Perform device_probe in syscon_get_regmap, there is no side affect as device_probe will return 0 quickly for an activated device.
Signed-off-by: Jiaxun Yang jiaxun.yang@flygoat.com
drivers/core/syscon-uclass.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/drivers/core/syscon-uclass.c b/drivers/core/syscon-uclass.c index f0e69d7216b3..b09f7013194d 100644 --- a/drivers/core/syscon-uclass.c +++ b/drivers/core/syscon-uclass.c @@ -32,10 +32,14 @@ */ struct regmap *syscon_get_regmap(struct udevice *dev) {
int ret; struct syscon_uc_info *priv;
if (device_get_uclass_id(dev) != UCLASS_SYSCON) return ERR_PTR(-ENOEXEC);
ret = device_probe(dev);
if (ret)
return ERR_PTR(ret);
Please explain in more details what the issue this is trying to solve.
Typically syscon_get_regmap() is called on a udevice returned from a uclass_get_device call, and that should trigger a probe for the device and its parents.
Adding device_probe() here possible just hides an issue that exists somewhere else. In what instance are you ending up with a call to this function with a udevice that has not been probed?
Also, please add a new test to test/dm/regmap.c if this solves a real issue.
Regards, Jonas
priv = dev_get_uclass_priv(dev); return priv->regmap; }