On Tue, Feb 27, 2024 at 02:18:20PM +0200, Bitterblue Smith wrote: > RTL8822CU, RTL8822BU, and RTL8821CU need an extra register write after > reading and writing certain addresses. > > Without this, the firmware upload fails approximately more than 50% of > the time. Great stuff. I have seen these firmware upload failures as well and couldn't make any sense of it. > > Tested with RTL8811CU (Tenda U9 V2.0) which is the same as RTL8821CU > but without Bluetooth. > > Fixes: a82dfd33d123 ("wifi: rtw88: Add common USB chip support") > Signed-off-by: Bitterblue Smith <rtl8821cerfe2@xxxxxxxxx> > --- > drivers/net/wireless/realtek/rtw88/usb.c | 46 ++++++++++++++++++++++++ > 1 file changed, 46 insertions(+) > > diff --git a/drivers/net/wireless/realtek/rtw88/usb.c b/drivers/net/wireless/realtek/rtw88/usb.c > index 3c4f28c306a9..ff01f7056ca9 100644 > --- a/drivers/net/wireless/realtek/rtw88/usb.c > +++ b/drivers/net/wireless/realtek/rtw88/usb.c > @@ -33,6 +33,42 @@ static void rtw_usb_fill_tx_checksum(struct rtw_usb *rtwusb, > rtw_tx_fill_txdesc_checksum(rtwdev, &pkt_info, skb->data); > } > > +#define REG_ON_SEC 0x00 > +#define REG_OFF_SEC 0x01 > +#define REG_LOCAL_SEC 0x02 > + > +static void rtw_usb_reg_sec(struct rtw_dev *rtwdev, u32 addr, __le32 *data) > +{ > + struct rtw_usb *rtwusb = rtw_get_usb_priv(rtwdev); > + struct usb_device *udev = rtwusb->udev; > + u8 current_reg_sec; > + u16 t_reg = 0x4e0; > + u8 t_len = 1; > + int status; > + > + if (addr < 0xFE00) { > + if (addr <= 0xff) > + current_reg_sec = REG_ON_SEC; > + else if (0x1000 <= addr && addr <= 0x10ff) > + current_reg_sec = REG_ON_SEC; > + else > + current_reg_sec = REG_OFF_SEC; > + } else { > + current_reg_sec = REG_LOCAL_SEC; > + } > + > + if (current_reg_sec != REG_ON_SEC) > + return; Is there something we want to do with current_reg_sec == REG_LOCAL_SEC or current_reg_sec == REG_OFF_SEC later? If not the above could be rewritten as: if (addr > 0xff && addr < 0x1000) return; if (addr > 0x10ff) return; ... Sascha -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |