Recently the rtw88 driver has gained locking support for the "slow" bus types (USB, SDIO) as part of USB support. Thanks to everyone who helped make this happen! Based on the USB work (especially the locking part and various bugfixes) this series adds support for SDIO based cards. It's the result of a collaboration between Jernej and myself. Neither of us has access to the rtw88 datasheets. All of our work is based on studying the RTL8822BS and RTL8822CS vendor drivers and trial and error. Jernej and myself have tested this with RTL8822BS and RTL8822CS cards. Other users have confirmed that RTL8821CS support is working as well. RTL8723DS may also work (we tried our best to handle rtw_chip_wcpu_11n where needed) but has not been tested at this point. Jernej's results with a RTL8822BS: - Main functionality works - Had a case where no traffic got across the link until he issued a scan My results with a RTL8822CS: - 2.4GHz and 5GHz bands are both working - TX throughput on a 5GHz network is between 50 Mbit/s and 90 Mbit/s - RX throughput on a 5GHz network is at 19 Mbit/s - Sometimes there are frequent reconnects (once every 1-5 minutes) after the link has been up for a long time (multiple hours). Today I was unable to reproduce this though (I only had reconnect in 8 hours). Why is this an RFC? - It needs a through review especially by the rtw88 maintainers - It's not clear to me how the "mmc: sdio" patch will be merged (will Ulf take this or can we merge it thorugh the rtw88/linux wireless driver tree?) - Any comments / debugging hints on the reconnect / no traffic issues (see above) are welcome - My understanding is that there's a discussion about the rtw88 Kconfig symbols. We're adding four new ones within this series. It's not clear to me what the conclusion is on this topic though. - As with most patches: testing is very welcome. If things are working fine then a Tested-by is appreciated (with some details about the card, throughput, ...). If something doesn't work for you: please still report back so we can investigate that problem! Jernej Skrabec (2): rtw88: ps: Increase LEAVE_LPS_TRY_CNT for SDIO based chipsets rtw88: Add support for the SDIO based RTL8822BS chipset Martin Blumenstingl (17): rtw88: mac: Use existing interface mask macros in rtw_pwr_seq_parser() rtw88: pci: Change type of rtw_hw_queue_mapping() and ac_to_hwq to enum rtw88: pci: Change queue datatype from u8 to enum rtw_tx_queue_type rtw88: Move enum rtw_tx_queue_type mapping code to tx.{c,h} mmc: sdio: add Realtek SDIO vendor ID and various wifi device IDs rtw88: rtw8821c: Add support for parsing the RTL8821CS (SDIO) efuse rtw88: rtw8822b: Add support for parsing the RTL8822BS (SDIO) efuse rtw88: rtw8822c: Add support for parsing the RTL8822CS (SDIO) efuse rtw88: hci: Add an optional power_switch() callback to rtw_hci_ops rtw88: mac: Add support for the SDIO HCI in rtw_pwr_seq_parser() rtw88: mac: Add support for the SDIO HCI in the TX/page table setup rtw88: sdio: Add HCI implementation for SDIO based chipsets rtw88: mac: Add support for SDIO specifics in the power on sequence rtw88: main: Add the rpwm_addr and cpwm_addr for SDIO based chipsets rtw88: main: Reserve 8 bytes of extra TX headroom for SDIO based cards rtw88: Add support for the SDIO based RTL8822CS chipset rtw88: Add support for the SDIO based RTL8821CS chipset drivers/net/wireless/realtek/rtw88/Kconfig | 36 + drivers/net/wireless/realtek/rtw88/Makefile | 12 + drivers/net/wireless/realtek/rtw88/debug.h | 1 + drivers/net/wireless/realtek/rtw88/hci.h | 8 + drivers/net/wireless/realtek/rtw88/mac.c | 62 +- drivers/net/wireless/realtek/rtw88/mac.h | 1 - drivers/net/wireless/realtek/rtw88/main.c | 9 +- drivers/net/wireless/realtek/rtw88/pci.c | 50 +- drivers/net/wireless/realtek/rtw88/ps.h | 2 +- drivers/net/wireless/realtek/rtw88/reg.h | 10 + drivers/net/wireless/realtek/rtw88/rtw8821c.c | 9 + drivers/net/wireless/realtek/rtw88/rtw8821c.h | 6 + .../net/wireless/realtek/rtw88/rtw8821cs.c | 34 + drivers/net/wireless/realtek/rtw88/rtw8822b.c | 10 + drivers/net/wireless/realtek/rtw88/rtw8822b.h | 6 + .../net/wireless/realtek/rtw88/rtw8822bs.c | 34 + drivers/net/wireless/realtek/rtw88/rtw8822c.c | 9 + drivers/net/wireless/realtek/rtw88/rtw8822c.h | 6 + .../net/wireless/realtek/rtw88/rtw8822cs.c | 34 + drivers/net/wireless/realtek/rtw88/sdio.c | 1242 +++++++++++++++++ drivers/net/wireless/realtek/rtw88/sdio.h | 175 +++ drivers/net/wireless/realtek/rtw88/tx.c | 41 + drivers/net/wireless/realtek/rtw88/tx.h | 3 + include/linux/mmc/sdio_ids.h | 9 + 24 files changed, 1763 insertions(+), 46 deletions(-) create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8821cs.c create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8822bs.c create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8822cs.c create mode 100644 drivers/net/wireless/realtek/rtw88/sdio.c create mode 100644 drivers/net/wireless/realtek/rtw88/sdio.h -- 2.39.0