[PATCH] arm64: a37xx: pinctrl: probe after binding

Stefan Roese sr at denx.de
Thu Jan 19 08:00:21 CET 2023


On 1/17/23 15:08, Robert Marko wrote:
> Currently, pinctrl drivers are getting probed during post-bind, however
> that is being reverted, and on A37XX pinctrl driver is the one that
> registers the GPIO driver during the probe.
> 
> 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, lets just add a flag only to A37XX driver to probe after binding
> in order for the GPIO driver to always get registered.
> 
> Signed-off-by: Robert Marko <robert.marko at sartura.hr>

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

Thanks,
Stefan

> ---
>   drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 14 ++++++++++++++
>   1 file changed, 14 insertions(+)
> 
> diff --git a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
> index 25fbe39abd1..1be6252227d 100644
> --- a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
> +++ b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
> @@ -745,6 +745,19 @@ static int armada_37xx_pinctrl_probe(struct udevice *dev)
>   	return 0;
>   }
>   
> +static int armada_37xx_pinctrl_bind(struct udevice *dev)
> +{
> +	/*
> +	 * Make sure that the pinctrl driver gets probed after binding
> +	 * as on A37XX the pinctrl driver is the one that is also
> +	 * registering the GPIO one during probe, so if its not probed
> +	 * GPIO-s are not registered as well.
> +	 */
> +	dev_or_flags(dev, DM_FLAG_PROBE_AFTER_BIND);
> +
> +	return 0;
> +}
> +
>   static const struct udevice_id armada_37xx_pinctrl_of_match[] = {
>   	{
>   		.compatible = "marvell,armada3710-sb-pinctrl",
> @@ -762,6 +775,7 @@ U_BOOT_DRIVER(armada_37xx_pinctrl) = {
>   	.id = UCLASS_PINCTRL,
>   	.of_match = of_match_ptr(armada_37xx_pinctrl_of_match),
>   	.probe = armada_37xx_pinctrl_probe,
> +	.bind = armada_37xx_pinctrl_bind,
>   	.priv_auto	= sizeof(struct armada_37xx_pinctrl),
>   	.ops = &armada_37xx_pinctrl_ops,
>   };

Viele Grüße,
Stefan Roese

-- 
DENX Software Engineering GmbH,      Managing Director: Erika Unter
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