Re: [RFC] pinctrl: sh-pfc: only use dummy states for non-DT platforms

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Wolfram,

On Mon, Mar 7, 2016 at 7:40 PM, Wolfram Sang <wsa@xxxxxxxxxxxxx> wrote:
> From: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx>
>
> 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.

Thanks!

Interestingly, Sergei submitted a similar patch a few days ago
"pinctrl: sh-pfc: core: only call pinctrl_provide_dummies"
(https://patchwork.ozlabs.org/patch/592245/)

>
> Reported-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx>
> Signed-off-by: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx>
> ---
>
> Geert recently pointed out the problem, that the IRQ2 fixup for the
> DA9xxx PMICs failed on Lager on cold boot. I could verify this iff IIC3
> was used and not I2C3. IIC3 is the default, however I mostly used I2C3
> recently, because it has the slave capabilities.
>
> The original pinctrl_provide_dummies() is there since the beginning of the
> file, so in order to avoid regressions, the below solution looks plausible to
> me. I do not have much experience with hardware older than Gen2, though, so
> comments are much appreciated!
>
>
>  drivers/pinctrl/sh-pfc/core.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/pinctrl/sh-pfc/core.c b/drivers/pinctrl/sh-pfc/core.c
> index 0c2d14c504aa1d..db53d7bbc16e18 100644
> --- a/drivers/pinctrl/sh-pfc/core.c
> +++ b/drivers/pinctrl/sh-pfc/core.c
> @@ -545,7 +545,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)
> --
> 2.7.0

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux