* [PATCH 2/2] wifi: mt76: mt792x: fix mt7925u USB WFSYS reset handling [not found] <20260311002825.15502-1-sean.wang@kernel.org> @ 2026-03-11 0:28 ` Sean Wang 2026-03-11 16:14 ` Nick 0 siblings, 1 reply; 4+ messages in thread From: Sean Wang @ 2026-03-11 0:28 UTC (permalink / raw) To: nbd, lorenzo.bianconi; +Cc: linux-wireless, linux-mediatek, Sean Wang, stable From: Sean Wang <sean.wang@mediatek.com> mt7925u uses different reset/status registers from mt7921u. Reusing the mt7921u register set causes the WFSYS reset to fail. Add a chip-specific descriptor in mt792xu_wfsys_reset() to select the correct registers and fix mt7925u failing to initialize after a warm reboot. Fixes: d28e1a48952e ("wifi: mt76: mt792x: introduce mt792x-usb module") Cc: stable@vger.kernel.org Signed-off-by: Sean Wang <sean.wang@mediatek.com> --- drivers/net/wireless/mediatek/mt76/mt792x_regs.h | 4 ++++ drivers/net/wireless/mediatek/mt76/mt792x_usb.c | 13 ++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt792x_regs.h b/drivers/net/wireless/mediatek/mt76/mt792x_regs.h index 7ddde9286861..d2a8b2b0df32 100644 --- a/drivers/net/wireless/mediatek/mt76/mt792x_regs.h +++ b/drivers/net/wireless/mediatek/mt76/mt792x_regs.h @@ -392,6 +392,10 @@ #define MT_CBTOP_RGU_WF_SUBSYS_RST MT_CBTOP_RGU(0x600) #define MT_CBTOP_RGU_WF_SUBSYS_RST_WF_WHOLE_PATH BIT(0) +#define MT7925_CBTOP_RGU_WF_SUBSYS_RST 0x70028600 +#define MT7925_WFSYS_INIT_DONE_ADDR 0x184c1604 +#define MT7925_WFSYS_INIT_DONE 0x00001d1e + #define MT_HW_BOUND 0x70010020 #define MT_HW_CHIPID 0x70010200 #define MT_HW_REV 0x70010204 diff --git a/drivers/net/wireless/mediatek/mt76/mt792x_usb.c b/drivers/net/wireless/mediatek/mt76/mt792x_usb.c index a92e872226cf..47827d1c5ccb 100644 --- a/drivers/net/wireless/mediatek/mt76/mt792x_usb.c +++ b/drivers/net/wireless/mediatek/mt76/mt792x_usb.c @@ -224,6 +224,15 @@ static const struct mt792xu_wfsys_desc mt7921_wfsys_desc = { .need_status_sel = true, }; +static const struct mt792xu_wfsys_desc mt7925_wfsys_desc = { + .rst_reg = MT7925_CBTOP_RGU_WF_SUBSYS_RST, + .done_reg = MT7925_WFSYS_INIT_DONE_ADDR, + .done_mask = U32_MAX, + .done_val = MT7925_WFSYS_INIT_DONE, + .delay_ms = 20, + .need_status_sel = false, +}; + int mt792xu_dma_init(struct mt792x_dev *dev, bool resume) { int err; @@ -254,7 +263,9 @@ EXPORT_SYMBOL_GPL(mt792xu_dma_init); int mt792xu_wfsys_reset(struct mt792x_dev *dev) { - const struct mt792xu_wfsys_desc *desc = &mt7921_wfsys_desc; + const struct mt792xu_wfsys_desc *desc = is_mt7925(&dev->mt76) ? + &mt7925_wfsys_desc : + &mt7921_wfsys_desc; u32 val; int i; -- 2.43.0 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 2/2] wifi: mt76: mt792x: fix mt7925u USB WFSYS reset handling 2026-03-11 0:28 ` [PATCH 2/2] wifi: mt76: mt792x: fix mt7925u USB WFSYS reset handling Sean Wang @ 2026-03-11 16:14 ` Nick [not found] ` <CAFrh3J-PsVQ1u_hGFxTVKK0uOs6KxT=euK+jbGvWCueqvynAgw@mail.gmail.com> 0 siblings, 1 reply; 4+ messages in thread From: Nick @ 2026-03-11 16:14 UTC (permalink / raw) To: Sean Wang Cc: nbd, lorenzo.bianconi, linux-wireless, linux-mediatek, Sean Wang, stable, Satadru Pramanik > From: Sean Wang <sean.wang@mediatek.com> > > mt7925u uses different reset/status registers from mt7921u. Reusing the > mt7921u register set causes the WFSYS reset to fail. > > Add a chip-specific descriptor in mt792xu_wfsys_reset() to select the > correct registers and fix mt7925u failing to initialize after a warm > reboot. > > Fixes: d28e1a48952e ("wifi: mt76: mt792x: introduce mt792x-usb module") > Cc: stable@vger.kernel.org > Signed-off-by: Sean Wang <sean.wang@mediatek.com> > --- > drivers/net/wireless/mediatek/mt76/mt792x_regs.h | 4 ++++ > drivers/net/wireless/mediatek/mt76/mt792x_usb.c | 13 ++++++++++++- > 2 files changed, 16 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/wireless/mediatek/mt76/mt792x_regs.h b/drivers/net/wireless/mediatek/mt76/mt792x_regs.h > index 7ddde9286861..d2a8b2b0df32 100644 > --- a/drivers/net/wireless/mediatek/mt76/mt792x_regs.h > +++ b/drivers/net/wireless/mediatek/mt76/mt792x_regs.h > @@ -392,6 +392,10 @@ > #define MT_CBTOP_RGU_WF_SUBSYS_RST MT_CBTOP_RGU(0x600) > #define MT_CBTOP_RGU_WF_SUBSYS_RST_WF_WHOLE_PATH BIT(0) > > +#define MT7925_CBTOP_RGU_WF_SUBSYS_RST 0x70028600 > +#define MT7925_WFSYS_INIT_DONE_ADDR 0x184c1604 > +#define MT7925_WFSYS_INIT_DONE 0x00001d1e > + > #define MT_HW_BOUND 0x70010020 > #define MT_HW_CHIPID 0x70010200 > #define MT_HW_REV 0x70010204 > diff --git a/drivers/net/wireless/mediatek/mt76/mt792x_usb.c b/drivers/net/wireless/mediatek/mt76/mt792x_usb.c > index a92e872226cf..47827d1c5ccb 100644 > --- a/drivers/net/wireless/mediatek/mt76/mt792x_usb.c > +++ b/drivers/net/wireless/mediatek/mt76/mt792x_usb.c > @@ -224,6 +224,15 @@ static const struct mt792xu_wfsys_desc mt7921_wfsys_desc = { > .need_status_sel = true, > }; > > +static const struct mt792xu_wfsys_desc mt7925_wfsys_desc = { > + .rst_reg = MT7925_CBTOP_RGU_WF_SUBSYS_RST, > + .done_reg = MT7925_WFSYS_INIT_DONE_ADDR, > + .done_mask = U32_MAX, > + .done_val = MT7925_WFSYS_INIT_DONE, > + .delay_ms = 20, > + .need_status_sel = false, > +}; > + > int mt792xu_dma_init(struct mt792x_dev *dev, bool resume) > { > int err; > @@ -254,7 +263,9 @@ EXPORT_SYMBOL_GPL(mt792xu_dma_init); > > int mt792xu_wfsys_reset(struct mt792x_dev *dev) > { > - const struct mt792xu_wfsys_desc *desc = &mt7921_wfsys_desc; > + const struct mt792xu_wfsys_desc *desc = is_mt7925(&dev->mt76) ? > + &mt7925_wfsys_desc : > + &mt7921_wfsys_desc; > u32 val; > int i; > > -- > 2.43.0 > Sean, testing results from: Satadru Pramanik <satadru@gmail.com> "The updated patches from https://patchwork.kernel.org/project/linux-wireless/list/?series=1064695 do NOT work. I get the -110 error with them on a warm reboot. Reverting to the kernel with the older patch restores my adapter connection on a warm reboot." You are welcome to stop by the Github issue where this issue is being discussed: https://github.com/morrownr/USB-WiFi/issues/688# Nick ^ permalink raw reply [flat|nested] 4+ messages in thread
[parent not found: <CAFrh3J-PsVQ1u_hGFxTVKK0uOs6KxT=euK+jbGvWCueqvynAgw@mail.gmail.com>]
* Re: [PATCH 2/2] wifi: mt76: mt792x: fix mt7925u USB WFSYS reset handling [not found] ` <CAFrh3J-PsVQ1u_hGFxTVKK0uOs6KxT=euK+jbGvWCueqvynAgw@mail.gmail.com> @ 2026-03-11 18:15 ` Satadru Pramanik 2026-03-15 23:56 ` Nick 0 siblings, 1 reply; 4+ messages in thread From: Satadru Pramanik @ 2026-03-11 18:15 UTC (permalink / raw) To: Nick Cc: Sean Wang, nbd, lorenzo.bianconi, linux-wireless, linux-mediatek, Sean Wang, stable After rebuilding the kernel with 7.0-rc3 and the two patches at https://patchwork.kernel.org/project/linux-wireless/list/?series=1064695, I can confirm that after a warm reboot booted from that kernel, the mt7925u-based adapter is once again visible. Thanks! Regards, Satadru Pramanik On Wed, Mar 11, 2026 at 12:42 PM Satadru Pramanik <satadru@gmail.com> wrote: > > Hello all, I'm rebuilding this kernel one more time in case I mispatched, and will let you know shortly if a new kernel build works. > > Regards, > > Satadru > > On Wed, Mar 11, 2026 at 12:15 PM Nick <morrownr@gmail.com> wrote: >> >> > From: Sean Wang <sean.wang@mediatek.com> >> > >> > mt7925u uses different reset/status registers from mt7921u. Reusing the >> > mt7921u register set causes the WFSYS reset to fail. >> > >> > Add a chip-specific descriptor in mt792xu_wfsys_reset() to select the >> > correct registers and fix mt7925u failing to initialize after a warm >> > reboot. >> > >> > Fixes: d28e1a48952e ("wifi: mt76: mt792x: introduce mt792x-usb module") >> > Cc: stable@vger.kernel.org >> > Signed-off-by: Sean Wang <sean.wang@mediatek.com> >> > --- >> > drivers/net/wireless/mediatek/mt76/mt792x_regs.h | 4 ++++ >> > drivers/net/wireless/mediatek/mt76/mt792x_usb.c | 13 ++++++++++++- >> > 2 files changed, 16 insertions(+), 1 deletion(-) >> > >> > diff --git a/drivers/net/wireless/mediatek/mt76/mt792x_regs.h b/drivers/net/wireless/mediatek/mt76/mt792x_regs.h >> > index 7ddde9286861..d2a8b2b0df32 100644 >> > --- a/drivers/net/wireless/mediatek/mt76/mt792x_regs.h >> > +++ b/drivers/net/wireless/mediatek/mt76/mt792x_regs.h >> > @@ -392,6 +392,10 @@ >> > #define MT_CBTOP_RGU_WF_SUBSYS_RST MT_CBTOP_RGU(0x600) >> > #define MT_CBTOP_RGU_WF_SUBSYS_RST_WF_WHOLE_PATH BIT(0) >> > >> > +#define MT7925_CBTOP_RGU_WF_SUBSYS_RST 0x70028600 >> > +#define MT7925_WFSYS_INIT_DONE_ADDR 0x184c1604 >> > +#define MT7925_WFSYS_INIT_DONE 0x00001d1e >> > + >> > #define MT_HW_BOUND 0x70010020 >> > #define MT_HW_CHIPID 0x70010200 >> > #define MT_HW_REV 0x70010204 >> > diff --git a/drivers/net/wireless/mediatek/mt76/mt792x_usb.c b/drivers/net/wireless/mediatek/mt76/mt792x_usb.c >> > index a92e872226cf..47827d1c5ccb 100644 >> > --- a/drivers/net/wireless/mediatek/mt76/mt792x_usb.c >> > +++ b/drivers/net/wireless/mediatek/mt76/mt792x_usb.c >> > @@ -224,6 +224,15 @@ static const struct mt792xu_wfsys_desc mt7921_wfsys_desc = { >> > .need_status_sel = true, >> > }; >> > >> > +static const struct mt792xu_wfsys_desc mt7925_wfsys_desc = { >> > + .rst_reg = MT7925_CBTOP_RGU_WF_SUBSYS_RST, >> > + .done_reg = MT7925_WFSYS_INIT_DONE_ADDR, >> > + .done_mask = U32_MAX, >> > + .done_val = MT7925_WFSYS_INIT_DONE, >> > + .delay_ms = 20, >> > + .need_status_sel = false, >> > +}; >> > + >> > int mt792xu_dma_init(struct mt792x_dev *dev, bool resume) >> > { >> > int err; >> > @@ -254,7 +263,9 @@ EXPORT_SYMBOL_GPL(mt792xu_dma_init); >> > >> > int mt792xu_wfsys_reset(struct mt792x_dev *dev) >> > { >> > - const struct mt792xu_wfsys_desc *desc = &mt7921_wfsys_desc; >> > + const struct mt792xu_wfsys_desc *desc = is_mt7925(&dev->mt76) ? >> > + &mt7925_wfsys_desc : >> > + &mt7921_wfsys_desc; >> > u32 val; >> > int i; >> > >> > -- >> > 2.43.0 >> > >> >> Sean, testing results from: Satadru Pramanik <satadru@gmail.com> >> >> "The updated patches from >> https://patchwork.kernel.org/project/linux-wireless/list/?series=1064695 >> do NOT work. I get the -110 error with them on a warm reboot. >> Reverting to the kernel with the older patch restores my adapter >> connection on a warm reboot." >> >> You are welcome to stop by the Github issue where this issue is being discussed: >> >> https://github.com/morrownr/USB-WiFi/issues/688# >> >> Nick ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 2/2] wifi: mt76: mt792x: fix mt7925u USB WFSYS reset handling 2026-03-11 18:15 ` Satadru Pramanik @ 2026-03-15 23:56 ` Nick 0 siblings, 0 replies; 4+ messages in thread From: Nick @ 2026-03-15 23:56 UTC (permalink / raw) To: Satadru Pramanik Cc: Sean Wang, nbd, lorenzo.bianconi, linux-wireless, linux-mediatek, Sean Wang, stable > >> > From: Sean Wang <sean.wang@mediatek.com> > >> > > >> > mt7925u uses different reset/status registers from mt7921u. Reusing the > >> > mt7921u register set causes the WFSYS reset to fail. > >> > > >> > Add a chip-specific descriptor in mt792xu_wfsys_reset() to select the > >> > correct registers and fix mt7925u failing to initialize after a warm > >> > reboot. > >> > > >> > Fixes: d28e1a48952e ("wifi: mt76: mt792x: introduce mt792x-usb module") > >> > Cc: stable@vger.kernel.org > >> > Signed-off-by: Sean Wang <sean.wang@mediatek.com> > >> > --- > >> > drivers/net/wireless/mediatek/mt76/mt792x_regs.h | 4 ++++ > >> > drivers/net/wireless/mediatek/mt76/mt792x_usb.c | 13 ++++++++++++- > >> > 2 files changed, 16 insertions(+), 1 deletion(-) > >> > > >> > diff --git a/drivers/net/wireless/mediatek/mt76/mt792x_regs.h b/drivers/net/wireless/mediatek/mt76/mt792x_regs.h > >> > index 7ddde9286861..d2a8b2b0df32 100644 > >> > --- a/drivers/net/wireless/mediatek/mt76/mt792x_regs.h > >> > +++ b/drivers/net/wireless/mediatek/mt76/mt792x_regs.h > >> > @@ -392,6 +392,10 @@ > >> > #define MT_CBTOP_RGU_WF_SUBSYS_RST MT_CBTOP_RGU(0x600) > >> > #define MT_CBTOP_RGU_WF_SUBSYS_RST_WF_WHOLE_PATH BIT(0) > >> > > >> > +#define MT7925_CBTOP_RGU_WF_SUBSYS_RST 0x70028600 > >> > +#define MT7925_WFSYS_INIT_DONE_ADDR 0x184c1604 > >> > +#define MT7925_WFSYS_INIT_DONE 0x00001d1e > >> > + > >> > #define MT_HW_BOUND 0x70010020 > >> > #define MT_HW_CHIPID 0x70010200 > >> > #define MT_HW_REV 0x70010204 > >> > diff --git a/drivers/net/wireless/mediatek/mt76/mt792x_usb.c b/drivers/net/wireless/mediatek/mt76/mt792x_usb.c > >> > index a92e872226cf..47827d1c5ccb 100644 > >> > --- a/drivers/net/wireless/mediatek/mt76/mt792x_usb.c > >> > +++ b/drivers/net/wireless/mediatek/mt76/mt792x_usb.c > >> > @@ -224,6 +224,15 @@ static const struct mt792xu_wfsys_desc mt7921_wfsys_desc = { > >> > .need_status_sel = true, > >> > }; > >> > > >> > +static const struct mt792xu_wfsys_desc mt7925_wfsys_desc = { > >> > + .rst_reg = MT7925_CBTOP_RGU_WF_SUBSYS_RST, > >> > + .done_reg = MT7925_WFSYS_INIT_DONE_ADDR, > >> > + .done_mask = U32_MAX, > >> > + .done_val = MT7925_WFSYS_INIT_DONE, > >> > + .delay_ms = 20, > >> > + .need_status_sel = false, > >> > +}; > >> > + > >> > int mt792xu_dma_init(struct mt792x_dev *dev, bool resume) > >> > { > >> > int err; > >> > @@ -254,7 +263,9 @@ EXPORT_SYMBOL_GPL(mt792xu_dma_init); > >> > > >> > int mt792xu_wfsys_reset(struct mt792x_dev *dev) > >> > { > >> > - const struct mt792xu_wfsys_desc *desc = &mt7921_wfsys_desc; > >> > + const struct mt792xu_wfsys_desc *desc = is_mt7925(&dev->mt76) ? > >> > + &mt7925_wfsys_desc : > >> > + &mt7921_wfsys_desc; > >> > u32 val; > >> > int i; > >> > > >> > -- > >> > 2.43.0 Sean, I have been testing this series of 2 patches for the last two days. I am no longer seeing problems with warm boot so: Tested-by: Nick Morrow <morrownr@gmail.com> Thanks. ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-03-15 23:56 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20260311002825.15502-1-sean.wang@kernel.org>
2026-03-11 0:28 ` [PATCH 2/2] wifi: mt76: mt792x: fix mt7925u USB WFSYS reset handling Sean Wang
2026-03-11 16:14 ` Nick
[not found] ` <CAFrh3J-PsVQ1u_hGFxTVKK0uOs6KxT=euK+jbGvWCueqvynAgw@mail.gmail.com>
2026-03-11 18:15 ` Satadru Pramanik
2026-03-15 23:56 ` Nick
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox