diff options
author | Simon Glass <sjg@chromium.org> | 2021-01-21 13:57:13 -0700 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2021-01-30 14:25:42 -0700 |
commit | 017d421828971f6adbfa6a1305b80da7d620c596 (patch) | |
tree | 0947a706794dbe4cd063cf048b038d83312db9c5 /drivers/core | |
parent | 0dc2bf2b6e6e7581e3307f3aa65d0ce310375511 (diff) | |
download | u-boot-017d421828971f6adbfa6a1305b80da7d620c596.tar.gz |
dm: core: Add a comment about pinctrl_select_state()
The use of pinctrl in the core of driver model is useful but can provoke
some strange behaviour. Add a comment to aid debugging.
Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'drivers/core')
-rw-r--r-- | drivers/core/device.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/core/device.c b/drivers/core/device.c index aeab3836ed..8629df8def 100644 --- a/drivers/core/device.c +++ b/drivers/core/device.c @@ -462,6 +462,15 @@ int device_probe(struct udevice *dev) * continue regardless of the result of pinctrl. Don't process pinctrl * settings for pinctrl devices since the device may not yet be * probed. + * + * This call can produce some non-intuitive results. For example, on an + * x86 device where dev is the main PCI bus, the pinctrl device may be + * child or grandchild of that bus, meaning that the child will be + * probed here. If the child happens to be the P2SB and the pinctrl + * device is a child of that, then both the pinctrl and P2SB will be + * probed by this call. This works because the DM_FLAG_ACTIVATED flag + * is set just above. However, the PCI bus' probe() method and + * associated uclass methods have not yet been called. */ if (dev->parent && device_get_uclass_id(dev) != UCLASS_PINCTRL) pinctrl_select_state(dev, "default"); |