RE: [PATCH 07/24] rtw89: add MAC files
From: Pkshih <pkshih@realtek.com>
Date: 2021-07-12 06:25:56
-----Original Message----- From: Oleksij Rempel [mailto:o.rempel@pengutronix.de] Sent: Saturday, July 10, 2021 1:38 AM To: Pkshih Cc: kvalo@codeaurora.org; linux-wireless@vger.kernel.org Subject: Re: [PATCH 07/24] rtw89: add MAC files On Fri, Jun 18, 2021 at 02:46:08PM +0800, Ping-Ke Shih wrote:quoted
Provide interfaces to access MAC function blocks including power-on/off configuration. MAC initialization does power-on, and then enable HCI to download firmware. The BB, RF, DMAC and CMAC function blocks are enabled, and then configure TXRX settings that contains DMAC, CMAC, interrupt mask, and RPQ parameters. DMAC is short for data MAC, including data link engine (DLE), HCI function control (HFC), MPDU processor, security engine and so on. CMAC is short for control MAC, including scheduler, address CAM, RX filter, CCA control, TMAC, RMAC, protocol component and so on. The full MAC initialization is done for normal use case when user does network interface up. When device is probing, driver does partial initialization to do power-on and download firmware, because we need to read hardware capabilities from efuse and firmware. MAC supports five ports, so we can have five VIFs at most. To control MAC port, we control a set of registers, and the most important one among them is port_cfg register named R_AX_PORT_CFG_P0. We can turn on/off the port function and configure network type (STA or AP mode) by this register. The address and BSSID corresponding to this port are given by address and BSSID CAM that is set by firmware via H2C command. Since BT coexistence code needs to access coex registers, some help functions are provided to make WiFi-only case work. To access MAC registers, normally we use rtw89_writeXX/rtw89_readYY, but we use rtw89_mac_txpwr_write32_ZZ to access TX power register with proper address range checking. Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> --- drivers/net/wireless/realtek/rtw89/mac.c | 4070 ++++++++++++++++++++++ drivers/net/wireless/realtek/rtw89/mac.h | 905 +++++ 2 files changed, 4975 insertions(+) create mode 100644 drivers/net/wireless/realtek/rtw89/mac.c create mode 100644 drivers/net/wireless/realtek/rtw89/mac.hdiff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c new file mode 100644 index 000000000000..e00652e11941 --- /dev/null +++ b/drivers/net/wireless/realtek/rtw89/mac.c@@ -0,0 +1,4070 @@
[...]
quoted
+u16 rtw89_mac_get_plt(struct rtw89_dev *rtwdev, u8 band) +{ + u32 reg; + u16 cnt; + + reg = rtw89_mac_reg_by_idx(R_AX_BT_PLT, band); + cnt = rtw89_read32_mask(rtwdev, reg, B_AX_BT_PLT_PKT_CNT_MASK); + rtw89_write16_set(rtwdev, reg, B_AX_BT_PLT_RST); + + return cnt; +}This function is not used, please remove.
OK. Will remove it. [...] If I miss any comment, please let me know. -- Ping-Ke