On Fri, Nov 17, 2023 at 10:04:53AM +0800, Jim Liu wrote:
> Add bb_miiphy_bus function for designware bitbang feature.
> 
> Signed-off-by: Jim Liu <[email protected]>
> ---
> Changes for v2:
>    - add bitbang delay dts read
>    - modify printf to debug
> ---
>  drivers/net/designware.c | 105 +++++++++++++++++++++++++++++++++++++++
>  drivers/net/designware.h |   5 ++
>  2 files changed, 110 insertions(+)
> 
> diff --git a/drivers/net/designware.c b/drivers/net/designware.c
> index a174344b3e..e86f96fc1a 100644
> --- a/drivers/net/designware.c
> +++ b/drivers/net/designware.c
> @@ -767,6 +767,31 @@ int designware_eth_probe(struct udevice *dev)
>       priv->bus = miiphy_get_dev_by_name(dev->name);
>       priv->dev = dev;
>  
> +#if defined(CONFIG_BITBANGMII) && CONFIG_IS_ENABLED(DM_GPIO)
> +     if (dev_read_bool(dev, "snps,bitbang-mii")) {
> +             debug("\n%s: use bitbang mii..\n", dev->name);
> +             ret = gpio_request_by_name(dev, "snps,mdc-gpio", 0,
> +                                &priv->mdc_gpio, GPIOD_IS_OUT | 
> GPIOD_IS_OUT_ACTIVE);
> +             if (ret) {
> +                     printf("no mdc-gpio\n");
> +                     return ret;
> +             }
> +             ret = gpio_request_by_name(dev, "snps,mdio-gpio", 0,
> +                                &priv->mdio_gpio, GPIOD_IS_OUT | 
> GPIOD_IS_OUT_ACTIVE);
> +             if (ret) {
> +                     printf("no mdio-gpio\n");
> +                     return ret;
> +             }
> +
> +             priv->bb_delay = dev_read_u32_default(dev, 
> "snps,bitbang-delay", 1);
> +
> +             bb_miiphy_buses[0].priv = priv;
> +             sprintf(bb_miiphy_buses[0].name, dev->name);

If designware_eth_probe() is called for multiple Ethernet interfaces
then only the last interface to be probed will have a working MDIO bus.

We should either support multiple buses here or raise an error if there
is an attempt to probe a second interface.

(I spotted the same issue in the ravb driver while extending it to
support a board with two Ethernet interfaces)

Thanks,
Paul

Attachment: signature.asc
Description: PGP signature

Reply via email to