mac.c (48ee4835b73c48590d05a54730dc8037ebd39d3b) | mac.c (861e58c8fc6be0e1319525b5e9a27a0d2e776210) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause 2/* Copyright(c) 2019-2020 Realtek Corporation 3 */ 4 5#include "cam.h" 6#include "debug.h" 7#include "fw.h" 8#include "mac.h" --- 467 unchanged lines hidden (view full) --- 476 477 rtw89_write32(rtwdev, R_AX_HALT_H2C, err); 478 rtw89_write32(rtwdev, R_AX_HALT_H2C_CTRL, B_AX_HALT_H2C_TRIGGER); 479 480 return 0; 481} 482EXPORT_SYMBOL(rtw89_mac_set_err_status); 483 | 1// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause 2/* Copyright(c) 2019-2020 Realtek Corporation 3 */ 4 5#include "cam.h" 6#include "debug.h" 7#include "fw.h" 8#include "mac.h" --- 467 unchanged lines hidden (view full) --- 476 477 rtw89_write32(rtwdev, R_AX_HALT_H2C, err); 478 rtw89_write32(rtwdev, R_AX_HALT_H2C_CTRL, B_AX_HALT_H2C_TRIGGER); 479 480 return 0; 481} 482EXPORT_SYMBOL(rtw89_mac_set_err_status); 483 |
484const struct rtw89_hfc_prec_cfg rtw_hfc_preccfg_pcie = { | 484const struct rtw89_hfc_prec_cfg rtw89_hfc_preccfg_pcie = { |
485 2, 40, 0, 0, 1, 0, 0, 0 486}; | 485 2, 40, 0, 0, 1, 0, 0, 0 486}; |
487EXPORT_SYMBOL(rtw89_hfc_preccfg_pcie); |
|
487 488static int hfc_reset_param(struct rtw89_dev *rtwdev) 489{ 490 struct rtw89_hfc_param *param = &rtwdev->mac.hfc_param; 491 struct rtw89_hfc_param_ini param_ini = {NULL}; 492 u8 qta_mode = rtwdev->mac.dle_info.qta_mode; 493 494 switch (rtwdev->hci.type) { --- 636 unchanged lines hidden (view full) --- 1131 ret = chip_func_en(rtwdev); 1132 if (ret) 1133 return ret; 1134 1135 return ret; 1136} 1137 1138/* PCIE 64 */ | 488 489static int hfc_reset_param(struct rtw89_dev *rtwdev) 490{ 491 struct rtw89_hfc_param *param = &rtwdev->mac.hfc_param; 492 struct rtw89_hfc_param_ini param_ini = {NULL}; 493 u8 qta_mode = rtwdev->mac.dle_info.qta_mode; 494 495 switch (rtwdev->hci.type) { --- 636 unchanged lines hidden (view full) --- 1132 ret = chip_func_en(rtwdev); 1133 if (ret) 1134 return ret; 1135 1136 return ret; 1137} 1138 1139/* PCIE 64 */ |
1139const struct rtw89_dle_size wde_size0 = { | 1140const struct rtw89_dle_size rtw89_wde_size0 = { |
1140 RTW89_WDE_PG_64, 4095, 1, 1141}; | 1141 RTW89_WDE_PG_64, 4095, 1, 1142}; |
1143EXPORT_SYMBOL(rtw89_wde_size0); |
|
1142 1143/* DLFW */ | 1144 1145/* DLFW */ |
1144const struct rtw89_dle_size wde_size4 = { | 1146const struct rtw89_dle_size rtw89_wde_size4 = { |
1145 RTW89_WDE_PG_64, 0, 4096, 1146}; | 1147 RTW89_WDE_PG_64, 0, 4096, 1148}; |
1149EXPORT_SYMBOL(rtw89_wde_size4); |
|
1147 1148/* PCIE */ | 1150 1151/* PCIE */ |
1149const struct rtw89_dle_size ple_size0 = { | 1152const struct rtw89_dle_size rtw89_ple_size0 = { |
1150 RTW89_PLE_PG_128, 1520, 16, 1151}; | 1153 RTW89_PLE_PG_128, 1520, 16, 1154}; |
1155EXPORT_SYMBOL(rtw89_ple_size0); |
|
1152 1153/* DLFW */ | 1156 1157/* DLFW */ |
1154const struct rtw89_dle_size ple_size4 = { | 1158const struct rtw89_dle_size rtw89_ple_size4 = { |
1155 RTW89_PLE_PG_128, 64, 1472, 1156}; | 1159 RTW89_PLE_PG_128, 64, 1472, 1160}; |
1161EXPORT_SYMBOL(rtw89_ple_size4); |
|
1157 1158/* PCIE 64 */ | 1162 1163/* PCIE 64 */ |
1159const struct rtw89_wde_quota wde_qt0 = { | 1164const struct rtw89_wde_quota rtw89_wde_qt0 = { |
1160 3792, 196, 0, 107, 1161}; | 1165 3792, 196, 0, 107, 1166}; |
1167EXPORT_SYMBOL(rtw89_wde_qt0); |
|
1162 1163/* DLFW */ | 1168 1169/* DLFW */ |
1164const struct rtw89_wde_quota wde_qt4 = { | 1170const struct rtw89_wde_quota rtw89_wde_qt4 = { |
1165 0, 0, 0, 0, 1166}; | 1171 0, 0, 0, 0, 1172}; |
1173EXPORT_SYMBOL(rtw89_wde_qt4); |
|
1167 1168/* PCIE SCC */ | 1174 1175/* PCIE SCC */ |
1169const struct rtw89_ple_quota ple_qt4 = { | 1176const struct rtw89_ple_quota rtw89_ple_qt4 = { |
1170 264, 0, 16, 20, 26, 13, 356, 0, 32, 40, 8, 1171}; | 1177 264, 0, 16, 20, 26, 13, 356, 0, 32, 40, 8, 1178}; |
1179EXPORT_SYMBOL(rtw89_ple_qt4); |
|
1172 1173/* PCIE SCC */ | 1180 1181/* PCIE SCC */ |
1174const struct rtw89_ple_quota ple_qt5 = { | 1182const struct rtw89_ple_quota rtw89_ple_qt5 = { |
1175 264, 0, 32, 20, 64, 13, 1101, 0, 64, 128, 120, 1176}; | 1183 264, 0, 32, 20, 64, 13, 1101, 0, 64, 128, 120, 1184}; |
1185EXPORT_SYMBOL(rtw89_ple_qt5); |
|
1177 1178/* DLFW */ | 1186 1187/* DLFW */ |
1179const struct rtw89_ple_quota ple_qt13 = { | 1188const struct rtw89_ple_quota rtw89_ple_qt13 = { |
1180 0, 0, 16, 48, 0, 0, 0, 0, 0, 0, 0 1181}; | 1189 0, 0, 16, 48, 0, 0, 0, 0, 0, 0, 0 1190}; |
1191EXPORT_SYMBOL(rtw89_ple_qt13); |
|
1182 1183static const struct rtw89_dle_mem *get_dle_mem_cfg(struct rtw89_dev *rtwdev, 1184 enum rtw89_qta_mode mode) 1185{ 1186 struct rtw89_mac_info *mac = &rtwdev->mac; 1187 const struct rtw89_dle_mem *cfg; 1188 1189 cfg = &rtwdev->chip->dle_mem[mode]; --- 921 unchanged lines hidden (view full) --- 2111 return ret; 2112 break; 2113 default: 2114 return 0; 2115 } 2116 2117 return 0; 2118} | 1192 1193static const struct rtw89_dle_mem *get_dle_mem_cfg(struct rtw89_dev *rtwdev, 1194 enum rtw89_qta_mode mode) 1195{ 1196 struct rtw89_mac_info *mac = &rtwdev->mac; 1197 const struct rtw89_dle_mem *cfg; 1198 1199 cfg = &rtwdev->chip->dle_mem[mode]; --- 921 unchanged lines hidden (view full) --- 2121 return ret; 2122 break; 2123 default: 2124 return 0; 2125 } 2126 2127 return 0; 2128} |
2129EXPORT_SYMBOL(rtw89_mac_stop_sch_tx); |
|
2119 2120int rtw89_mac_resume_sch_tx(struct rtw89_dev *rtwdev, u8 mac_idx, u16 tx_en) 2121{ 2122 int ret; 2123 2124 ret = rtw89_set_hw_sch_tx_en(rtwdev, mac_idx, tx_en, 0xffff); 2125 if (ret) 2126 return ret; 2127 2128 return 0; 2129} | 2130 2131int rtw89_mac_resume_sch_tx(struct rtw89_dev *rtwdev, u8 mac_idx, u16 tx_en) 2132{ 2133 int ret; 2134 2135 ret = rtw89_set_hw_sch_tx_en(rtwdev, mac_idx, tx_en, 0xffff); 2136 if (ret) 2137 return ret; 2138 2139 return 0; 2140} |
2141EXPORT_SYMBOL(rtw89_mac_resume_sch_tx); |
|
2130 2131static u16 rtw89_mac_dle_buf_req(struct rtw89_dev *rtwdev, u16 buf_len, 2132 bool wd) 2133{ 2134 u32 val, reg; 2135 int ret; 2136 2137 reg = wd ? R_AX_WD_BUF_REQ : R_AX_PL_BUF_REQ; --- 1049 unchanged lines hidden (view full) --- 3187 return true; 3188 3189error: 3190 rtw89_err(rtwdev, "[TXPWR] check txpwr cr 0x%x(phy%d) fail\n", 3191 addr, phy_idx); 3192 3193 return false; 3194} | 2142 2143static u16 rtw89_mac_dle_buf_req(struct rtw89_dev *rtwdev, u16 buf_len, 2144 bool wd) 2145{ 2146 u32 val, reg; 2147 int ret; 2148 2149 reg = wd ? R_AX_WD_BUF_REQ : R_AX_PL_BUF_REQ; --- 1049 unchanged lines hidden (view full) --- 3199 return true; 3200 3201error: 3202 rtw89_err(rtwdev, "[TXPWR] check txpwr cr 0x%x(phy%d) fail\n", 3203 addr, phy_idx); 3204 3205 return false; 3206} |
3207EXPORT_SYMBOL(rtw89_mac_get_txpwr_cr); |
|
3195 3196int rtw89_mac_cfg_ppdu_status(struct rtw89_dev *rtwdev, u8 mac_idx, bool enable) 3197{ 3198 u32 reg = rtw89_mac_reg_by_idx(R_AX_PPDU_STAT, mac_idx); 3199 int ret = 0; 3200 3201 ret = rtw89_mac_check_mac_en(rtwdev, mac_idx, RTW89_CMAC_SEL); 3202 if (ret) --- 8 unchanged lines hidden (view full) --- 3211 B_AX_APP_MAC_INFO_RPT | 3212 B_AX_APP_RX_CNT_RPT | B_AX_APP_PLCP_HDR_RPT | 3213 B_AX_PPDU_STAT_RPT_CRC32); 3214 rtw89_write32_mask(rtwdev, R_AX_HW_RPT_FWD, B_AX_FWD_PPDU_STAT_MASK, 3215 RTW89_PRPT_DEST_HOST); 3216 3217 return ret; 3218} | 3208 3209int rtw89_mac_cfg_ppdu_status(struct rtw89_dev *rtwdev, u8 mac_idx, bool enable) 3210{ 3211 u32 reg = rtw89_mac_reg_by_idx(R_AX_PPDU_STAT, mac_idx); 3212 int ret = 0; 3213 3214 ret = rtw89_mac_check_mac_en(rtwdev, mac_idx, RTW89_CMAC_SEL); 3215 if (ret) --- 8 unchanged lines hidden (view full) --- 3224 B_AX_APP_MAC_INFO_RPT | 3225 B_AX_APP_RX_CNT_RPT | B_AX_APP_PLCP_HDR_RPT | 3226 B_AX_PPDU_STAT_RPT_CRC32); 3227 rtw89_write32_mask(rtwdev, R_AX_HW_RPT_FWD, B_AX_FWD_PPDU_STAT_MASK, 3228 RTW89_PRPT_DEST_HOST); 3229 3230 return ret; 3231} |
3232EXPORT_SYMBOL(rtw89_mac_cfg_ppdu_status); |
|
3219 3220void rtw89_mac_update_rts_threshold(struct rtw89_dev *rtwdev, u8 mac_idx) 3221{ 3222#define MAC_AX_TIME_TH_SH 5 3223#define MAC_AX_LEN_TH_SH 4 3224#define MAC_AX_TIME_TH_MAX 255 3225#define MAC_AX_LEN_TH_MAX 255 3226#define MAC_AX_TIME_TH_DEF 88 --- 117 unchanged lines hidden (view full) --- 3344 rtw89_write8(rtwdev, R_AX_GPIO_MUXCFG + 1, val); 3345 break; 3346 default: 3347 return -EINVAL; 3348 } 3349 3350 return 0; 3351} | 3233 3234void rtw89_mac_update_rts_threshold(struct rtw89_dev *rtwdev, u8 mac_idx) 3235{ 3236#define MAC_AX_TIME_TH_SH 5 3237#define MAC_AX_LEN_TH_SH 4 3238#define MAC_AX_TIME_TH_MAX 255 3239#define MAC_AX_LEN_TH_MAX 255 3240#define MAC_AX_TIME_TH_DEF 88 --- 117 unchanged lines hidden (view full) --- 3358 rtw89_write8(rtwdev, R_AX_GPIO_MUXCFG + 1, val); 3359 break; 3360 default: 3361 return -EINVAL; 3362 } 3363 3364 return 0; 3365} |
3366EXPORT_SYMBOL(rtw89_mac_coex_init); |
|
3352 3353int rtw89_mac_cfg_gnt(struct rtw89_dev *rtwdev, 3354 const struct rtw89_mac_ax_coex_gnt *gnt_cfg) 3355{ 3356 u32 val, ret; 3357 3358 ret = rtw89_mac_read_lte(rtwdev, R_AX_LTE_SW_CFG_1, &val); 3359 if (ret) { --- 488 unchanged lines hidden --- | 3367 3368int rtw89_mac_cfg_gnt(struct rtw89_dev *rtwdev, 3369 const struct rtw89_mac_ax_coex_gnt *gnt_cfg) 3370{ 3371 u32 val, ret; 3372 3373 ret = rtw89_mac_read_lte(rtwdev, R_AX_LTE_SW_CFG_1, &val); 3374 if (ret) { --- 488 unchanged lines hidden --- |