[U-Boot] Revert "dm: pinctrl: Prevent (re-)configuring pins when already done before relocation"

Message ID 20190109220502.5992-1-lukma@denx.de
State Accepted
Commit b6a6238f0455db4ad9f447a4424cb5f56e47cd60
Delegated to: Tom Rini
Headers show
Series
  • [U-Boot] Revert "dm: pinctrl: Prevent (re-)configuring pins when already done before relocation"
Related show

Commit Message

Lukasz Majewski Jan. 9, 2019, 10:05 p.m.
This reverts commit a7f4b4b344396590845e6552c82829ef68ef9f89.

As reported by Alex Kiernan the above optimization introduces a
regression in the below use case where:

1. Device has defined 'u-boot,dm-spl' property (@ eMMC DTS node)

2. The device downloads its MLO/SPL via UART (not eMMC - the eMMC pinmux
pins are NOT probed/configured in MLO/SPL).

3. The loaded via UART MLO/SPL wants to load Linux from eMMC. In this case
the DM core and pinctrl uclass checks 'u-boot,dm-spl' and don't
configure pins (as it thinks that those were initialized in MLO/SPL).

As we are very close to release - please revert this commit.

Reported-by: Alex Kiernan <alex.kiernan@gmail.com>
Signed-off-by: Lukasz Majewski <lukma@denx.de>

---

 drivers/pinctrl/pinctrl-uclass.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Simon Glass Jan. 10, 2019, 12:57 p.m. | #1
On Wed, 9 Jan 2019 at 15:05, Lukasz Majewski <lukma@denx.de> wrote:
>
> This reverts commit a7f4b4b344396590845e6552c82829ef68ef9f89.
>
> As reported by Alex Kiernan the above optimization introduces a
> regression in the below use case where:
>
> 1. Device has defined 'u-boot,dm-spl' property (@ eMMC DTS node)
>
> 2. The device downloads its MLO/SPL via UART (not eMMC - the eMMC pinmux
> pins are NOT probed/configured in MLO/SPL).
>
> 3. The loaded via UART MLO/SPL wants to load Linux from eMMC. In this case
> the DM core and pinctrl uclass checks 'u-boot,dm-spl' and don't
> configure pins (as it thinks that those were initialized in MLO/SPL).
>
> As we are very close to release - please revert this commit.
>
> Reported-by: Alex Kiernan <alex.kiernan@gmail.com>
> Signed-off-by: Lukasz Majewski <lukma@denx.de>
>
> ---
>
>  drivers/pinctrl/pinctrl-uclass.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>
Tom Rini Jan. 12, 2019, 8:13 p.m. | #2
On Wed, Jan 09, 2019 at 11:05:02PM +0100, Lukasz Majewski wrote:

> This reverts commit a7f4b4b344396590845e6552c82829ef68ef9f89.
> 
> As reported by Alex Kiernan the above optimization introduces a
> regression in the below use case where:
> 
> 1. Device has defined 'u-boot,dm-spl' property (@ eMMC DTS node)
> 
> 2. The device downloads its MLO/SPL via UART (not eMMC - the eMMC pinmux
> pins are NOT probed/configured in MLO/SPL).
> 
> 3. The loaded via UART MLO/SPL wants to load Linux from eMMC. In this case
> the DM core and pinctrl uclass checks 'u-boot,dm-spl' and don't
> configure pins (as it thinks that those were initialized in MLO/SPL).
> 
> As we are very close to release - please revert this commit.
> 
> Reported-by: Alex Kiernan <alex.kiernan@gmail.com>
> Signed-off-by: Lukasz Majewski <lukma@denx.de>
> Reviewed-by: Simon Glass <sjg@chromium.org>

Applied to u-boot/master, thanks!

Patch

diff --git a/drivers/pinctrl/pinctrl-uclass.c b/drivers/pinctrl/pinctrl-uclass.c
index 29c910c55f..6db0445067 100644
--- a/drivers/pinctrl/pinctrl-uclass.c
+++ b/drivers/pinctrl/pinctrl-uclass.c
@@ -117,9 +117,9 @@  static int pinconfig_post_bind(struct udevice *dev)
 	int ret;
 
 	dev_for_each_subnode(node, dev) {
-		if (pre_reloc_only ^ ofnode_pre_reloc(node))
+		if (pre_reloc_only &&
+		    !ofnode_pre_reloc(node))
 			continue;
-
 		/*
 		 * If this node has "compatible" property, this is not
 		 * a pin configuration node, but a normal device. skip.