[PATCH 2/9] net: fec: use device sequence vs index when fetching fec

Ramon Fried rfried.dev at gmail.com
Fri Jul 2 11:44:29 CEST 2021


On Thu, Jul 1, 2021 at 2:50 AM Tim Harvey <tharvey at gateworks.com> wrote:
>
> When using uclass_get_device* to get the FEC device we need to use
> device sequence instead of index into UCLASS_ETH. In systems where for
> example a I2C based DSA switch exists it will probe before the FEC
> master and its ports will be registered first and have the first
> indexes yet the FEC's sequence comes from the device-tree alias.
>
> Take for example the imx8mm-venice-gw7901 board which has an i2c based
> DSA switch:
>
> u-boot=> net list
> eth1 : lan1 00:0d:8d:aa:00:2f
> eth2 : lan2 00:0d:8d:aa:00:30
> eth3 : lan3 00:0d:8d:aa:00:31
> eth4 : lan4 00:0d:8d:aa:00:32
> eth0 : ethernet at 30be0000 00:0d:8d:aa:00:2e active
>
> Thus in this case uclass_get_device(UCLASS_ETH, 0, &dev) returns lan1
> which is wrong but uclass_get_device_seq(UCLASS_ETH, 0, &dev) returns
> ethernet at 30be000 which is correct.
>
> Signed-off-by: Tim Harvey <tharvey at gateworks.com>
> ---
>  drivers/net/fec_mxc.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c
> index 4fd5c01b4a..3abf914833 100644
> --- a/drivers/net/fec_mxc.c
> +++ b/drivers/net/fec_mxc.c
> @@ -146,7 +146,7 @@ static int fec_get_clk_rate(void *udev, int idx)
>             CONFIG_IS_ENABLED(CLK_CCF)) {
>                 dev = udev;
>                 if (!dev) {
> -                       ret = uclass_get_device(UCLASS_ETH, idx, &dev);
> +                       ret = uclass_get_device_by_seq(UCLASS_ETH, idx, &dev);
>                         if (ret < 0) {
>                                 debug("Can't get FEC udev: %d\n", ret);
>                                 return ret;
> --
> 2.17.1
>
Reviewed-by: Ramon Fried <rfried.dev at gmail.com>


More information about the U-Boot mailing list