diff mbox series

dm: core: Switch order of pinctrl and power domain calls

Message ID 85e7e0be34d30b100c7bb419f801a8c2e22fd1e9.1641569887.git.michal.simek@xilinx.com
State Accepted
Delegated to: Simon Glass
Headers show
Series dm: core: Switch order of pinctrl and power domain calls | expand

Commit Message

Michal Simek Jan. 7, 2022, 3:38 p.m. UTC
The commit 3ad307784847 ("dm: core: device: enable power domain in probe")
introduced enabling power domain when device is probed.
By checking this sequence in Linux kernel was found that power domain is
handled first followed by pinctrl setting.

This patch is switching this order to follow Linux kernel that power
domains are handled first follow by pinctrl setting.

The issue was found on Xilinx Kria SOM where firmware is blocking setting
up pin configuration/muxes without enabling power domain for the specific
IP first.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
---

 drivers/core/device.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

Comments

Simon Glass Jan. 13, 2022, 1:41 p.m. UTC | #1
On Fri, 7 Jan 2022 at 08:38, Michal Simek <michal.simek@xilinx.com> wrote:
>
> The commit 3ad307784847 ("dm: core: device: enable power domain in probe")
> introduced enabling power domain when device is probed.
> By checking this sequence in Linux kernel was found that power domain is
> handled first followed by pinctrl setting.
>
> This patch is switching this order to follow Linux kernel that power
> domains are handled first follow by pinctrl setting.
>
> The issue was found on Xilinx Kria SOM where firmware is blocking setting
> up pin configuration/muxes without enabling power domain for the specific
> IP first.
>
> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
> ---
>
>  drivers/core/device.c | 16 ++++++++--------
>  1 file changed, 8 insertions(+), 8 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>
Simon Glass Jan. 13, 2022, 6 p.m. UTC | #2
On Fri, 7 Jan 2022 at 08:38, Michal Simek <michal.simek@xilinx.com> wrote:
>
> The commit 3ad307784847 ("dm: core: device: enable power domain in probe")
> introduced enabling power domain when device is probed.
> By checking this sequence in Linux kernel was found that power domain is
> handled first followed by pinctrl setting.
>
> This patch is switching this order to follow Linux kernel that power
> domains are handled first follow by pinctrl setting.
>
> The issue was found on Xilinx Kria SOM where firmware is blocking setting
> up pin configuration/muxes without enabling power domain for the specific
> IP first.
>
> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
> ---
>
>  drivers/core/device.c | 16 ++++++++--------
>  1 file changed, 8 insertions(+), 8 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

Applied to u-boot-dm, thanks!
diff mbox series

Patch

diff --git a/drivers/core/device.c b/drivers/core/device.c
index efd07176e374..101ad8a22b37 100644
--- a/drivers/core/device.c
+++ b/drivers/core/device.c
@@ -518,6 +518,14 @@  int device_probe(struct udevice *dev)
 
 	dev_or_flags(dev, DM_FLAG_ACTIVATED);
 
+	if (CONFIG_IS_ENABLED(POWER_DOMAIN) && dev->parent &&
+	    (device_get_uclass_id(dev) != UCLASS_POWER_DOMAIN) &&
+	    !(drv->flags & DM_FLAG_DEFAULT_PD_CTRL_OFF)) {
+		ret = dev_power_domain_on(dev);
+		if (ret)
+			goto fail;
+	}
+
 	/*
 	 * Process pinctrl for everything except the root device, and
 	 * continue regardless of the result of pinctrl. Don't process pinctrl
@@ -536,14 +544,6 @@  int device_probe(struct udevice *dev)
 	if (dev->parent && device_get_uclass_id(dev) != UCLASS_PINCTRL)
 		pinctrl_select_state(dev, "default");
 
-	if (CONFIG_IS_ENABLED(POWER_DOMAIN) && dev->parent &&
-	    (device_get_uclass_id(dev) != UCLASS_POWER_DOMAIN) &&
-	    !(drv->flags & DM_FLAG_DEFAULT_PD_CTRL_OFF)) {
-		ret = dev_power_domain_on(dev);
-		if (ret)
-			goto fail;
-	}
-
 	if (CONFIG_IS_ENABLED(IOMMU) && dev->parent &&
 	    (device_get_uclass_id(dev) != UCLASS_IOMMU)) {
 		ret = dev_iommu_enable(dev);