The 'ravb' Ethernet driver couldn't connect to  the PHY as the MDIO bus
appeared empty on the Renesas R-Car boards. The bug hunt finally pointed
at  the commit adding the "init" pintcrl state: it tries to switch to non-
default state before the driver probe which should fail but doesn't as the
PFC pinctrl driver happens to call pinctrl_provide_dummies()  which makes
all state lookups succeed, even though the state doesn't really exist.
That feature is only relevant to non-DT systems and all the ARM boards
that use the PFC driver  have been converted to the DT boot, so limiting
it to the SuperH architecture seems The Right Thing...

Fixes: ef0eebc05130 ("drivers/pinctrl: Add the concept of an "init" state")
Signed-off-by: Sergei Shtylyov <sergei.shtyl...@cogentembedded.com>
CC: sta...@vger.kernel.org

---
The patch is against the 'fixes' branch of Linus W.'s 'linux-pinctrl.git' repo.
As  the bug only seems to happen  to the hardware that's not pre-configured by
U-Boot, this patch can wait till 4.6 in principle...

 drivers/pinctrl/sh-pfc/core.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Index: linux-pinctrl/drivers/pinctrl/sh-pfc/core.c
===================================================================
--- linux-pinctrl.orig/drivers/pinctrl/sh-pfc/core.c
+++ linux-pinctrl/drivers/pinctrl/sh-pfc/core.c
@@ -545,7 +545,8 @@ static int sh_pfc_probe(struct platform_
                        return ret;
        }
 
-       pinctrl_provide_dummies();
+       if (IS_ENABLED(CONFIG_SUPERH))
+               pinctrl_provide_dummies();
 
        ret = sh_pfc_init_ranges(pfc);
        if (ret < 0)

Reply via email to