The PCI code of 8852CE is different from 8852AE. The IMR/ISR addresses are different, and 8852CE has a special low power mode that uses another set of addresses. To handle the special mode, we add a special interrupt threadfn to handle packets, because regular NAPI poll function does many things that can't access at this mode. Another special handle is RPP (TX skb completion) prior to TX BD (TX ring completion). In low mode power, it can be possible, so we extend the code to handle this case as well as normal mode. Patch 3/14 is to optimize count of reading IO, and patch 8/14 is to resolve some warnings happened on 8852ce, because PCI ring registers are power-off after running power-off function. These registers on 8852ae aren't power-off. Patches 9/14-14/14 are to add chip ops of 8852c as description of the patches individually. Ping-Ke Shih (14): rtw89: pci: add variant IMR/ISR and configure functions rtw89: pci: add variant RPWM/CPWM to enter low power mode rtw89: pci: reclaim TX BD only if it really need rtw89: pci: does RX in interrupt threadfn if low power mode rtw89: ser: re-enable interrupt in threadfn if under_recovery rtw89: ps: access TX/RX rings via another registers in low power mode rtw89: pci: allow to process RPP prior to TX BD rtw89: don't flush hci queues and send h2c if power is off rtw89: add RF H2C to notify firmware rtw89: 8852c: configure default BB TX/RX path rtw89: 8852c: implement chip_ops related to TX power rtw89: 8852c: implement chip_ops::get_thermal rtw89: 8852c: fill freq and band of RX status by PPDU report rtw89: 8852c: add chip_ops related to BTC drivers/net/wireless/realtek/rtw89/core.c | 10 + drivers/net/wireless/realtek/rtw89/core.h | 34 + drivers/net/wireless/realtek/rtw89/fw.c | 39 + drivers/net/wireless/realtek/rtw89/fw.h | 12 + drivers/net/wireless/realtek/rtw89/mac.c | 6 +- drivers/net/wireless/realtek/rtw89/pci.c | 339 ++++++-- drivers/net/wireless/realtek/rtw89/pci.h | 144 ++++ drivers/net/wireless/realtek/rtw89/phy.c | 1 + drivers/net/wireless/realtek/rtw89/ps.c | 34 +- drivers/net/wireless/realtek/rtw89/reg.h | 83 +- drivers/net/wireless/realtek/rtw89/rtw8852a.c | 2 + .../net/wireless/realtek/rtw89/rtw8852ae.c | 8 + drivers/net/wireless/realtek/rtw89/rtw8852c.c | 766 ++++++++++++++++++ drivers/net/wireless/realtek/rtw89/rtw8852c.h | 1 + .../net/wireless/realtek/rtw89/rtw8852ce.c | 16 + 15 files changed, 1438 insertions(+), 57 deletions(-) -- 2.25.1