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



[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux