public inbox for linux-wireless@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] wifi: wfx: handle EPROBE_DEFER with of_get_mac_address
@ 2026-04-27  5:16 Rosen Penev
  2026-04-27  7:49 ` Jérôme Pouiller
  0 siblings, 1 reply; 3+ messages in thread
From: Rosen Penev @ 2026-04-27  5:16 UTC (permalink / raw)
  To: linux-wireless; +Cc: Jérôme Pouiller, open list

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@gmail.com>
---
 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
-- 
2.54.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] wifi: wfx: handle EPROBE_DEFER with of_get_mac_address
  2026-04-27  5:16 [PATCH] wifi: wfx: handle EPROBE_DEFER with of_get_mac_address Rosen Penev
@ 2026-04-27  7:49 ` Jérôme Pouiller
  2026-04-27 19:31   ` Rosen Penev
  0 siblings, 1 reply; 3+ messages in thread
From: Jérôme Pouiller @ 2026-04-27  7:49 UTC (permalink / raw)
  To: linux-wireless@vger.kernel.org, Rosen Penev; +Cc: open list

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@gmail.com>
> ---
>  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



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] wifi: wfx: handle EPROBE_DEFER with of_get_mac_address
  2026-04-27  7:49 ` Jérôme Pouiller
@ 2026-04-27 19:31   ` Rosen Penev
  0 siblings, 0 replies; 3+ messages in thread
From: Rosen Penev @ 2026-04-27 19:31 UTC (permalink / raw)
  To: Jérôme Pouiller; +Cc: linux-wireless@vger.kernel.org, open list

On Mon, Apr 27, 2026 at 12:49 AM Jérôme Pouiller
<jerome.pouiller@silabs.com> wrote:
>
> 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@gmail.com>
> > ---
> >  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?
I do not have this hardware.
>
>
> --
> Jérôme Pouiller
>
>

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-04-27 19:31 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-27  5:16 [PATCH] wifi: wfx: handle EPROBE_DEFER with of_get_mac_address Rosen Penev
2026-04-27  7:49 ` Jérôme Pouiller
2026-04-27 19:31   ` Rosen Penev

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox