1: 8bcfbb5c8b32 = 1: bc10d443d0bb wifi: rtw88: move the 88xxa CCK power detect setter to phy.c 2: 94093a3e5729 = 2: 9cba89318161 wifi: rtw88: 8723b: add the RTL8723B register definitions 3: bfcba33899a0 = 3: 0296a0788e46 wifi: rtw88: 8723b: add the RTL8723B BB, RF and AGC tables 4: a5a2a0b11d30 ! 4: 6d5c164f4640 wifi: rtw88: 8723b: add the RTL8723B chip driver @@ drivers/net/wireless/realtek/rtw88/rtw8723b.c (new)  + * Copyright(c) 2024-2026 Luka Gejak   + */  + -+#include   +#include "main.h"  +#include "coex.h"  +#include "fw.h" @@ drivers/net/wireless/realtek/rtw88/rtw8723b.c (new)  + dm_info->txagc_remnant_cck = 0;  +}  + -+static void rtw8723b_sdio_restore_pad_ctrl(struct rtw_dev *rtwdev, -+ bool keep_pta_owner) -+{ -+ u32 before; -+ u32 after; -+ -+ if (!rtw_is_8723bs(rtwdev)) -+ return; -+ -+ before = rtw_read32(rtwdev, REG_PAD_CTRL1); -+ after = before & ~(BIT_LNAON_WLBT_SEL | BIT_SW_DPDT_SEL_DATA); -+ if (keep_pta_owner) -+ after |= BIT_PAPE_WLBT_SEL; -+ else -+ after &= ~BIT_PAPE_WLBT_SEL; -+ if (after == before) -+ return; -+ -+ rtw_write32(rtwdev, REG_PAD_CTRL1, after); -+} -+  +static void rtw8723b_post_enable_flow(struct rtw_dev *rtwdev)  +{  + /* @@ drivers/net/wireless/realtek/rtw88/rtw8723b.c (new)  + COEX_SWITCH_TO_NOCARE);  +  + rtw_write32(rtwdev, REG_BB_SEL_BTG, ant_path); -+ rtw8723b_sdio_restore_pad_ctrl(rtwdev, -+ ctrl_type == COEX_SWITCH_CTRL_BY_PTA);  +  + rtw_dbg(rtwdev, RTW_DBG_COEX,  + "[BTCoex], 8723bs ant switch ctrl=%u pos=%u BB_SEL_BTG=0x%08x 0x4c=0x%08x 0x67=0x%02x 0x765=0x%02x 0x76e=0x%02x\n", @@ drivers/net/wireless/realtek/rtw88/rtw8723b.c (new)  + rtw_write8_mask(rtwdev, REG_PAD_CTRL1,  + BIT_SW_DPDT_SEL_DATA, 0x0);  + rtw8723b_coex_cfg_ant_buffer(rtwdev); -+ rtw8723b_sdio_restore_pad_ctrl(rtwdev, false);  +  + /* COEX_ANT_SEL_RSV is sent later from rtw_power_on(). */  + break; @@ drivers/net/wireless/realtek/rtw88/rtw8723b.c (new)  + struct rtw_tx_pkt_info *pkt_info,  + u8 *txdesc)  +{ -+ struct rtw_tx_desc *tx_desc = (struct rtw_tx_desc *)txdesc; -+ const u8 *data = txdesc; -+ int words = 32 / 2; -+ u16 checksum = 0; -+  + /* Unlike the shared 8723x helper, the checksum is not inverted here. */ -+ le32p_replace_bits(&tx_desc->w7, 0, RTW_TX_DESC_W7_TXDESC_CHECKSUM); -+ -+ while (words--) { -+ checksum ^= get_unaligned_le16(data); -+ data += sizeof(__le16); -+ } -+ -+ le32p_replace_bits(&tx_desc->w7, checksum, -+ RTW_TX_DESC_W7_TXDESC_CHECKSUM); ++ fill_txdesc_checksum_common(txdesc, 16);  +}  +  +static int rtw8723b_read_efuse(struct rtw_dev *rtwdev, u8 *log_map) 5: 3d2fcd3eb4be = 5: 9c5f1aa19205 wifi: rtw88: 8723bs: add the RTL8723BS SDIO bind 6: 360bbf9d0a6a = 6: 2e7d07374940 wifi: rtw88: 8723bs: enable building the RTL8723BS driver