[PATCH 1/2] pinctrl: probe pinctrl drivers during post-bind

Stefan Roese sr at denx.de
Mon May 16 08:40:23 CEST 2022


On 06.05.22 20:01, Robert Marko wrote:
> Currently, pinctrl drivers only get probed if pinconf is actually being
> used, however on SoC-s like Armada 3720 pinctrl driver is a also the GPIO
> driver.
> 
> So, if the pinctrl driver doesn't get probed GPIO-s won't get registered
> and thus they cannot be used.
> 
> This is a problem on the Methode eDPU as it just uses SB pins as GPIO-s
> and without them being registered networking won't work as it only has
> one SFP slot and the TX disable GPIO is on the SB controller.
> 
> So, probe the pinctrl drivers using DM_FLAG_PROBE_AFTER_BIND like LED
> uclass does.
> 
> Signed-off-by: Robert Marko <robert.marko at sartura.hr>

Reviewed-by: Stefan Roese <sr at denx.de>

Thanks,
Stefan

> ---
>   drivers/pinctrl/pinctrl-uclass.c | 7 +++++++
>   1 file changed, 7 insertions(+)
> 
> diff --git a/drivers/pinctrl/pinctrl-uclass.c b/drivers/pinctrl/pinctrl-uclass.c
> index 4462ed20e2..38ce2b5e0a 100644
> --- a/drivers/pinctrl/pinctrl-uclass.c
> +++ b/drivers/pinctrl/pinctrl-uclass.c
> @@ -402,6 +402,13 @@ static int __maybe_unused pinctrl_post_bind(struct udevice *dev)
>   {
>   	const struct pinctrl_ops *ops = pinctrl_get_ops(dev);
>   
> +	/*
> +	 * Make sure that the pinctrl driver gets probed after binding
> +	 * as some pinctrl drivers also register the GPIO driver during
> +	 * probe, and if they are not probed GPIO-s are not registered.
> +	 */
> +	dev_or_flags(dev, DM_FLAG_PROBE_AFTER_BIND);
> +
>   	if (!ops) {
>   		dev_dbg(dev, "ops is not set.  Do not bind.\n");
>   		return -EINVAL;

Viele Grüße,
Stefan Roese

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de


More information about the U-Boot mailing list