pinctrl: sh-pfc: only use dummy states for non-DT platforms
authorWolfram Sang <wsa+renesas@sang-engineering.com>
Mon, 7 Mar 2016 18:40:57 +0000 (19:40 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Wed, 30 Mar 2016 08:57:51 +0000 (10:57 +0200)
If pinctrl_provide_dummies() is used unconditionally, then the dummy
state will be used even on DT platforms when the "init" state was
intentionally left out. Instead of "default", the dummy "init" state
will then be used during probe. Thus, when probing an I2C controller on
cold boot, communication triggered by bus notifiers broke because the
pins were not initialized.

Do it like OMAP2: use the dummy state only for non-DT platforms.

Cc: stable@vger.kernel.org
Fixes: ef0eebc05130 ("drivers/pinctrl: Add the concept of an "init" state")
Reported-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Acked-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/sh-pfc/core.c

index dc3609f0c60b6b50d10c76bba38b4f73952d5c1e..ee0c1f2567d9f3eec5fe11401ff4d3a4384b7cfc 100644 (file)
@@ -546,7 +546,9 @@ static int sh_pfc_probe(struct platform_device *pdev)
                        return ret;
        }
 
-       pinctrl_provide_dummies();
+       /* Enable dummy states for those platforms without pinctrl support */
+       if (!of_have_populated_dt())
+               pinctrl_provide_dummies();
 
        ret = sh_pfc_init_ranges(pfc);
        if (ret < 0)