Re: [PATCH] wifi: wfx: handle EPROBE_DEFER with of_get_mac_address
From: Jérôme Pouiller
Date: Mon Apr 27 2026 - 04:02:26 EST
Hello Rosen,
On Monday 27 April 2026 07:16:04 Central European Summer Time Rosen Penev wrote:
>
> In case nvmem gets used and is not ready in time for probe of wfx,
> EPROBE_DEFER gets called. Return it so that a proper MAC address can be
> specified in such a case.
>
> Signed-off-by: Rosen Penev <rosenp@xxxxxxxxx>
> ---
> drivers/net/wireless/silabs/wfx/main.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/net/wireless/silabs/wfx/main.c b/drivers/net/wireless/silabs/wfx/main.c
> index dda36e41eed1..dc40a9bd986d 100644
> --- a/drivers/net/wireless/silabs/wfx/main.c
> +++ b/drivers/net/wireless/silabs/wfx/main.c
> @@ -445,6 +445,8 @@ int wfx_probe(struct wfx_dev *wdev)
> for (i = 0; i < ARRAY_SIZE(wdev->addresses); i++) {
> eth_zero_addr(wdev->addresses[i].addr);
> err = of_get_mac_address(wdev->dev->of_node, wdev->addresses[i].addr);
> + if (err == -EPROBE_DEFER)
> + goto irq_unsubscribe;
> if (!err)
> wdev->addresses[i].addr[ETH_ALEN - 1] += i;
> else
I assume this patch works when WF200 is connected on SPI with reset GPIO
configured. However, for SDIO and without gpio reset, we can't run the
device initialisation twice.
I believe the check has to happen before the call to wfx_init_device().
To check it works as expected, can you also test your patch without the
reset-gpio attribute?
--
Jérôme Pouiller