wifi: rtw89: mac: separate pre-init code before downloading firmware

Driver needs to initialize registers before downloading firmware, so
move pre-init part (power on) from original rtw89_mac_init(). The
consequence patches will add more pre-init codes before downloading
firmware.

Since rtw89_phy_init_bb_afe() is used by coming RTL8922D, don't change
logic at all for existing chips.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/20251114060128.35363-4-pkshih@realtek.com
This commit is contained in:
Ping-Ke Shih
2025-11-14 14:01:17 +08:00
parent 92db331de6
commit a2a64fe234
3 changed files with 20 additions and 4 deletions

View File

@@ -5617,8 +5617,16 @@ int rtw89_core_start(struct rtw89_dev *rtwdev)
{
int ret;
ret = rtw89_mac_preinit(rtwdev);
if (ret) {
rtw89_err(rtwdev, "mac preinit fail, ret: %d\n", ret);
return ret;
}
rtw89_phy_init_bb_afe(rtwdev);
/* above do preinit before downloading firmware */
ret = rtw89_mac_init(rtwdev);
if (ret) {
rtw89_err(rtwdev, "mac init fail, ret:%d\n", ret);

View File

@@ -4126,6 +4126,17 @@ int rtw89_mac_partial_init(struct rtw89_dev *rtwdev, bool include_bb)
return 0;
}
int rtw89_mac_preinit(struct rtw89_dev *rtwdev)
{
int ret;
ret = rtw89_mac_pwr_on(rtwdev);
if (ret)
return ret;
return 0;
}
int rtw89_mac_init(struct rtw89_dev *rtwdev)
{
const struct rtw89_mac_gen_def *mac = rtwdev->chip->mac_def;
@@ -4133,10 +4144,6 @@ int rtw89_mac_init(struct rtw89_dev *rtwdev)
bool include_bb = !!chip->bbmcu_nr;
int ret;
ret = rtw89_mac_pwr_on(rtwdev);
if (ret)
return ret;
ret = rtw89_mac_partial_init(rtwdev, include_bb);
if (ret)
goto fail;

View File

@@ -1201,6 +1201,7 @@ rtw89_write32_port_set(struct rtw89_dev *rtwdev, struct rtw89_vif_link *rtwvif_l
int rtw89_mac_pwr_on(struct rtw89_dev *rtwdev);
void rtw89_mac_pwr_off(struct rtw89_dev *rtwdev);
int rtw89_mac_partial_init(struct rtw89_dev *rtwdev, bool include_bb);
int rtw89_mac_preinit(struct rtw89_dev *rtwdev);
int rtw89_mac_init(struct rtw89_dev *rtwdev);
int rtw89_mac_dle_init(struct rtw89_dev *rtwdev, enum rtw89_qta_mode mode,
enum rtw89_qta_mode ext_mode);