Bitterblue Smith <rtl8821cerfe2@xxxxxxxxx> wrote: > Clear some bits in some registers in order to allow RTL8851BU to power > on. As your description, it should be called when going to power on, but called by both power on/off. However vendor driver did the same as yours. I'd keep it as was. Please mention this behavior is from vendor driver in commit message. > Also tested with RTL8832BU and RTL8832CU. > > Signed-off-by: Bitterblue Smith <rtl8821cerfe2@xxxxxxxxx> > --- > v2: > - Put the new code in a function. > --- > drivers/net/wireless/realtek/rtw89/mac.c | 20 ++++++++++++++++++++ > drivers/net/wireless/realtek/rtw89/reg.h | 1 + > 2 files changed, 21 insertions(+) > > diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c > index 875c1a3c5ca8..bccb504915f4 100644 > --- a/drivers/net/wireless/realtek/rtw89/mac.c > +++ b/drivers/net/wireless/realtek/rtw89/mac.c > @@ -1449,6 +1449,24 @@ void rtw89_mac_notify_wake(struct rtw89_dev *rtwdev) > rtw89_mac_send_rpwm(rtwdev, state, true); > } > > +static void rtw89_mac_power_switch_boot_mode(struct rtw89_dev *rtwdev) > +{ > + u32 boot_mode; > + > + if (rtwdev->hci.type != RTW89_HCI_TYPE_USB) I checked internal log that initiator of this change is for USB devices, but not check the HCI type though. > + return; > + > + boot_mode = rtw89_read32_mask(rtwdev, R_AX_GPIO_MUXCFG, B_AX_BOOT_MODE); > + No empty line between assignment and immediate checking. > + if (!boot_mode) > + return; > + > + rtw89_write32_clr(rtwdev, R_AX_SYS_PW_CTRL, B_AX_APFN_ONMAC); > + rtw89_write32_clr(rtwdev, R_AX_SYS_STATUS1, B_AX_AUTO_WLPON); > + rtw89_write32_clr(rtwdev, R_AX_GPIO_MUXCFG, B_AX_BOOT_MODE); > + rtw89_write32_clr(rtwdev, R_AX_RSV_CTRL, B_AX_R_DIS_PRST); > +} > +