OSDN Git Service

wifi: rtw88: sdio: Add HCI implementation for SDIO based chipsets
authorMartin Blumenstingl <martin.blumenstingl@googlemail.com>
Wed, 5 Apr 2023 20:07:22 +0000 (22:07 +0200)
committerKalle Valo <kvalo@kernel.org>
Wed, 12 Apr 2023 12:51:08 +0000 (15:51 +0300)
commit65371a3f14e73979958aea0db1e3bb456a296149
treef93b04230f45364302c3afefe0633c878d67e3d7
parent6a92566088b1a37c1cf2c4b6b5fb733dc5bdc6a6
wifi: rtw88: sdio: Add HCI implementation for SDIO based chipsets

Add a sub-driver for SDIO based chipsets which implements the following
functionality:
- register accessors for 8, 16 and 32 bits for all states of the card
  (including usage of 4x 8 bit access for one 32 bit buffer if the card
  is not fully powered on yet - or if it's fully powered on then 1x 32
  bit access is used)
- checking whether there's space in the TX FIFO queue to transmit data
- transfers from the host to the device for actual network traffic,
  reserved pages (for firmware download) and H2C (host-to-card)
  transfers
- receiving data from the device
- deep power saving state

The transmit path is optimized so DMA-capable SDIO host controllers can
directly use the buffers provided because the buffer's physical
addresses are 8 byte aligned.

The receive path is prepared to support RX aggregation where the
chipset combines multiple MAC frames into one bigger buffer to reduce
SDIO transfer overhead.

Co-developed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Reviewed-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20230405200729.632435-3-martin.blumenstingl@googlemail.com
drivers/net/wireless/realtek/rtw88/Kconfig
drivers/net/wireless/realtek/rtw88/Makefile
drivers/net/wireless/realtek/rtw88/debug.h
drivers/net/wireless/realtek/rtw88/mac.c
drivers/net/wireless/realtek/rtw88/mac.h
drivers/net/wireless/realtek/rtw88/reg.h
drivers/net/wireless/realtek/rtw88/sdio.c [new file with mode: 0644]
drivers/net/wireless/realtek/rtw88/sdio.h [new file with mode: 0644]