Re: [PATCH] pinctrl: tegra: Set SFIO mode to Mux Register

From: Thierry Reding
Date: Wed Mar 23 2022 - 08:31:14 EST


On Fri, Mar 11, 2022 at 10:00:15AM +0530, Prathamesh Shete wrote:
> If the device has the 'sfsel' bit field, pin should be
> muxed to set to SFIO mode to be used for pinmux operation.
>
> Signed-off-by: EJ Hsu <ejh@xxxxxxxxxx>
> Signed-off-by: Prathamesh Shete <pshete@xxxxxxxxxx>
> ---
> drivers/pinctrl/tegra/pinctrl-tegra.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/pinctrl/tegra/pinctrl-tegra.c b/drivers/pinctrl/tegra/pinctrl-tegra.c
> index 50bd26a30ac0..30341c43da59 100644
> --- a/drivers/pinctrl/tegra/pinctrl-tegra.c
> +++ b/drivers/pinctrl/tegra/pinctrl-tegra.c
> @@ -270,6 +270,9 @@ static int tegra_pinctrl_set_mux(struct pinctrl_dev *pctldev,
> val = pmx_readl(pmx, g->mux_bank, g->mux_reg);
> val &= ~(0x3 << g->mux_bit);
> val |= i << g->mux_bit;
> + /* Set the SFIO/GPIO selection to SFIO when under pinmux control*/
> + if (pmx->soc->sfsel_in_mux)
> + val |= (1 << g->sfsel_bit);
> pmx_writel(pmx, val, g->mux_bank, g->mux_reg);
>
> return 0;

So this is basically what tegra_pinctrl_gpio_disable_free() does. I'm
wondering if we need to do both, though. Are ->gpio_disable_free() and
->set_mux() always called in tandem? I suspect they are not because
otherwise this wouldn't be needed.

On the other hand, if ->set_mux() can be called in a code path without
->gpio_disable_free() then this may be necessary to get the pin out of
SF mode. But that doesn't necessarily mean that the reverse is true.
If it isn't possible for ->gpio_disable_free() to be called in a code
path that doesn't have ->set_mux() then this patch would make the former
implementation redundant.

That said, upon inspecting the pinmux core, I don't see a 1:1
correlation between the two, so this seems fine.

It might be worth stating in the commit message what the practical
implications are of this. That is, you're explaining what you do in the
commit message and assert that this is what should be done. But it'd be
more useful to say *why* this is necessary. Specifically if this fixes a
bug, then say what kind of bug this would fix.

Thierry

Attachment: signature.asc
Description: PGP signature