Revert "dm: pinctrl: Prevent (re-)configuring pins when already done before relocation"
authorLukasz Majewski <lukma@denx.de>
Wed, 9 Jan 2019 22:05:02 +0000 (23:05 +0100)
committerTom Rini <trini@konsulko.com>
Fri, 11 Jan 2019 15:03:42 +0000 (10:03 -0500)
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>
drivers/pinctrl/pinctrl-uclass.c

index c8b38d7..0e3260a 100644 (file)
@@ -139,9 +139,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.