mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 19:13:47 +02:00
wifi: rtw89: coex: update scoreboard value according to power state for two BT
Assign timeslot to WiFi if power state is on. Since firmware isn't working at this moment, write scoreboard register to notify BT. Extend the code to support two BT for coming chips. Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> Link: https://patch.msgid.link/20260108120320.2217402-3-pkshih@realtek.com
This commit is contained in:
parent
95052ab2d7
commit
ed2feda12f
|
|
@ -1492,13 +1492,27 @@ static int rtw89_mac_pwr_off_func_for_unplugged(struct rtw89_dev *rtwdev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void rtw89_mac_update_scoreboard(struct rtw89_dev *rtwdev, u8 val)
|
||||
{
|
||||
const struct rtw89_chip_info *chip = rtwdev->chip;
|
||||
u32 reg;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(chip->btc_sb.n); i++) {
|
||||
reg = chip->btc_sb.n[i].cfg;
|
||||
if (!reg)
|
||||
continue;
|
||||
|
||||
rtw89_write8(rtwdev, reg + 3, val);
|
||||
}
|
||||
}
|
||||
|
||||
static int rtw89_mac_power_switch(struct rtw89_dev *rtwdev, bool on)
|
||||
{
|
||||
const struct rtw89_mac_gen_def *mac = rtwdev->chip->mac_def;
|
||||
const struct rtw89_chip_info *chip = rtwdev->chip;
|
||||
const struct rtw89_pwr_cfg * const *cfg_seq;
|
||||
int (*cfg_func)(struct rtw89_dev *rtwdev);
|
||||
u32 reg = chip->btc_sb.n[0].cfg;
|
||||
int ret;
|
||||
|
||||
rtw89_mac_power_switch_boot_mode(rtwdev);
|
||||
|
|
@ -1538,14 +1552,16 @@ static int rtw89_mac_power_switch(struct rtw89_dev *rtwdev, bool on)
|
|||
set_bit(RTW89_FLAG_POWERON, rtwdev->flags);
|
||||
set_bit(RTW89_FLAG_DMAC_FUNC, rtwdev->flags);
|
||||
set_bit(RTW89_FLAG_CMAC0_FUNC, rtwdev->flags);
|
||||
rtw89_write8(rtwdev, reg + 3, MAC_AX_NOTIFY_TP_MAJOR);
|
||||
|
||||
rtw89_mac_update_scoreboard(rtwdev, MAC_AX_NOTIFY_TP_MAJOR);
|
||||
} else {
|
||||
clear_bit(RTW89_FLAG_POWERON, rtwdev->flags);
|
||||
clear_bit(RTW89_FLAG_DMAC_FUNC, rtwdev->flags);
|
||||
clear_bit(RTW89_FLAG_CMAC0_FUNC, rtwdev->flags);
|
||||
clear_bit(RTW89_FLAG_CMAC1_FUNC, rtwdev->flags);
|
||||
clear_bit(RTW89_FLAG_FW_RDY, rtwdev->flags);
|
||||
rtw89_write8(rtwdev, reg + 3, MAC_AX_NOTIFY_PWR_MAJOR);
|
||||
|
||||
rtw89_mac_update_scoreboard(rtwdev, MAC_AX_NOTIFY_PWR_MAJOR);
|
||||
rtw89_set_entity_state(rtwdev, RTW89_PHY_0, false);
|
||||
rtw89_set_entity_state(rtwdev, RTW89_PHY_1, false);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user