]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: rtw89: mac: separate pre-init code before downloading firmware
authorPing-Ke Shih <pkshih@realtek.com>
Fri, 14 Nov 2025 06:01:17 +0000 (14:01 +0800)
committerPing-Ke Shih <pkshih@realtek.com>
Tue, 18 Nov 2025 01:17:39 +0000 (09:17 +0800)
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
drivers/net/wireless/realtek/rtw89/core.c
drivers/net/wireless/realtek/rtw89/mac.c
drivers/net/wireless/realtek/rtw89/mac.h

index a15a911484bbba19b64faef652fa8832294b3c30..0cabea7dd92bda3e23c45d457ad944dd0c11c4ae 100644 (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);
index dab0a76556c9ee41f54786ee2a418740fa8291d6..ff160d25a7c9d3372b0ae67a2644216c75b0c4d5 100644 (file)
@@ -4126,17 +4126,24 @@ int rtw89_mac_partial_init(struct rtw89_dev *rtwdev, bool include_bb)
        return 0;
 }
 
-int rtw89_mac_init(struct rtw89_dev *rtwdev)
+int rtw89_mac_preinit(struct rtw89_dev *rtwdev)
 {
-       const struct rtw89_mac_gen_def *mac = rtwdev->chip->mac_def;
-       const struct rtw89_chip_info *chip = rtwdev->chip;
-       bool include_bb = !!chip->bbmcu_nr;
        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;
+       const struct rtw89_chip_info *chip = rtwdev->chip;
+       bool include_bb = !!chip->bbmcu_nr;
+       int ret;
+
        ret = rtw89_mac_partial_init(rtwdev, include_bb);
        if (ret)
                goto fail;
index 3cc97fd0c0ec7562964a6ff1f6a56ee666e1623b..d203db444a3493e351210815a98f62c6680cef7b 100644 (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);