Re: [PATCH] pinctrl: core: Fix pinctrl_register_and_init() with pinctrl_enable()

From: Gary Bisson
Date: Mon Apr 03 2017 - 05:06:37 EST


Tony, All,

On Mon, Apr 3, 2017 at 10:46 AM, Geert Uytterhoeven
<geert@xxxxxxxxxxxxxx> wrote:
>
> Hi Tony,
>
> On Thu, Mar 30, 2017 at 6:16 PM, Tony Lindgren <tony@xxxxxxxxxxx> wrote:
> > Recent pinctrl changes to allow dynamic allocation of pins exposed one
> > more issue with the pinctrl pins claimed early by the controller itself.
> > This caused a regression for IMX6 pinctrl hogs.
> >
> > Before enabling the pin controller driver we need to wait until it has
> > been properly initialized, then claim the hogs, and only then enable it.
> >
> > To fix the regression, split the code into pinctrl_claim_hogs() and
> > pinctrl_enable(). And then let's require that pinctrl_enable() is always
> > called by the pin controller driver when ready after calling
> > pinctrl_register_and_init().
> >
> > Depends-on: 950b0d91dc10 ("pinctrl: core: Fix regression caused by delayed
> > work for hogs")
> > Fixes: df61b366af26 ("pinctrl: core: Use delayed work for hogs")
> > Fixes: e566fc11ea76 ("pinctrl: imx: use generic pinctrl helpers for
> > managing groups")
> > Cc: Fabio Estevam <festevam@xxxxxxxxx>
> > Cc: Gary Bisson <gary.bisson@xxxxxxxxxxxxxxxxxxx>
> > Cc: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx>
> > Cc: Haojian Zhuang <haojian.zhuang@xxxxxxxxxx>
> > Cc: Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx>
> > Cc: Mika Penttilà <mika.penttila@xxxxxxxxxxxx>
> > Cc: Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx>
> > Cc: Nishanth Menon <nm@xxxxxx>
> > Cc: Shawn Guo <shawnguo@xxxxxxxxxx>
> > Cc: Stefan Agner <stefan@xxxxxxxx>
> > Signed-off-by: Tony Lindgren <tony@xxxxxxxxxxx>
>
> The display on r8a7740-armadillo800eva still works, so the GPIO hog
> needed for that is OK.
>
> Tested-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx>

For imx, tested on a Nitrogen6x platform:

Before the patch:
# dmesg | grep iomux
[ 0.096672] imx6q-pinctrl 20e0000.iomuxc: unable to find group for
node hoggrp
[ 0.097215] imx6q-pinctrl 20e0000.iomuxc: initialized IMX pinctrl driver

After the patch:
# dmesg | grep iomux
[ 0.097505] imx6q-pinctrl 20e0000.iomuxc: initialized IMX pinctrl driver

Also, checking the pinctrl of the hog pins in sysfs proved to be correct.

Tested-by: Gary Bisson <gary.bisson@xxxxxxxxxxxxxxxxxxx>

Regards,
Gary