rtwdev 12 drivers/net/wireless/realtek/rtw88/coex.c static u8 rtw_coex_next_rssi_state(struct rtw_dev *rtwdev, u8 pre_state, rtwdev 15 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 35 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_limited_tx(struct rtw_dev *rtwdev, rtwdev 38 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 39 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 52 drivers/net/wireless/realtek/rtw88/coex.c coex_stat->darfrc = rtw_read32(rtwdev, REG_DARFRC); rtwdev 53 drivers/net/wireless/realtek/rtw88/coex.c coex_stat->darfrch = rtw_read32(rtwdev, REG_DARFRCH); rtwdev 54 drivers/net/wireless/realtek/rtw88/coex.c coex_stat->retry_limit = rtw_read16(rtwdev, REG_RETRY_LIMIT); rtwdev 59 drivers/net/wireless/realtek/rtw88/coex.c rtw_read8(rtwdev, REG_AMPDU_MAX_TIME_V1); rtwdev 68 drivers/net/wireless/realtek/rtw88/coex.c rtw_write8_set(rtwdev, REG_TX_HANG_CTRL, BIT_EN_GNT_BT_AWAKE); rtwdev 73 drivers/net/wireless/realtek/rtw88/coex.c rtw_write8_set(rtwdev, REG_LIFETIME_EN, 0xf); rtwdev 74 drivers/net/wireless/realtek/rtw88/coex.c rtw_write16(rtwdev, REG_RETRY_LIMIT, 0x0808); rtwdev 78 drivers/net/wireless/realtek/rtw88/coex.c rtw_write32(rtwdev, REG_DARFRC, 0x1000000); rtwdev 79 drivers/net/wireless/realtek/rtw88/coex.c rtw_write32(rtwdev, REG_DARFRCH, 0x1010101); rtwdev 81 drivers/net/wireless/realtek/rtw88/coex.c rtw_write32(rtwdev, REG_DARFRC, 0x1000000); rtwdev 82 drivers/net/wireless/realtek/rtw88/coex.c rtw_write32(rtwdev, REG_DARFRCH, 0x4030201); rtwdev 85 drivers/net/wireless/realtek/rtw88/coex.c rtw_write8_clr(rtwdev, REG_TX_HANG_CTRL, BIT_EN_GNT_BT_AWAKE); rtwdev 86 drivers/net/wireless/realtek/rtw88/coex.c rtw_write8_clr(rtwdev, REG_LIFETIME_EN, 0xf); rtwdev 88 drivers/net/wireless/realtek/rtw88/coex.c rtw_write16(rtwdev, REG_RETRY_LIMIT, coex_stat->retry_limit); rtwdev 89 drivers/net/wireless/realtek/rtw88/coex.c rtw_write32(rtwdev, REG_DARFRC, coex_stat->darfrc); rtwdev 90 drivers/net/wireless/realtek/rtw88/coex.c rtw_write32(rtwdev, REG_DARFRCH, coex_stat->darfrch); rtwdev 94 drivers/net/wireless/realtek/rtw88/coex.c rtw_write8(rtwdev, REG_AMPDU_MAX_TIME_V1, 0x20); rtwdev 96 drivers/net/wireless/realtek/rtw88/coex.c rtw_write8(rtwdev, REG_AMPDU_MAX_TIME_V1, rtwdev 100 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_limited_wl(struct rtw_dev *rtwdev) rtwdev 102 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 118 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_limited_tx(rtwdev, tx_limit, tx_agg_ctrl); rtwdev 121 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_wl_ccklock_action(struct rtw_dev *rtwdev) rtwdev 123 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 134 drivers/net/wireless/realtek/rtw88/coex.c rtw_fw_bt_wifi_control(rtwdev, para[0], ¶[1]); rtwdev 149 drivers/net/wireless/realtek/rtw88/coex.c rtw_fw_bt_wifi_control(rtwdev, para[0], ¶[1]); rtwdev 155 drivers/net/wireless/realtek/rtw88/coex.c rtw_fw_bt_wifi_control(rtwdev, para[0], ¶[1]); rtwdev 160 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_wl_ccklock_detect(struct rtw_dev *rtwdev) rtwdev 162 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 171 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_wl_noisy_detect(struct rtw_dev *rtwdev) rtwdev 173 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 175 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_dm_info *dm_info = &rtwdev->dm_info; rtwdev 217 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_tdma_timer_base(struct rtw_dev *rtwdev, u8 type) rtwdev 219 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 235 drivers/net/wireless/realtek/rtw88/coex.c rtw_fw_bt_wifi_control(rtwdev, para[0], ¶[1]); rtwdev 239 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_wl_ccklock_action(rtwdev); rtwdev 242 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_set_wl_pri_mask(struct rtw_dev *rtwdev, u8 bitmap, rtwdev 250 drivers/net/wireless/realtek/rtw88/coex.c rtw_write8_mask(rtwdev, addr, BIT(bitmap), data); rtwdev 253 drivers/net/wireless/realtek/rtw88/coex.c void rtw_coex_write_scbd(struct rtw_dev *rtwdev, u16 bitpos, bool set) rtwdev 255 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 256 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 283 drivers/net/wireless/realtek/rtw88/coex.c rtw_write16(rtwdev, REG_WIFI_BT_INFO, val); rtwdev 287 drivers/net/wireless/realtek/rtw88/coex.c static u16 rtw_coex_read_scbd(struct rtw_dev *rtwdev) rtwdev 289 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 294 drivers/net/wireless/realtek/rtw88/coex.c return (rtw_read16(rtwdev, REG_WIFI_BT_INFO)) & ~(BIT_BT_INT_EN); rtwdev 297 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_check_rfk(struct rtw_dev *rtwdev) rtwdev 299 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 300 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 312 drivers/net/wireless/realtek/rtw88/coex.c btk = !!(rtw_coex_read_scbd(rtwdev) & COEX_SCBD_BT_RFK); rtwdev 315 drivers/net/wireless/realtek/rtw88/coex.c wlk = !!(rtw_read8(rtwdev, REG_ARFR4) & BIT_WL_RFK); rtwdev 328 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_query_bt_info(struct rtw_dev *rtwdev) rtwdev 330 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 336 drivers/net/wireless/realtek/rtw88/coex.c rtw_fw_query_bt_info(rtwdev); rtwdev 339 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_monitor_bt_enable(struct rtw_dev *rtwdev) rtwdev 341 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 342 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 349 drivers/net/wireless/realtek/rtw88/coex.c score_board = rtw_coex_read_scbd(rtwdev); rtwdev 354 drivers/net/wireless/realtek/rtw88/coex.c rtw_dbg(rtwdev, RTW_DBG_COEX, "coex: BT state changed (%d) -> (%d)\n", rtwdev 364 drivers/net/wireless/realtek/rtw88/coex.c ieee80211_queue_delayed_work(rtwdev->hw, rtwdev 372 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_update_wl_link_info(struct rtw_dev *rtwdev, u8 reason) rtwdev 374 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 377 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 378 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_traffic_stats *stats = &rtwdev->stats; rtwdev 386 drivers/net/wireless/realtek/rtw88/coex.c scan = rtw_flag_check(rtwdev, RTW_FLAG_SCANNING); rtwdev 387 drivers/net/wireless/realtek/rtw88/coex.c coex_stat->wl_connected = !!rtwdev->sta_cnt; rtwdev 388 drivers/net/wireless/realtek/rtw88/coex.c coex_stat->wl_gl_busy = rtw_flag_check(rtwdev, RTW_FLAG_BUSY_TRAFFIC); rtwdev 401 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_wl_noisy_detect(rtwdev); rtwdev 406 drivers/net/wireless/realtek/rtw88/coex.c rssi = rtwdev->dm_info.min_rssi; rtwdev 407 drivers/net/wireless/realtek/rtw88/coex.c rssi_state = rtw_coex_next_rssi_state(rtwdev, rssi_state, rtwdev 426 drivers/net/wireless/realtek/rtw88/coex.c if (rtwdev->hal.current_band_type == RTW_BAND_5G) rtwdev 447 drivers/net/wireless/realtek/rtw88/coex.c void rtw_coex_info_response(struct rtw_dev *rtwdev, struct sk_buff *skb) rtwdev 449 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 459 drivers/net/wireless/realtek/rtw88/coex.c static struct sk_buff *rtw_coex_info_request(struct rtw_dev *rtwdev, rtwdev 462 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 467 drivers/net/wireless/realtek/rtw88/coex.c rtw_fw_query_bt_mp_info(rtwdev, req); rtwdev 471 drivers/net/wireless/realtek/rtw88/coex.c rtw_err(rtwdev, "coex request time out\n"); rtwdev 477 drivers/net/wireless/realtek/rtw88/coex.c rtw_err(rtwdev, "failed to get coex info response\n"); rtwdev 486 drivers/net/wireless/realtek/rtw88/coex.c static bool rtw_coex_get_bt_scan_type(struct rtw_dev *rtwdev, u8 *scan_type) rtwdev 494 drivers/net/wireless/realtek/rtw88/coex.c skb = rtw_coex_info_request(rtwdev, &req); rtwdev 507 drivers/net/wireless/realtek/rtw88/coex.c static bool rtw_coex_set_lna_constrain_level(struct rtw_dev *rtwdev, rtwdev 516 drivers/net/wireless/realtek/rtw88/coex.c skb = rtw_coex_info_request(rtwdev, &req); rtwdev 527 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_update_bt_link_info(struct rtw_dev *rtwdev) rtwdev 529 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 532 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 543 drivers/net/wireless/realtek/rtw88/coex.c rssi_state = rtw_coex_next_rssi_state(rtwdev, rssi_state, rtwdev 551 drivers/net/wireless/realtek/rtw88/coex.c rssi = rtwdev->dm_info.min_rssi; rtwdev 552 drivers/net/wireless/realtek/rtw88/coex.c rssi_state = rtw_coex_next_rssi_state(rtwdev, rssi_state, rtwdev 561 drivers/net/wireless/realtek/rtw88/coex.c if (rtw_coex_get_bt_scan_type(rtwdev, &scan_type)) { rtwdev 631 drivers/net/wireless/realtek/rtw88/coex.c rtw_dbg(rtwdev, RTW_DBG_COEX, "coex: bt status(%d)\n", coex_dm->bt_status); rtwdev 634 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_update_wl_ch_info(struct rtw_dev *rtwdev, u8 type) rtwdev 636 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 637 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex_dm *coex_dm = &rtwdev->coex.dm; rtwdev 638 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 644 drivers/net/wireless/realtek/rtw88/coex.c bw = rtwdev->hal.current_band_width; rtwdev 647 drivers/net/wireless/realtek/rtw88/coex.c center_chan = rtwdev->hal.current_channel; rtwdev 673 drivers/net/wireless/realtek/rtw88/coex.c rtw_fw_wl_ch_info(rtwdev, link, center_chan, bw); rtwdev 676 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_set_bt_tx_power(struct rtw_dev *rtwdev, u8 bt_pwr_dec_lvl) rtwdev 678 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 686 drivers/net/wireless/realtek/rtw88/coex.c rtw_fw_force_bt_tx_power(rtwdev, bt_pwr_dec_lvl); rtwdev 689 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_set_bt_rx_gain(struct rtw_dev *rtwdev, u8 bt_lna_lvl) rtwdev 691 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 701 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_lna_constrain_level(rtwdev, bt_lna_lvl); rtwdev 702 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_write_scbd(rtwdev, COEX_SCBD_RXGAIN, true); rtwdev 704 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_write_scbd(rtwdev, COEX_SCBD_RXGAIN, false); rtwdev 708 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_set_rf_para(struct rtw_dev *rtwdev, rtwdev 711 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 718 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_wl_tx_power(rtwdev, para.wl_pwr_dec_lvl); rtwdev 719 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_bt_tx_power(rtwdev, para.bt_pwr_dec_lvl + offset); rtwdev 720 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_wl_rx_gain(rtwdev, para.wl_low_gain_en); rtwdev 721 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_bt_rx_gain(rtwdev, para.bt_lna_lvl); rtwdev 724 drivers/net/wireless/realtek/rtw88/coex.c u32 rtw_coex_read_indirect_reg(struct rtw_dev *rtwdev, u16 addr) rtwdev 728 drivers/net/wireless/realtek/rtw88/coex.c if (!ltecoex_read_reg(rtwdev, addr, &val)) { rtwdev 729 drivers/net/wireless/realtek/rtw88/coex.c rtw_err(rtwdev, "failed to read indirect register\n"); rtwdev 736 drivers/net/wireless/realtek/rtw88/coex.c void rtw_coex_write_indirect_reg(struct rtw_dev *rtwdev, u16 addr, rtwdev 742 drivers/net/wireless/realtek/rtw88/coex.c tmp = rtw_coex_read_indirect_reg(rtwdev, addr); rtwdev 745 drivers/net/wireless/realtek/rtw88/coex.c if (!ltecoex_reg_write(rtwdev, addr, tmp)) rtwdev 746 drivers/net/wireless/realtek/rtw88/coex.c rtw_err(rtwdev, "failed to write indirect register\n"); rtwdev 749 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_coex_ctrl_owner(struct rtw_dev *rtwdev, bool wifi_control) rtwdev 752 drivers/net/wireless/realtek/rtw88/coex.c rtw_write32_set(rtwdev, REG_SYS_SDIO_CTRL, BIT_LTE_MUX_CTRL_PATH); rtwdev 754 drivers/net/wireless/realtek/rtw88/coex.c rtw_write32_clr(rtwdev, REG_SYS_SDIO_CTRL, BIT_LTE_MUX_CTRL_PATH); rtwdev 757 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_set_gnt_bt(struct rtw_dev *rtwdev, u8 state) rtwdev 759 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_write_indirect_reg(rtwdev, 0x38, 0xc000, state); rtwdev 760 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_write_indirect_reg(rtwdev, 0x38, 0x0c00, state); rtwdev 763 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_set_gnt_wl(struct rtw_dev *rtwdev, u8 state) rtwdev 765 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_write_indirect_reg(rtwdev, 0x38, 0x3000, state); rtwdev 766 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_write_indirect_reg(rtwdev, 0x38, 0x0300, state); rtwdev 769 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_set_table(struct rtw_dev *rtwdev, u32 table0, u32 table1) rtwdev 772 drivers/net/wireless/realtek/rtw88/coex.c rtw_write32(rtwdev, REG_BT_COEX_TABLE0, table0); rtwdev 773 drivers/net/wireless/realtek/rtw88/coex.c rtw_write32(rtwdev, REG_BT_COEX_TABLE1, table1); rtwdev 774 drivers/net/wireless/realtek/rtw88/coex.c rtw_write32(rtwdev, REG_BT_COEX_BRK_TABLE, DEF_BRK_TABLE_VAL); rtwdev 777 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_table(struct rtw_dev *rtwdev, u8 type) rtwdev 779 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 781 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 782 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 788 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_table(rtwdev, rtwdev 794 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_table(rtwdev, rtwdev 800 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_ignore_wlan_act(struct rtw_dev *rtwdev, bool enable) rtwdev 802 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 807 drivers/net/wireless/realtek/rtw88/coex.c rtw_fw_bt_ignore_wlan_action(rtwdev, enable); rtwdev 810 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_power_save_state(struct rtw_dev *rtwdev, u8 ps_type, rtwdev 813 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_lps_conf *lps_conf = &rtwdev->lps_conf; rtwdev 815 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 819 drivers/net/wireless/realtek/rtw88/coex.c lps_mode = rtwdev->lps_conf.mode; rtwdev 827 drivers/net/wireless/realtek/rtw88/coex.c if (rtwvif && rtw_in_lps(rtwdev)) rtwdev 828 drivers/net/wireless/realtek/rtw88/coex.c rtw_leave_lps(rtwdev, rtwvif); rtwdev 833 drivers/net/wireless/realtek/rtw88/coex.c rtw_fw_coex_tdma_type(rtwdev, 0x8, 0, 0, 0, 0); rtwdev 836 drivers/net/wireless/realtek/rtw88/coex.c if (rtwvif && rtw_in_lps(rtwdev)) rtwdev 837 drivers/net/wireless/realtek/rtw88/coex.c rtw_leave_lps(rtwdev, rtwvif); rtwdev 844 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_set_tdma(struct rtw_dev *rtwdev, u8 byte1, u8 byte2, rtwdev 847 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 849 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 861 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_power_save_state(rtwdev, ps_type, 0x0, 0x0); rtwdev 867 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_power_save_state(rtwdev, ps_type, 0x50, 0x4); rtwdev 870 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_power_save_state(rtwdev, ps_type, 0x0, 0x0); rtwdev 879 drivers/net/wireless/realtek/rtw88/coex.c rtw_fw_coex_tdma_type(rtwdev, byte1, byte2, byte3, byte4, byte5); rtwdev 882 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_tdma(struct rtw_dev *rtwdev, bool force, u32 tcase) rtwdev 884 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 886 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 887 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 892 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_tdma_timer_base(rtwdev, 3); rtwdev 894 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_tdma_timer_base(rtwdev, 0); rtwdev 909 drivers/net/wireless/realtek/rtw88/coex.c rtw_write8_set(rtwdev, REG_BCN_CTRL, BIT_EN_BCN_FUNCTION); rtwdev 910 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_write_scbd(rtwdev, COEX_SCBD_TDMA, true); rtwdev 912 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_write_scbd(rtwdev, COEX_SCBD_TDMA, false); rtwdev 917 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_tdma(rtwdev, rtwdev 926 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_tdma(rtwdev, rtwdev 938 drivers/net/wireless/realtek/rtw88/coex.c rtw_dbg(rtwdev, RTW_DBG_COEX, "coex: coex tdma type (%d)\n", type); rtwdev 941 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_set_ant_path(struct rtw_dev *rtwdev, bool force, u8 phase) rtwdev 943 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 955 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_check_rfk(rtwdev); rtwdev 961 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_coex_ctrl_owner(rtwdev, true); rtwdev 963 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_coex_ctrl_owner(rtwdev, false); rtwdev 971 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_gnt_bt(rtwdev, COEX_GNT_SET_SW_LOW); rtwdev 974 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_gnt_wl(rtwdev, COEX_GNT_SET_SW_HIGH); rtwdev 977 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_gnt_bt(rtwdev, COEX_GNT_SET_SW_HIGH); rtwdev 980 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_gnt_wl(rtwdev, COEX_GNT_SET_SW_LOW); rtwdev 984 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_coex_ctrl_owner(rtwdev, true); rtwdev 991 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_gnt_bt(rtwdev, COEX_GNT_SET_SW_LOW); rtwdev 994 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_gnt_wl(rtwdev, COEX_GNT_SET_SW_HIGH); rtwdev 997 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_coex_ctrl_owner(rtwdev, true); rtwdev 1004 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_coex_ctrl_owner(rtwdev, false); rtwdev 1011 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_gnt_bt(rtwdev, COEX_GNT_SET_HW_PTA); rtwdev 1014 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_gnt_wl(rtwdev, COEX_GNT_SET_HW_PTA); rtwdev 1017 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_coex_ctrl_owner(rtwdev, true); rtwdev 1024 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_gnt_bt(rtwdev, COEX_GNT_SET_SW_HIGH); rtwdev 1027 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_gnt_wl(rtwdev, COEX_GNT_SET_SW_HIGH); rtwdev 1030 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_coex_ctrl_owner(rtwdev, true); rtwdev 1037 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_gnt_bt(rtwdev, COEX_GNT_SET_SW_HIGH); rtwdev 1040 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_gnt_wl(rtwdev, COEX_GNT_SET_SW_HIGH); rtwdev 1043 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_coex_ctrl_owner(rtwdev, true); rtwdev 1050 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_gnt_bt(rtwdev, COEX_GNT_SET_HW_PTA); rtwdev 1053 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_gnt_wl(rtwdev, COEX_GNT_SET_HW_PTA); rtwdev 1056 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_coex_ctrl_owner(rtwdev, true); rtwdev 1067 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_switch(rtwdev, ctrl_type, pos_type); rtwdev 1070 drivers/net/wireless/realtek/rtw88/coex.c static u8 rtw_coex_algorithm(struct rtw_dev *rtwdev) rtwdev 1072 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 1133 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_action_coex_all_off(struct rtw_dev *rtwdev) rtwdev 1135 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 1136 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 1149 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_rf_para(rtwdev, chip->wl_rf_para_rx[0]); rtwdev 1150 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_table(rtwdev, table_case); rtwdev 1151 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_tdma(rtwdev, false, tdma_case); rtwdev 1154 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_action_freerun(struct rtw_dev *rtwdev) rtwdev 1156 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 1159 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 1160 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 1169 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_update_wl_ch_info(rtwdev, COEX_MEDIA_CONNECT); rtwdev 1171 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, false, COEX_SET_ANT_2G_FREERUN); rtwdev 1173 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_write_scbd(rtwdev, COEX_SCBD_FIX2M, false); rtwdev 1188 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_rf_para(rtwdev, chip->wl_rf_para_tx[level]); rtwdev 1190 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_rf_para(rtwdev, chip->wl_rf_para_rx[level]); rtwdev 1192 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_table(rtwdev, 100); rtwdev 1193 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_tdma(rtwdev, false, 100); rtwdev 1196 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_action_bt_whql_test(struct rtw_dev *rtwdev) rtwdev 1198 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 1199 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 1212 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, false, COEX_SET_ANT_2G); rtwdev 1213 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_rf_para(rtwdev, chip->wl_rf_para_rx[0]); rtwdev 1214 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_table(rtwdev, table_case); rtwdev 1215 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_tdma(rtwdev, false, tdma_case); rtwdev 1218 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_action_bt_relink(struct rtw_dev *rtwdev) rtwdev 1220 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 1221 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 1234 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, false, COEX_SET_ANT_2G); rtwdev 1235 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_rf_para(rtwdev, chip->wl_rf_para_rx[0]); rtwdev 1236 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_table(rtwdev, table_case); rtwdev 1237 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_tdma(rtwdev, false, tdma_case); rtwdev 1240 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_action_bt_idle(struct rtw_dev *rtwdev) rtwdev 1242 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 1245 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 1246 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 1263 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, false, COEX_SET_ANT_2G_FREERUN); rtwdev 1264 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_table(rtwdev, table_case); rtwdev 1265 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_tdma(rtwdev, false, tdma_case); rtwdev 1269 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, false, COEX_SET_ANT_2G); rtwdev 1298 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_rf_para(rtwdev, chip->wl_rf_para_rx[0]); rtwdev 1299 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_table(rtwdev, table_case); rtwdev 1300 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_tdma(rtwdev, false, tdma_case); rtwdev 1303 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_action_bt_inquiry(struct rtw_dev *rtwdev) rtwdev 1305 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 1307 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 1308 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 1361 drivers/net/wireless/realtek/rtw88/coex.c rtw_dbg(rtwdev, RTW_DBG_COEX, "coex: wifi hi(%d), bt page(%d)\n", rtwdev 1364 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, false, COEX_SET_ANT_2G); rtwdev 1365 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_rf_para(rtwdev, chip->wl_rf_para_rx[0]); rtwdev 1366 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_table(rtwdev, table_case); rtwdev 1367 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_tdma(rtwdev, false, tdma_case | slot_type); rtwdev 1370 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_action_bt_hfp(struct rtw_dev *rtwdev) rtwdev 1372 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 1374 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 1375 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 1398 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, false, COEX_SET_ANT_2G); rtwdev 1399 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_rf_para(rtwdev, chip->wl_rf_para_rx[0]); rtwdev 1400 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_table(rtwdev, table_case); rtwdev 1401 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_tdma(rtwdev, false, tdma_case); rtwdev 1404 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_action_bt_hid(struct rtw_dev *rtwdev) rtwdev 1406 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 1408 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 1409 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 1413 drivers/net/wireless/realtek/rtw88/coex.c wl_bw = rtwdev->hal.current_band_width; rtwdev 1463 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, false, COEX_SET_ANT_2G); rtwdev 1464 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_rf_para(rtwdev, chip->wl_rf_para_rx[0]); rtwdev 1465 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_table(rtwdev, table_case); rtwdev 1466 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_tdma(rtwdev, false, tdma_case); rtwdev 1469 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_action_bt_a2dp(struct rtw_dev *rtwdev) rtwdev 1471 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 1474 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 1475 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 1502 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, false, COEX_SET_ANT_2G); rtwdev 1503 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_rf_para(rtwdev, chip->wl_rf_para_rx[0]); rtwdev 1504 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_table(rtwdev, table_case); rtwdev 1505 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_tdma(rtwdev, false, tdma_case | slot_type); rtwdev 1508 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_action_bt_a2dpsink(struct rtw_dev *rtwdev) rtwdev 1510 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 1512 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 1513 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 1538 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, false, COEX_SET_ANT_2G); rtwdev 1539 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_rf_para(rtwdev, chip->wl_rf_para_rx[0]); rtwdev 1540 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_table(rtwdev, table_case); rtwdev 1541 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_tdma(rtwdev, false, tdma_case); rtwdev 1544 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_action_bt_pan(struct rtw_dev *rtwdev) rtwdev 1546 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 1548 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 1549 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 1573 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, false, COEX_SET_ANT_2G); rtwdev 1574 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_rf_para(rtwdev, chip->wl_rf_para_rx[0]); rtwdev 1575 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_table(rtwdev, table_case); rtwdev 1576 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_tdma(rtwdev, false, tdma_case); rtwdev 1579 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_action_bt_a2dp_hid(struct rtw_dev *rtwdev) rtwdev 1581 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 1584 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 1585 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 1616 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, false, COEX_SET_ANT_2G); rtwdev 1617 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_rf_para(rtwdev, chip->wl_rf_para_rx[0]); rtwdev 1618 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_table(rtwdev, table_case); rtwdev 1619 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_tdma(rtwdev, false, tdma_case | slot_type); rtwdev 1622 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_action_bt_a2dp_pan(struct rtw_dev *rtwdev) rtwdev 1624 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 1626 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 1627 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 1652 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, false, COEX_SET_ANT_2G); rtwdev 1653 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_rf_para(rtwdev, chip->wl_rf_para_rx[0]); rtwdev 1654 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_table(rtwdev, table_case); rtwdev 1655 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_tdma(rtwdev, false, tdma_case); rtwdev 1658 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_action_bt_pan_hid(struct rtw_dev *rtwdev) rtwdev 1660 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 1662 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 1663 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 1684 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, false, COEX_SET_ANT_2G); rtwdev 1685 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_rf_para(rtwdev, chip->wl_rf_para_rx[0]); rtwdev 1686 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_table(rtwdev, table_case); rtwdev 1687 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_tdma(rtwdev, false, tdma_case); rtwdev 1690 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_action_bt_a2dp_pan_hid(struct rtw_dev *rtwdev) rtwdev 1692 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 1694 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 1695 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 1716 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, false, COEX_SET_ANT_2G); rtwdev 1717 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_rf_para(rtwdev, chip->wl_rf_para_rx[0]); rtwdev 1718 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_table(rtwdev, table_case); rtwdev 1719 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_tdma(rtwdev, false, tdma_case); rtwdev 1722 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_action_wl_under5g(struct rtw_dev *rtwdev) rtwdev 1724 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 1725 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 1728 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_write_scbd(rtwdev, COEX_SCBD_FIX2M, false); rtwdev 1740 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, true, COEX_SET_ANT_5G); rtwdev 1741 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_rf_para(rtwdev, chip->wl_rf_para_rx[0]); rtwdev 1742 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_table(rtwdev, table_case); rtwdev 1743 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_tdma(rtwdev, false, tdma_case); rtwdev 1746 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_action_wl_only(struct rtw_dev *rtwdev) rtwdev 1748 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 1749 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 1762 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, true, COEX_SET_ANT_2G); rtwdev 1763 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_rf_para(rtwdev, chip->wl_rf_para_rx[0]); rtwdev 1764 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_table(rtwdev, table_case); rtwdev 1765 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_tdma(rtwdev, false, tdma_case); rtwdev 1768 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_action_wl_native_lps(struct rtw_dev *rtwdev) rtwdev 1770 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 1771 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 1772 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 1788 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, true, COEX_SET_ANT_2G); rtwdev 1789 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_rf_para(rtwdev, chip->wl_rf_para_rx[0]); rtwdev 1790 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_table(rtwdev, table_case); rtwdev 1791 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_tdma(rtwdev, false, tdma_case); rtwdev 1794 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_action_wl_linkscan(struct rtw_dev *rtwdev) rtwdev 1796 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 1798 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 1799 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 1824 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, true, COEX_SET_ANT_2G); rtwdev 1825 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_rf_para(rtwdev, chip->wl_rf_para_rx[0]); rtwdev 1826 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_table(rtwdev, table_case); rtwdev 1827 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_tdma(rtwdev, false, tdma_case | slot_type); rtwdev 1830 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_action_wl_not_connected(struct rtw_dev *rtwdev) rtwdev 1832 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 1833 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 1846 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, true, COEX_SET_ANT_2G); rtwdev 1847 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_rf_para(rtwdev, chip->wl_rf_para_rx[0]); rtwdev 1848 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_table(rtwdev, table_case); rtwdev 1849 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_tdma(rtwdev, false, tdma_case); rtwdev 1852 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_action_wl_connected(struct rtw_dev *rtwdev) rtwdev 1854 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 1857 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 1864 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_action_freerun(rtwdev); rtwdev 1868 drivers/net/wireless/realtek/rtw88/coex.c algorithm = rtw_coex_algorithm(rtwdev); rtwdev 1872 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_action_bt_hfp(rtwdev); rtwdev 1875 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_action_bt_hid(rtwdev); rtwdev 1879 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_action_bt_a2dpsink(rtwdev); rtwdev 1881 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_action_bt_a2dp(rtwdev); rtwdev 1884 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_action_bt_pan(rtwdev); rtwdev 1887 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_action_bt_a2dp_hid(rtwdev); rtwdev 1890 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_action_bt_a2dp_pan(rtwdev); rtwdev 1893 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_action_bt_pan_hid(rtwdev); rtwdev 1896 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_action_bt_a2dp_pan_hid(rtwdev); rtwdev 1900 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_action_bt_idle(rtwdev); rtwdev 1905 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_run_coex(struct rtw_dev *rtwdev, u8 reason) rtwdev 1907 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 1911 drivers/net/wireless/realtek/rtw88/coex.c lockdep_assert_held(&rtwdev->mutex); rtwdev 1916 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_update_wl_link_info(rtwdev, reason); rtwdev 1918 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_monitor_bt_enable(rtwdev); rtwdev 1935 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_action_wl_under5g(rtwdev); rtwdev 1940 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_write_scbd(rtwdev, COEX_SCBD_FIX2M, false); rtwdev 1942 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_action_wl_only(rtwdev); rtwdev 1947 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_action_wl_native_lps(rtwdev); rtwdev 1952 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_action_bt_whql_test(rtwdev); rtwdev 1957 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_action_bt_relink(rtwdev); rtwdev 1962 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_action_bt_inquiry(rtwdev); rtwdev 1969 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_action_bt_idle(rtwdev); rtwdev 1974 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_action_wl_linkscan(rtwdev); rtwdev 1979 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_action_wl_connected(rtwdev); rtwdev 1981 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_action_wl_not_connected(rtwdev); rtwdev 1984 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_gnt_fix(rtwdev); rtwdev 1985 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_limited_wl(rtwdev); rtwdev 1988 drivers/net/wireless/realtek/rtw88/coex.c static void rtw_coex_init_coex_var(struct rtw_dev *rtwdev) rtwdev 1990 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 2013 drivers/net/wireless/realtek/rtw88/coex.c static void __rtw_coex_init_hw_config(struct rtw_dev *rtwdev, bool wifi_only) rtwdev 2015 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 2017 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_init_coex_var(rtwdev); rtwdev 2018 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_monitor_bt_enable(rtwdev); rtwdev 2019 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_rfe_type(rtwdev); rtwdev 2020 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_init(rtwdev); rtwdev 2023 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_wl_pri_mask(rtwdev, COEX_WLPRI_TX_RSP, 1); rtwdev 2026 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_wl_pri_mask(rtwdev, COEX_WLPRI_TX_BEACON, 1); rtwdev 2029 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_wl_pri_mask(rtwdev, COEX_WLPRI_TX_BEACONQ, 1); rtwdev 2033 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, true, COEX_SET_ANT_WOFF); rtwdev 2034 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_write_scbd(rtwdev, COEX_SCBD_ALL, false); rtwdev 2037 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, true, COEX_SET_ANT_WONLY); rtwdev 2038 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_write_scbd(rtwdev, COEX_SCBD_ACTIVE | COEX_SCBD_SCAN, rtwdev 2042 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, true, COEX_SET_ANT_INIT); rtwdev 2043 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_write_scbd(rtwdev, COEX_SCBD_ACTIVE | COEX_SCBD_SCAN, rtwdev 2050 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_table(rtwdev, 0); rtwdev 2051 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_tdma(rtwdev, true, 0); rtwdev 2052 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_query_bt_info(rtwdev); rtwdev 2055 drivers/net/wireless/realtek/rtw88/coex.c void rtw_coex_power_on_setting(struct rtw_dev *rtwdev) rtwdev 2057 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 2063 drivers/net/wireless/realtek/rtw88/coex.c rtw_write8_set(rtwdev, REG_SYS_FUNC_EN, BIT(0) | BIT(1)); rtwdev 2065 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_monitor_bt_enable(rtwdev); rtwdev 2066 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_rfe_type(rtwdev); rtwdev 2069 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, true, COEX_SET_ANT_POWERON); rtwdev 2072 drivers/net/wireless/realtek/rtw88/coex.c rtw_write8(rtwdev, 0xff1a, 0x0); rtwdev 2075 drivers/net/wireless/realtek/rtw88/coex.c void rtw_coex_init_hw_config(struct rtw_dev *rtwdev, bool wifi_only) rtwdev 2077 drivers/net/wireless/realtek/rtw88/coex.c __rtw_coex_init_hw_config(rtwdev, wifi_only); rtwdev 2080 drivers/net/wireless/realtek/rtw88/coex.c void rtw_coex_ips_notify(struct rtw_dev *rtwdev, u8 type) rtwdev 2082 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 2092 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_write_scbd(rtwdev, COEX_SCBD_ALL, false); rtwdev 2094 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, true, COEX_SET_ANT_WOFF); rtwdev 2095 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_action_coex_all_off(rtwdev); rtwdev 2097 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_write_scbd(rtwdev, COEX_SCBD_ACTIVE | COEX_SCBD_ONOFF, true); rtwdev 2100 drivers/net/wireless/realtek/rtw88/coex.c __rtw_coex_init_hw_config(rtwdev, false); rtwdev 2107 drivers/net/wireless/realtek/rtw88/coex.c void rtw_coex_lps_notify(struct rtw_dev *rtwdev, u8 type) rtwdev 2109 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 2120 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_write_scbd(rtwdev, COEX_SCBD_ACTIVE, true); rtwdev 2123 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_write_scbd(rtwdev, COEX_SCBD_ACTIVE, false); rtwdev 2125 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_run_coex(rtwdev, COEX_RSN_LPS); rtwdev 2131 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_write_scbd(rtwdev, COEX_SCBD_ACTIVE, true); rtwdev 2134 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_query_bt_info(rtwdev); rtwdev 2138 drivers/net/wireless/realtek/rtw88/coex.c void rtw_coex_scan_notify(struct rtw_dev *rtwdev, u8 type) rtwdev 2140 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 2149 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_write_scbd(rtwdev, COEX_SCBD_ACTIVE | COEX_SCBD_SCAN | rtwdev 2153 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, true, COEX_SET_ANT_5G); rtwdev 2154 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_run_coex(rtwdev, COEX_RSN_5GSCANSTART); rtwdev 2159 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, true, COEX_SET_ANT_2G); rtwdev 2160 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_run_coex(rtwdev, COEX_RSN_2GSCANSTART); rtwdev 2163 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_run_coex(rtwdev, COEX_RSN_SCANFINISH); rtwdev 2167 drivers/net/wireless/realtek/rtw88/coex.c void rtw_coex_switchband_notify(struct rtw_dev *rtwdev, u8 type) rtwdev 2169 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 2175 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_run_coex(rtwdev, COEX_RSN_5GSWITCHBAND); rtwdev 2177 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_run_coex(rtwdev, COEX_RSN_2GSWITCHBAND); rtwdev 2179 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_scan_notify(rtwdev, COEX_SCAN_START_2G); rtwdev 2182 drivers/net/wireless/realtek/rtw88/coex.c void rtw_coex_connect_notify(struct rtw_dev *rtwdev, u8 type) rtwdev 2184 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 2190 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_write_scbd(rtwdev, COEX_SCBD_ACTIVE | COEX_SCBD_SCAN | rtwdev 2194 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, true, COEX_SET_ANT_5G); rtwdev 2195 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_run_coex(rtwdev, COEX_RSN_5GCONSTART); rtwdev 2197 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, true, COEX_SET_ANT_5G); rtwdev 2198 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_run_coex(rtwdev, COEX_RSN_5GCONFINISH); rtwdev 2204 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, true, COEX_SET_ANT_2G); rtwdev 2206 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_run_coex(rtwdev, COEX_RSN_2GCONSTART); rtwdev 2212 drivers/net/wireless/realtek/rtw88/coex.c ieee80211_queue_delayed_work(rtwdev->hw, &coex->defreeze_work, rtwdev 2218 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_run_coex(rtwdev, COEX_RSN_2GCONFINISH); rtwdev 2222 drivers/net/wireless/realtek/rtw88/coex.c void rtw_coex_media_status_notify(struct rtw_dev *rtwdev, u8 type) rtwdev 2224 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 2232 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_write_scbd(rtwdev, COEX_SCBD_ACTIVE, true); rtwdev 2234 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, true, COEX_SET_ANT_5G); rtwdev 2235 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_run_coex(rtwdev, COEX_RSN_5GMEDIA); rtwdev 2237 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_write_scbd(rtwdev, COEX_SCBD_ACTIVE, true); rtwdev 2240 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_ant_path(rtwdev, true, COEX_SET_ANT_2G); rtwdev 2243 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_wl_pri_mask(rtwdev, COEX_WLPRI_RX_CCK, 1); rtwdev 2248 drivers/net/wireless/realtek/rtw88/coex.c rtw_fw_bt_wifi_control(rtwdev, para[0], ¶[1]); rtwdev 2250 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_run_coex(rtwdev, COEX_RSN_2GMEDIA); rtwdev 2252 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_write_scbd(rtwdev, COEX_SCBD_ACTIVE, false); rtwdev 2254 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_set_wl_pri_mask(rtwdev, COEX_WLPRI_RX_CCK, 0); rtwdev 2256 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_run_coex(rtwdev, COEX_RSN_MEDIADISCON); rtwdev 2259 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_update_wl_ch_info(rtwdev, type); rtwdev 2262 drivers/net/wireless/realtek/rtw88/coex.c void rtw_coex_bt_info_notify(struct rtw_dev *rtwdev, u8 *buf, u8 length) rtwdev 2264 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 2266 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 2285 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_monitor_bt_enable(rtwdev); rtwdev 2288 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_run_coex(rtwdev, COEX_RSN_BTINFO); rtwdev 2298 drivers/net/wireless/realtek/rtw88/coex.c ieee80211_queue_delayed_work(rtwdev->hw, rtwdev 2312 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_update_bt_link_info(rtwdev); rtwdev 2313 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_run_coex(rtwdev, COEX_RSN_BTINFO); rtwdev 2352 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_write_scbd(rtwdev, COEX_SCBD_SCAN, true); rtwdev 2354 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_write_scbd(rtwdev, COEX_SCBD_SCAN, false); rtwdev 2356 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_write_scbd(rtwdev, COEX_SCBD_SCAN, false); rtwdev 2383 drivers/net/wireless/realtek/rtw88/coex.c ieee80211_queue_delayed_work(rtwdev->hw, rtwdev 2403 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_update_wl_ch_info(rtwdev, type); rtwdev 2409 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_ignore_wlan_act(rtwdev, false); rtwdev 2431 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_update_bt_link_info(rtwdev); rtwdev 2432 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_run_coex(rtwdev, COEX_RSN_BTINFO); rtwdev 2435 drivers/net/wireless/realtek/rtw88/coex.c void rtw_coex_wl_fwdbginfo_notify(struct rtw_dev *rtwdev, u8 *buf, u8 length) rtwdev 2437 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 2459 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_wl_ccklock_action(rtwdev); rtwdev 2460 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_wl_ccklock_detect(rtwdev); rtwdev 2463 drivers/net/wireless/realtek/rtw88/coex.c void rtw_coex_wl_status_change_notify(struct rtw_dev *rtwdev) rtwdev 2465 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 2470 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_run_coex(rtwdev, COEX_RSN_WLSTATUS); rtwdev 2475 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_dev *rtwdev = container_of(work, struct rtw_dev, rtwdev 2477 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex_stat *coex_stat = &rtwdev->coex.stat; rtwdev 2479 drivers/net/wireless/realtek/rtw88/coex.c mutex_lock(&rtwdev->mutex); rtwdev 2481 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_run_coex(rtwdev, COEX_RSN_WLSTATUS); rtwdev 2482 drivers/net/wireless/realtek/rtw88/coex.c mutex_unlock(&rtwdev->mutex); rtwdev 2487 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_dev *rtwdev = container_of(work, struct rtw_dev, rtwdev 2489 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex_stat *coex_stat = &rtwdev->coex.stat; rtwdev 2491 drivers/net/wireless/realtek/rtw88/coex.c mutex_lock(&rtwdev->mutex); rtwdev 2493 drivers/net/wireless/realtek/rtw88/coex.c mutex_unlock(&rtwdev->mutex); rtwdev 2498 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_dev *rtwdev = container_of(work, struct rtw_dev, rtwdev 2500 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 2501 drivers/net/wireless/realtek/rtw88/coex.c struct rtw_coex_stat *coex_stat = &rtwdev->coex.stat; rtwdev 2503 drivers/net/wireless/realtek/rtw88/coex.c mutex_lock(&rtwdev->mutex); rtwdev 2506 drivers/net/wireless/realtek/rtw88/coex.c rtw_coex_run_coex(rtwdev, COEX_RSN_WLSTATUS); rtwdev 2507 drivers/net/wireless/realtek/rtw88/coex.c mutex_unlock(&rtwdev->mutex); rtwdev 294 drivers/net/wireless/realtek/rtw88/coex.h static inline void rtw_coex_set_init(struct rtw_dev *rtwdev) rtwdev 296 drivers/net/wireless/realtek/rtw88/coex.h struct rtw_chip_info *chip = rtwdev->chip; rtwdev 298 drivers/net/wireless/realtek/rtw88/coex.h chip->ops->coex_set_init(rtwdev); rtwdev 302 drivers/net/wireless/realtek/rtw88/coex.h void rtw_coex_set_ant_switch(struct rtw_dev *rtwdev, u8 ctrl_type, u8 pos_type) rtwdev 304 drivers/net/wireless/realtek/rtw88/coex.h struct rtw_chip_info *chip = rtwdev->chip; rtwdev 309 drivers/net/wireless/realtek/rtw88/coex.h chip->ops->coex_set_ant_switch(rtwdev, ctrl_type, pos_type); rtwdev 312 drivers/net/wireless/realtek/rtw88/coex.h static inline void rtw_coex_set_gnt_fix(struct rtw_dev *rtwdev) rtwdev 314 drivers/net/wireless/realtek/rtw88/coex.h struct rtw_chip_info *chip = rtwdev->chip; rtwdev 316 drivers/net/wireless/realtek/rtw88/coex.h chip->ops->coex_set_gnt_fix(rtwdev); rtwdev 319 drivers/net/wireless/realtek/rtw88/coex.h static inline void rtw_coex_set_gnt_debug(struct rtw_dev *rtwdev) rtwdev 321 drivers/net/wireless/realtek/rtw88/coex.h struct rtw_chip_info *chip = rtwdev->chip; rtwdev 323 drivers/net/wireless/realtek/rtw88/coex.h chip->ops->coex_set_gnt_debug(rtwdev); rtwdev 326 drivers/net/wireless/realtek/rtw88/coex.h static inline void rtw_coex_set_rfe_type(struct rtw_dev *rtwdev) rtwdev 328 drivers/net/wireless/realtek/rtw88/coex.h struct rtw_chip_info *chip = rtwdev->chip; rtwdev 330 drivers/net/wireless/realtek/rtw88/coex.h chip->ops->coex_set_rfe_type(rtwdev); rtwdev 333 drivers/net/wireless/realtek/rtw88/coex.h static inline void rtw_coex_set_wl_tx_power(struct rtw_dev *rtwdev, u8 wl_pwr) rtwdev 335 drivers/net/wireless/realtek/rtw88/coex.h struct rtw_chip_info *chip = rtwdev->chip; rtwdev 337 drivers/net/wireless/realtek/rtw88/coex.h chip->ops->coex_set_wl_tx_power(rtwdev, wl_pwr); rtwdev 341 drivers/net/wireless/realtek/rtw88/coex.h void rtw_coex_set_wl_rx_gain(struct rtw_dev *rtwdev, bool low_gain) rtwdev 343 drivers/net/wireless/realtek/rtw88/coex.h struct rtw_chip_info *chip = rtwdev->chip; rtwdev 345 drivers/net/wireless/realtek/rtw88/coex.h chip->ops->coex_set_wl_rx_gain(rtwdev, low_gain); rtwdev 348 drivers/net/wireless/realtek/rtw88/coex.h void rtw_coex_info_response(struct rtw_dev *rtwdev, struct sk_buff *skb); rtwdev 349 drivers/net/wireless/realtek/rtw88/coex.h u32 rtw_coex_read_indirect_reg(struct rtw_dev *rtwdev, u16 addr); rtwdev 350 drivers/net/wireless/realtek/rtw88/coex.h void rtw_coex_write_indirect_reg(struct rtw_dev *rtwdev, u16 addr, rtwdev 352 drivers/net/wireless/realtek/rtw88/coex.h void rtw_coex_write_scbd(struct rtw_dev *rtwdev, u16 bitpos, bool set); rtwdev 358 drivers/net/wireless/realtek/rtw88/coex.h void rtw_coex_power_on_setting(struct rtw_dev *rtwdev); rtwdev 359 drivers/net/wireless/realtek/rtw88/coex.h void rtw_coex_init_hw_config(struct rtw_dev *rtwdev, bool wifi_only); rtwdev 360 drivers/net/wireless/realtek/rtw88/coex.h void rtw_coex_ips_notify(struct rtw_dev *rtwdev, u8 type); rtwdev 361 drivers/net/wireless/realtek/rtw88/coex.h void rtw_coex_lps_notify(struct rtw_dev *rtwdev, u8 type); rtwdev 362 drivers/net/wireless/realtek/rtw88/coex.h void rtw_coex_scan_notify(struct rtw_dev *rtwdev, u8 type); rtwdev 363 drivers/net/wireless/realtek/rtw88/coex.h void rtw_coex_connect_notify(struct rtw_dev *rtwdev, u8 action); rtwdev 364 drivers/net/wireless/realtek/rtw88/coex.h void rtw_coex_media_status_notify(struct rtw_dev *rtwdev, u8 status); rtwdev 365 drivers/net/wireless/realtek/rtw88/coex.h void rtw_coex_bt_info_notify(struct rtw_dev *rtwdev, u8 *buf, u8 len); rtwdev 366 drivers/net/wireless/realtek/rtw88/coex.h void rtw_coex_wl_fwdbginfo_notify(struct rtw_dev *rtwdev, u8 *buf, u8 length); rtwdev 367 drivers/net/wireless/realtek/rtw88/coex.h void rtw_coex_switchband_notify(struct rtw_dev *rtwdev, u8 type); rtwdev 368 drivers/net/wireless/realtek/rtw88/coex.h void rtw_coex_wl_status_change_notify(struct rtw_dev *rtwdev); rtwdev 16 drivers/net/wireless/realtek/rtw88/debug.c struct rtw_dev *rtwdev; rtwdev 102 drivers/net/wireless/realtek/rtw88/debug.c struct rtw_dev *rtwdev = debugfs_priv->rtwdev; rtwdev 109 drivers/net/wireless/realtek/rtw88/debug.c val = rtw_read8(rtwdev, addr); rtwdev 113 drivers/net/wireless/realtek/rtw88/debug.c val = rtw_read16(rtwdev, addr); rtwdev 117 drivers/net/wireless/realtek/rtw88/debug.c val = rtw_read32(rtwdev, addr); rtwdev 127 drivers/net/wireless/realtek/rtw88/debug.c struct rtw_dev *rtwdev = debugfs_priv->rtwdev; rtwdev 135 drivers/net/wireless/realtek/rtw88/debug.c val = rtw_read_rf(rtwdev, path, addr, mask); rtwdev 168 drivers/net/wireless/realtek/rtw88/debug.c struct rtw_dev *rtwdev = debugfs_priv->rtwdev; rtwdev 181 drivers/net/wireless/realtek/rtw88/debug.c rtw_warn(rtwdev, "read reg setting wrong len\n"); rtwdev 193 drivers/net/wireless/realtek/rtw88/debug.c struct rtw_dev *rtwdev = debugfs_priv->rtwdev; rtwdev 202 drivers/net/wireless/realtek/rtw88/debug.c mutex_lock(&rtwdev->mutex); rtwdev 205 drivers/net/wireless/realtek/rtw88/debug.c rtw_write32(rtwdev, RTW_SEC_CMD_REG, command); rtwdev 206 drivers/net/wireless/realtek/rtw88/debug.c val = rtw_read32(rtwdev, RTW_SEC_READ_REG); rtwdev 212 drivers/net/wireless/realtek/rtw88/debug.c mutex_unlock(&rtwdev->mutex); rtwdev 219 drivers/net/wireless/realtek/rtw88/debug.c struct rtw_dev *rtwdev = debugfs_priv->rtwdev; rtwdev 220 drivers/net/wireless/realtek/rtw88/debug.c u8 page_size = rtwdev->chip->page_size; rtwdev 231 drivers/net/wireless/realtek/rtw88/debug.c ret = rtw_dump_drv_rsvd_page(rtwdev, offset, buf_size, (u32 *)buf); rtwdev 233 drivers/net/wireless/realtek/rtw88/debug.c rtw_err(rtwdev, "failed to dump rsvd page\n"); rtwdev 258 drivers/net/wireless/realtek/rtw88/debug.c struct rtw_dev *rtwdev = debugfs_priv->rtwdev; rtwdev 268 drivers/net/wireless/realtek/rtw88/debug.c rtw_warn(rtwdev, "invalid arguments\n"); rtwdev 284 drivers/net/wireless/realtek/rtw88/debug.c struct rtw_dev *rtwdev = debugfs_priv->rtwdev; rtwdev 294 drivers/net/wireless/realtek/rtw88/debug.c rtw_warn(rtwdev, "kstrtoint failed\n"); rtwdev 308 drivers/net/wireless/realtek/rtw88/debug.c struct rtw_dev *rtwdev = debugfs_priv->rtwdev; rtwdev 323 drivers/net/wireless/realtek/rtw88/debug.c rtw_dbg(rtwdev, RTW_DBG_DEBUGFS, rtwdev 325 drivers/net/wireless/realtek/rtw88/debug.c rtw_write8(rtwdev, addr, (u8)val); rtwdev 328 drivers/net/wireless/realtek/rtw88/debug.c rtw_dbg(rtwdev, RTW_DBG_DEBUGFS, rtwdev 330 drivers/net/wireless/realtek/rtw88/debug.c rtw_write16(rtwdev, addr, (u16)val); rtwdev 333 drivers/net/wireless/realtek/rtw88/debug.c rtw_dbg(rtwdev, RTW_DBG_DEBUGFS, rtwdev 335 drivers/net/wireless/realtek/rtw88/debug.c rtw_write32(rtwdev, addr, (u32)val); rtwdev 338 drivers/net/wireless/realtek/rtw88/debug.c rtw_dbg(rtwdev, RTW_DBG_DEBUGFS, rtwdev 351 drivers/net/wireless/realtek/rtw88/debug.c struct rtw_dev *rtwdev = debugfs_priv->rtwdev; rtwdev 361 drivers/net/wireless/realtek/rtw88/debug.c rtw_warn(rtwdev, "invalid args, [path] [addr] [mask] [val]\n"); rtwdev 365 drivers/net/wireless/realtek/rtw88/debug.c rtw_write_rf(rtwdev, path, addr, mask, val); rtwdev 366 drivers/net/wireless/realtek/rtw88/debug.c rtw_dbg(rtwdev, RTW_DBG_DEBUGFS, rtwdev 379 drivers/net/wireless/realtek/rtw88/debug.c struct rtw_dev *rtwdev = debugfs_priv->rtwdev; rtwdev 389 drivers/net/wireless/realtek/rtw88/debug.c rtw_warn(rtwdev, "invalid args, [path] [addr] [mask] [val]\n"); rtwdev 403 drivers/net/wireless/realtek/rtw88/debug.c struct rtw_dev *rtwdev = debugfs_priv->rtwdev; rtwdev 409 drivers/net/wireless/realtek/rtw88/debug.c val = rtw_read32(rtwdev, debugfs_priv->cb_data); rtwdev 414 drivers/net/wireless/realtek/rtw88/debug.c rtw_read32(rtwdev, (page | n))); rtwdev 423 drivers/net/wireless/realtek/rtw88/debug.c struct rtw_dev *rtwdev = debugfs_priv->rtwdev; rtwdev 429 drivers/net/wireless/realtek/rtw88/debug.c val = rtw_read32(rtwdev, debugfs_priv->cb_data); rtwdev 434 drivers/net/wireless/realtek/rtw88/debug.c rtw_read32(rtwdev, (page | n))); rtwdev 443 drivers/net/wireless/realtek/rtw88/debug.c struct rtw_dev *rtwdev = debugfs_priv->rtwdev; rtwdev 447 drivers/net/wireless/realtek/rtw88/debug.c for (path = 0; path < rtwdev->hal.rf_path_num; path++) { rtwdev 452 drivers/net/wireless/realtek/rtw88/debug.c data = rtw_read_rf(rtwdev, path, addr + offset, rtwdev 504 drivers/net/wireless/realtek/rtw88/debug.c struct rtw_dev *rtwdev = debugfs_priv->rtwdev; rtwdev 505 drivers/net/wireless/realtek/rtw88/debug.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 511 drivers/net/wireless/realtek/rtw88/debug.c u8 regd = rtwdev->regd.txpwr_regd; rtwdev 549 drivers/net/wireless/realtek/rtw88/debug.c rtw_get_tx_power_params(rtwdev, path, rate, bw, rtwdev 658 drivers/net/wireless/realtek/rtw88/debug.c rtw_debug_priv_ ##name.rtwdev = rtwdev; \ rtwdev 673 drivers/net/wireless/realtek/rtw88/debug.c void rtw_debugfs_init(struct rtw_dev *rtwdev) rtwdev 678 drivers/net/wireless/realtek/rtw88/debug.c rtwdev->hw->wiphy->debugfsdir); rtwdev 717 drivers/net/wireless/realtek/rtw88/debug.c if (rtwdev->chip->id == RTW_CHIP_TYPE_8822C) { rtwdev 731 drivers/net/wireless/realtek/rtw88/debug.c void __rtw_dbg(struct rtw_dev *rtwdev, enum rtw_debug_mask mask, rtwdev 743 drivers/net/wireless/realtek/rtw88/debug.c dev_printk(KERN_DEBUG, rtwdev->dev, "%pV", &vaf); rtwdev 25 drivers/net/wireless/realtek/rtw88/debug.h void rtw_debugfs_init(struct rtw_dev *rtwdev); rtwdev 29 drivers/net/wireless/realtek/rtw88/debug.h static inline void rtw_debugfs_init(struct rtw_dev *rtwdev) {} rtwdev 36 drivers/net/wireless/realtek/rtw88/debug.h void __rtw_dbg(struct rtw_dev *rtwdev, enum rtw_debug_mask mask, rtwdev 39 drivers/net/wireless/realtek/rtw88/debug.h #define rtw_dbg(rtwdev, a...) __rtw_dbg(rtwdev, ##a) rtwdev 43 drivers/net/wireless/realtek/rtw88/debug.h static inline void rtw_dbg(struct rtw_dev *rtwdev, enum rtw_debug_mask mask, rtwdev 48 drivers/net/wireless/realtek/rtw88/debug.h #define rtw_info(rtwdev, a...) dev_info(rtwdev->dev, ##a) rtwdev 49 drivers/net/wireless/realtek/rtw88/debug.h #define rtw_warn(rtwdev, a...) dev_warn(rtwdev->dev, ##a) rtwdev 50 drivers/net/wireless/realtek/rtw88/debug.h #define rtw_err(rtwdev, a...) dev_err(rtwdev->dev, ##a) rtwdev 12 drivers/net/wireless/realtek/rtw88/efuse.c static void switch_efuse_bank(struct rtw_dev *rtwdev) rtwdev 14 drivers/net/wireless/realtek/rtw88/efuse.c rtw_write32_mask(rtwdev, REG_LDO_EFUSE_CTRL, BIT_MASK_EFUSE_BANK_SEL, rtwdev 38 drivers/net/wireless/realtek/rtw88/efuse.c static int rtw_dump_logical_efuse_map(struct rtw_dev *rtwdev, u8 *phy_map, rtwdev 41 drivers/net/wireless/realtek/rtw88/efuse.c u32 physical_size = rtwdev->efuse.physical_size; rtwdev 42 drivers/net/wireless/realtek/rtw88/efuse.c u32 protect_size = rtwdev->efuse.protect_size; rtwdev 43 drivers/net/wireless/realtek/rtw88/efuse.c u32 logical_size = rtwdev->efuse.logical_size; rtwdev 85 drivers/net/wireless/realtek/rtw88/efuse.c static int rtw_dump_physical_efuse_map(struct rtw_dev *rtwdev, u8 *map) rtwdev 87 drivers/net/wireless/realtek/rtw88/efuse.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 88 drivers/net/wireless/realtek/rtw88/efuse.c u32 size = rtwdev->efuse.physical_size; rtwdev 93 drivers/net/wireless/realtek/rtw88/efuse.c switch_efuse_bank(rtwdev); rtwdev 96 drivers/net/wireless/realtek/rtw88/efuse.c chip->ops->cfg_ldo25(rtwdev, false); rtwdev 98 drivers/net/wireless/realtek/rtw88/efuse.c efuse_ctl = rtw_read32(rtwdev, REG_EFUSE_CTRL); rtwdev 103 drivers/net/wireless/realtek/rtw88/efuse.c rtw_write32(rtwdev, REG_EFUSE_CTRL, efuse_ctl & (~BIT_EF_FLAG)); rtwdev 108 drivers/net/wireless/realtek/rtw88/efuse.c efuse_ctl = rtw_read32(rtwdev, REG_EFUSE_CTRL); rtwdev 119 drivers/net/wireless/realtek/rtw88/efuse.c int rtw_parse_efuse_map(struct rtw_dev *rtwdev) rtwdev 121 drivers/net/wireless/realtek/rtw88/efuse.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 122 drivers/net/wireless/realtek/rtw88/efuse.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 136 drivers/net/wireless/realtek/rtw88/efuse.c ret = rtw_dump_physical_efuse_map(rtwdev, phy_map); rtwdev 138 drivers/net/wireless/realtek/rtw88/efuse.c rtw_err(rtwdev, "failed to dump efuse physical map\n"); rtwdev 143 drivers/net/wireless/realtek/rtw88/efuse.c ret = rtw_dump_logical_efuse_map(rtwdev, phy_map, log_map); rtwdev 145 drivers/net/wireless/realtek/rtw88/efuse.c rtw_err(rtwdev, "failed to dump efuse logical map\n"); rtwdev 149 drivers/net/wireless/realtek/rtw88/efuse.c ret = chip->ops->read_efuse(rtwdev, log_map); rtwdev 151 drivers/net/wireless/realtek/rtw88/efuse.c rtw_err(rtwdev, "failed to read efuse map\n"); rtwdev 24 drivers/net/wireless/realtek/rtw88/efuse.h int rtw_parse_efuse_map(struct rtw_dev *rtwdev); rtwdev 12 drivers/net/wireless/realtek/rtw88/fw.c static void rtw_fw_c2h_cmd_handle_ext(struct rtw_dev *rtwdev, rtwdev 23 drivers/net/wireless/realtek/rtw88/fw.c rtw_tx_report_handle(rtwdev, skb); rtwdev 30 drivers/net/wireless/realtek/rtw88/fw.c void rtw_fw_c2h_cmd_handle(struct rtw_dev *rtwdev, struct sk_buff *skb) rtwdev 40 drivers/net/wireless/realtek/rtw88/fw.c mutex_lock(&rtwdev->mutex); rtwdev 44 drivers/net/wireless/realtek/rtw88/fw.c rtw_coex_bt_info_notify(rtwdev, c2h->payload, len); rtwdev 47 drivers/net/wireless/realtek/rtw88/fw.c rtw_coex_wl_fwdbginfo_notify(rtwdev, c2h->payload, len); rtwdev 50 drivers/net/wireless/realtek/rtw88/fw.c rtw_fw_c2h_cmd_handle_ext(rtwdev, skb); rtwdev 56 drivers/net/wireless/realtek/rtw88/fw.c mutex_unlock(&rtwdev->mutex); rtwdev 59 drivers/net/wireless/realtek/rtw88/fw.c void rtw_fw_c2h_cmd_rx_irqsafe(struct rtw_dev *rtwdev, u32 pkt_offset, rtwdev 69 drivers/net/wireless/realtek/rtw88/fw.c rtw_dbg(rtwdev, RTW_DBG_FW, "recv C2H, id=0x%02x, seq=0x%02x, len=%d\n", rtwdev 74 drivers/net/wireless/realtek/rtw88/fw.c rtw_coex_info_response(rtwdev, skb); rtwdev 79 drivers/net/wireless/realtek/rtw88/fw.c skb_queue_tail(&rtwdev->c2h_queue, skb); rtwdev 80 drivers/net/wireless/realtek/rtw88/fw.c ieee80211_queue_work(rtwdev->hw, &rtwdev->c2h_work); rtwdev 86 drivers/net/wireless/realtek/rtw88/fw.c static void rtw_fw_send_h2c_command(struct rtw_dev *rtwdev, rtwdev 95 drivers/net/wireless/realtek/rtw88/fw.c rtw_dbg(rtwdev, RTW_DBG_FW, rtwdev 100 drivers/net/wireless/realtek/rtw88/fw.c spin_lock(&rtwdev->h2c.lock); rtwdev 102 drivers/net/wireless/realtek/rtw88/fw.c box = rtwdev->h2c.last_box_num; rtwdev 127 drivers/net/wireless/realtek/rtw88/fw.c box_state = rtw_read8(rtwdev, REG_HMETFR); rtwdev 131 drivers/net/wireless/realtek/rtw88/fw.c rtw_err(rtwdev, "failed to send h2c command\n"); rtwdev 136 drivers/net/wireless/realtek/rtw88/fw.c rtw_write8(rtwdev, box_reg + idx, h2c[idx]); rtwdev 138 drivers/net/wireless/realtek/rtw88/fw.c rtw_write8(rtwdev, box_ex_reg + idx, h2c[idx + 4]); rtwdev 140 drivers/net/wireless/realtek/rtw88/fw.c if (++rtwdev->h2c.last_box_num >= 4) rtwdev 141 drivers/net/wireless/realtek/rtw88/fw.c rtwdev->h2c.last_box_num = 0; rtwdev 144 drivers/net/wireless/realtek/rtw88/fw.c spin_unlock(&rtwdev->h2c.lock); rtwdev 147 drivers/net/wireless/realtek/rtw88/fw.c static void rtw_fw_send_h2c_packet(struct rtw_dev *rtwdev, u8 *h2c_pkt) rtwdev 151 drivers/net/wireless/realtek/rtw88/fw.c spin_lock(&rtwdev->h2c.lock); rtwdev 153 drivers/net/wireless/realtek/rtw88/fw.c FW_OFFLOAD_H2C_SET_SEQ_NUM(h2c_pkt, rtwdev->h2c.seq); rtwdev 154 drivers/net/wireless/realtek/rtw88/fw.c ret = rtw_hci_write_data_h2c(rtwdev, h2c_pkt, H2C_PKT_SIZE); rtwdev 156 drivers/net/wireless/realtek/rtw88/fw.c rtw_err(rtwdev, "failed to send h2c packet\n"); rtwdev 157 drivers/net/wireless/realtek/rtw88/fw.c rtwdev->h2c.seq++; rtwdev 159 drivers/net/wireless/realtek/rtw88/fw.c spin_unlock(&rtwdev->h2c.lock); rtwdev 163 drivers/net/wireless/realtek/rtw88/fw.c rtw_fw_send_general_info(struct rtw_dev *rtwdev) rtwdev 165 drivers/net/wireless/realtek/rtw88/fw.c struct rtw_fifo_conf *fifo = &rtwdev->fifo; rtwdev 177 drivers/net/wireless/realtek/rtw88/fw.c rtw_fw_send_h2c_packet(rtwdev, h2c_pkt); rtwdev 181 drivers/net/wireless/realtek/rtw88/fw.c rtw_fw_send_phydm_info(struct rtw_dev *rtwdev) rtwdev 183 drivers/net/wireless/realtek/rtw88/fw.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 184 drivers/net/wireless/realtek/rtw88/fw.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 203 drivers/net/wireless/realtek/rtw88/fw.c rtw_fw_send_h2c_packet(rtwdev, h2c_pkt); rtwdev 206 drivers/net/wireless/realtek/rtw88/fw.c void rtw_fw_do_iqk(struct rtw_dev *rtwdev, struct rtw_iqk_para *para) rtwdev 216 drivers/net/wireless/realtek/rtw88/fw.c rtw_fw_send_h2c_packet(rtwdev, h2c_pkt); rtwdev 219 drivers/net/wireless/realtek/rtw88/fw.c void rtw_fw_query_bt_info(struct rtw_dev *rtwdev) rtwdev 227 drivers/net/wireless/realtek/rtw88/fw.c rtw_fw_send_h2c_command(rtwdev, h2c_pkt); rtwdev 230 drivers/net/wireless/realtek/rtw88/fw.c void rtw_fw_wl_ch_info(struct rtw_dev *rtwdev, u8 link, u8 ch, u8 bw) rtwdev 240 drivers/net/wireless/realtek/rtw88/fw.c rtw_fw_send_h2c_command(rtwdev, h2c_pkt); rtwdev 243 drivers/net/wireless/realtek/rtw88/fw.c void rtw_fw_query_bt_mp_info(struct rtw_dev *rtwdev, rtwdev 256 drivers/net/wireless/realtek/rtw88/fw.c rtw_fw_send_h2c_command(rtwdev, h2c_pkt); rtwdev 259 drivers/net/wireless/realtek/rtw88/fw.c void rtw_fw_force_bt_tx_power(struct rtw_dev *rtwdev, u8 bt_pwr_dec_lvl) rtwdev 268 drivers/net/wireless/realtek/rtw88/fw.c rtw_fw_send_h2c_command(rtwdev, h2c_pkt); rtwdev 271 drivers/net/wireless/realtek/rtw88/fw.c void rtw_fw_bt_ignore_wlan_action(struct rtw_dev *rtwdev, bool enable) rtwdev 279 drivers/net/wireless/realtek/rtw88/fw.c rtw_fw_send_h2c_command(rtwdev, h2c_pkt); rtwdev 282 drivers/net/wireless/realtek/rtw88/fw.c void rtw_fw_coex_tdma_type(struct rtw_dev *rtwdev, rtwdev 295 drivers/net/wireless/realtek/rtw88/fw.c rtw_fw_send_h2c_command(rtwdev, h2c_pkt); rtwdev 298 drivers/net/wireless/realtek/rtw88/fw.c void rtw_fw_bt_wifi_control(struct rtw_dev *rtwdev, u8 op_code, u8 *data) rtwdev 312 drivers/net/wireless/realtek/rtw88/fw.c rtw_fw_send_h2c_command(rtwdev, h2c_pkt); rtwdev 315 drivers/net/wireless/realtek/rtw88/fw.c void rtw_fw_send_rssi_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si) rtwdev 327 drivers/net/wireless/realtek/rtw88/fw.c rtw_fw_send_h2c_command(rtwdev, h2c_pkt); rtwdev 330 drivers/net/wireless/realtek/rtw88/fw.c void rtw_fw_send_ra_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si) rtwdev 355 drivers/net/wireless/realtek/rtw88/fw.c rtw_fw_send_h2c_command(rtwdev, h2c_pkt); rtwdev 358 drivers/net/wireless/realtek/rtw88/fw.c void rtw_fw_media_status_report(struct rtw_dev *rtwdev, u8 mac_id, bool connect) rtwdev 366 drivers/net/wireless/realtek/rtw88/fw.c rtw_fw_send_h2c_command(rtwdev, h2c_pkt); rtwdev 369 drivers/net/wireless/realtek/rtw88/fw.c void rtw_fw_set_pwr_mode(struct rtw_dev *rtwdev) rtwdev 371 drivers/net/wireless/realtek/rtw88/fw.c struct rtw_lps_conf *conf = &rtwdev->lps_conf; rtwdev 383 drivers/net/wireless/realtek/rtw88/fw.c rtw_fw_send_h2c_command(rtwdev, h2c_pkt); rtwdev 386 drivers/net/wireless/realtek/rtw88/fw.c static u8 rtw_get_rsvd_page_location(struct rtw_dev *rtwdev, rtwdev 392 drivers/net/wireless/realtek/rtw88/fw.c list_for_each_entry(rsvd_pkt, &rtwdev->rsvd_page_list, list) { rtwdev 400 drivers/net/wireless/realtek/rtw88/fw.c void rtw_send_rsvd_page_h2c(struct rtw_dev *rtwdev) rtwdev 407 drivers/net/wireless/realtek/rtw88/fw.c location = rtw_get_rsvd_page_location(rtwdev, RSVD_PROBE_RESP); rtwdev 409 drivers/net/wireless/realtek/rtw88/fw.c rtw_dbg(rtwdev, RTW_DBG_FW, "RSVD_PROBE_RESP loc: %d\n", location); rtwdev 411 drivers/net/wireless/realtek/rtw88/fw.c location = rtw_get_rsvd_page_location(rtwdev, RSVD_PS_POLL); rtwdev 413 drivers/net/wireless/realtek/rtw88/fw.c rtw_dbg(rtwdev, RTW_DBG_FW, "RSVD_PS_POLL loc: %d\n", location); rtwdev 415 drivers/net/wireless/realtek/rtw88/fw.c location = rtw_get_rsvd_page_location(rtwdev, RSVD_NULL); rtwdev 417 drivers/net/wireless/realtek/rtw88/fw.c rtw_dbg(rtwdev, RTW_DBG_FW, "RSVD_NULL loc: %d\n", location); rtwdev 419 drivers/net/wireless/realtek/rtw88/fw.c location = rtw_get_rsvd_page_location(rtwdev, RSVD_QOS_NULL); rtwdev 421 drivers/net/wireless/realtek/rtw88/fw.c rtw_dbg(rtwdev, RTW_DBG_FW, "RSVD_QOS_NULL loc: %d\n", location); rtwdev 423 drivers/net/wireless/realtek/rtw88/fw.c rtw_fw_send_h2c_command(rtwdev, h2c_pkt); rtwdev 477 drivers/net/wireless/realtek/rtw88/fw.c static void rtw_fill_rsvd_page_desc(struct rtw_dev *rtwdev, struct sk_buff *skb) rtwdev 480 drivers/net/wireless/realtek/rtw88/fw.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 484 drivers/net/wireless/realtek/rtw88/fw.c rtw_rsvd_page_pkt_info_update(rtwdev, &pkt_info, skb); rtwdev 495 drivers/net/wireless/realtek/rtw88/fw.c static void rtw_rsvd_page_list_to_buf(struct rtw_dev *rtwdev, u8 page_size, rtwdev 508 drivers/net/wireless/realtek/rtw88/fw.c void rtw_add_rsvd_page(struct rtw_dev *rtwdev, enum rtw_rsvd_packet_type type, rtwdev 513 drivers/net/wireless/realtek/rtw88/fw.c lockdep_assert_held(&rtwdev->mutex); rtwdev 515 drivers/net/wireless/realtek/rtw88/fw.c list_for_each_entry(rsvd_pkt, &rtwdev->rsvd_page_list, list) { rtwdev 526 drivers/net/wireless/realtek/rtw88/fw.c list_add_tail(&rsvd_pkt->list, &rtwdev->rsvd_page_list); rtwdev 529 drivers/net/wireless/realtek/rtw88/fw.c void rtw_reset_rsvd_page(struct rtw_dev *rtwdev) rtwdev 533 drivers/net/wireless/realtek/rtw88/fw.c lockdep_assert_held(&rtwdev->mutex); rtwdev 535 drivers/net/wireless/realtek/rtw88/fw.c list_for_each_entry_safe(rsvd_pkt, tmp, &rtwdev->rsvd_page_list, list) { rtwdev 543 drivers/net/wireless/realtek/rtw88/fw.c int rtw_fw_write_data_rsvd_page(struct rtw_dev *rtwdev, u16 pg_addr, rtwdev 551 drivers/net/wireless/realtek/rtw88/fw.c lockdep_assert_held(&rtwdev->mutex); rtwdev 557 drivers/net/wireless/realtek/rtw88/fw.c rtw_write16(rtwdev, REG_FIFOPAGE_CTRL_2, pg_addr | BIT_BCN_VALID_V1); rtwdev 559 drivers/net/wireless/realtek/rtw88/fw.c val = rtw_read8(rtwdev, REG_CR + 1); rtwdev 562 drivers/net/wireless/realtek/rtw88/fw.c rtw_write8(rtwdev, REG_CR + 1, val); rtwdev 564 drivers/net/wireless/realtek/rtw88/fw.c val = rtw_read8(rtwdev, REG_FWHW_TXQ_CTRL + 2); rtwdev 567 drivers/net/wireless/realtek/rtw88/fw.c rtw_write8(rtwdev, REG_FWHW_TXQ_CTRL + 2, val); rtwdev 569 drivers/net/wireless/realtek/rtw88/fw.c ret = rtw_hci_write_data_rsvd_page(rtwdev, buf, size); rtwdev 571 drivers/net/wireless/realtek/rtw88/fw.c rtw_err(rtwdev, "failed to write data to rsvd page\n"); rtwdev 575 drivers/net/wireless/realtek/rtw88/fw.c if (!check_hw_ready(rtwdev, REG_FIFOPAGE_CTRL_2, BIT_BCN_VALID_V1, 1)) { rtwdev 576 drivers/net/wireless/realtek/rtw88/fw.c rtw_err(rtwdev, "error beacon valid\n"); rtwdev 581 drivers/net/wireless/realtek/rtw88/fw.c rsvd_pg_head = rtwdev->fifo.rsvd_boundary; rtwdev 582 drivers/net/wireless/realtek/rtw88/fw.c rtw_write16(rtwdev, REG_FIFOPAGE_CTRL_2, rtwdev 584 drivers/net/wireless/realtek/rtw88/fw.c rtw_write8(rtwdev, REG_FWHW_TXQ_CTRL + 2, bckp[1]); rtwdev 585 drivers/net/wireless/realtek/rtw88/fw.c rtw_write8(rtwdev, REG_CR + 1, bckp[0]); rtwdev 590 drivers/net/wireless/realtek/rtw88/fw.c static int rtw_download_drv_rsvd_page(struct rtw_dev *rtwdev, u8 *buf, u32 size) rtwdev 596 drivers/net/wireless/realtek/rtw88/fw.c pg_size = rtwdev->chip->page_size; rtwdev 598 drivers/net/wireless/realtek/rtw88/fw.c if (pg_num > rtwdev->fifo.rsvd_drv_pg_num) rtwdev 601 drivers/net/wireless/realtek/rtw88/fw.c pg_addr = rtwdev->fifo.rsvd_drv_addr; rtwdev 603 drivers/net/wireless/realtek/rtw88/fw.c return rtw_fw_write_data_rsvd_page(rtwdev, pg_addr, buf, size); rtwdev 606 drivers/net/wireless/realtek/rtw88/fw.c static u8 *rtw_build_rsvd_page(struct rtw_dev *rtwdev, rtwdev 609 drivers/net/wireless/realtek/rtw88/fw.c struct ieee80211_hw *hw = rtwdev->hw; rtwdev 610 drivers/net/wireless/realtek/rtw88/fw.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 622 drivers/net/wireless/realtek/rtw88/fw.c list_for_each_entry(rsvd_pkt, &rtwdev->rsvd_page_list, list) { rtwdev 625 drivers/net/wireless/realtek/rtw88/fw.c rtw_err(rtwdev, "failed to build rsvd packet\n"); rtwdev 633 drivers/net/wireless/realtek/rtw88/fw.c rtw_fill_rsvd_page_desc(rtwdev, iter); rtwdev 648 drivers/net/wireless/realtek/rtw88/fw.c rtw_err(rtwdev, "first page should be a beacon\n"); rtwdev 658 drivers/net/wireless/realtek/rtw88/fw.c if (total_page > rtwdev->fifo.rsvd_drv_pg_num) { rtwdev 659 drivers/net/wireless/realtek/rtw88/fw.c rtw_err(rtwdev, "rsvd page over size: %d\n", total_page); rtwdev 675 drivers/net/wireless/realtek/rtw88/fw.c list_for_each_entry(rsvd_pkt, &rtwdev->rsvd_page_list, list) { rtwdev 676 drivers/net/wireless/realtek/rtw88/fw.c rtw_rsvd_page_list_to_buf(rtwdev, page_size, page_margin, rtwdev 690 drivers/net/wireless/realtek/rtw88/fw.c list_for_each_entry(rsvd_pkt, &rtwdev->rsvd_page_list, list) rtwdev 697 drivers/net/wireless/realtek/rtw88/fw.c rtw_download_beacon(struct rtw_dev *rtwdev, struct ieee80211_vif *vif) rtwdev 699 drivers/net/wireless/realtek/rtw88/fw.c struct ieee80211_hw *hw = rtwdev->hw; rtwdev 705 drivers/net/wireless/realtek/rtw88/fw.c rtw_err(rtwdev, "failed to get beacon skb\n"); rtwdev 710 drivers/net/wireless/realtek/rtw88/fw.c ret = rtw_download_drv_rsvd_page(rtwdev, skb->data, skb->len); rtwdev 712 drivers/net/wireless/realtek/rtw88/fw.c rtw_err(rtwdev, "failed to download drv rsvd page\n"); rtwdev 720 drivers/net/wireless/realtek/rtw88/fw.c int rtw_fw_download_rsvd_page(struct rtw_dev *rtwdev, struct ieee80211_vif *vif) rtwdev 726 drivers/net/wireless/realtek/rtw88/fw.c buf = rtw_build_rsvd_page(rtwdev, vif, &size); rtwdev 728 drivers/net/wireless/realtek/rtw88/fw.c rtw_err(rtwdev, "failed to build rsvd page pkt\n"); rtwdev 732 drivers/net/wireless/realtek/rtw88/fw.c ret = rtw_download_drv_rsvd_page(rtwdev, buf, size); rtwdev 734 drivers/net/wireless/realtek/rtw88/fw.c rtw_err(rtwdev, "failed to download drv rsvd page\n"); rtwdev 743 drivers/net/wireless/realtek/rtw88/fw.c ret = rtw_download_beacon(rtwdev, vif); rtwdev 745 drivers/net/wireless/realtek/rtw88/fw.c rtw_err(rtwdev, "failed to download beacon\n"); rtwdev 755 drivers/net/wireless/realtek/rtw88/fw.c int rtw_dump_drv_rsvd_page(struct rtw_dev *rtwdev, rtwdev 758 drivers/net/wireless/realtek/rtw88/fw.c struct rtw_fifo_conf *fifo = &rtwdev->fifo; rtwdev 766 drivers/net/wireless/realtek/rtw88/fw.c rtw_warn(rtwdev, "should be 4-byte aligned\n"); rtwdev 775 drivers/net/wireless/realtek/rtw88/fw.c rcr = rtw_read8(rtwdev, REG_RCR + 2); rtwdev 776 drivers/net/wireless/realtek/rtw88/fw.c ctl = rtw_read16(rtwdev, REG_PKTBUF_DBG_CTRL) & 0xf000; rtwdev 779 drivers/net/wireless/realtek/rtw88/fw.c rtw_write8(rtwdev, REG_RCR, rcr | BIT(3)); rtwdev 782 drivers/net/wireless/realtek/rtw88/fw.c rtw_write16(rtwdev, REG_PKTBUF_DBG_CTRL, start_pg | ctl); rtwdev 786 drivers/net/wireless/realtek/rtw88/fw.c buf[idx++] = rtw_read32(rtwdev, i); rtwdev 797 drivers/net/wireless/realtek/rtw88/fw.c rtw_write16(rtwdev, REG_PKTBUF_DBG_CTRL, ctl); rtwdev 798 drivers/net/wireless/realtek/rtw88/fw.c rtw_write8(rtwdev, REG_RCR + 2, rcr); rtwdev 265 drivers/net/wireless/realtek/rtw88/fw.h void rtw_fw_c2h_cmd_rx_irqsafe(struct rtw_dev *rtwdev, u32 pkt_offset, rtwdev 267 drivers/net/wireless/realtek/rtw88/fw.h void rtw_fw_c2h_cmd_handle(struct rtw_dev *rtwdev, struct sk_buff *skb); rtwdev 268 drivers/net/wireless/realtek/rtw88/fw.h void rtw_fw_send_general_info(struct rtw_dev *rtwdev); rtwdev 269 drivers/net/wireless/realtek/rtw88/fw.h void rtw_fw_send_phydm_info(struct rtw_dev *rtwdev); rtwdev 271 drivers/net/wireless/realtek/rtw88/fw.h void rtw_fw_do_iqk(struct rtw_dev *rtwdev, struct rtw_iqk_para *para); rtwdev 272 drivers/net/wireless/realtek/rtw88/fw.h void rtw_fw_set_pwr_mode(struct rtw_dev *rtwdev); rtwdev 273 drivers/net/wireless/realtek/rtw88/fw.h void rtw_fw_query_bt_info(struct rtw_dev *rtwdev); rtwdev 274 drivers/net/wireless/realtek/rtw88/fw.h void rtw_fw_wl_ch_info(struct rtw_dev *rtwdev, u8 link, u8 ch, u8 bw); rtwdev 275 drivers/net/wireless/realtek/rtw88/fw.h void rtw_fw_query_bt_mp_info(struct rtw_dev *rtwdev, rtwdev 277 drivers/net/wireless/realtek/rtw88/fw.h void rtw_fw_force_bt_tx_power(struct rtw_dev *rtwdev, u8 bt_pwr_dec_lvl); rtwdev 278 drivers/net/wireless/realtek/rtw88/fw.h void rtw_fw_bt_ignore_wlan_action(struct rtw_dev *rtwdev, bool enable); rtwdev 279 drivers/net/wireless/realtek/rtw88/fw.h void rtw_fw_coex_tdma_type(struct rtw_dev *rtwdev, rtwdev 281 drivers/net/wireless/realtek/rtw88/fw.h void rtw_fw_bt_wifi_control(struct rtw_dev *rtwdev, u8 op_code, u8 *data); rtwdev 282 drivers/net/wireless/realtek/rtw88/fw.h void rtw_fw_send_rssi_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si); rtwdev 283 drivers/net/wireless/realtek/rtw88/fw.h void rtw_fw_send_ra_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si); rtwdev 284 drivers/net/wireless/realtek/rtw88/fw.h void rtw_fw_media_status_report(struct rtw_dev *rtwdev, u8 mac_id, bool conn); rtwdev 285 drivers/net/wireless/realtek/rtw88/fw.h void rtw_add_rsvd_page(struct rtw_dev *rtwdev, enum rtw_rsvd_packet_type type, rtwdev 287 drivers/net/wireless/realtek/rtw88/fw.h int rtw_fw_write_data_rsvd_page(struct rtw_dev *rtwdev, u16 pg_addr, rtwdev 289 drivers/net/wireless/realtek/rtw88/fw.h void rtw_reset_rsvd_page(struct rtw_dev *rtwdev); rtwdev 290 drivers/net/wireless/realtek/rtw88/fw.h int rtw_fw_download_rsvd_page(struct rtw_dev *rtwdev, rtwdev 292 drivers/net/wireless/realtek/rtw88/fw.h void rtw_send_rsvd_page_h2c(struct rtw_dev *rtwdev); rtwdev 293 drivers/net/wireless/realtek/rtw88/fw.h int rtw_dump_drv_rsvd_page(struct rtw_dev *rtwdev, rtwdev 10 drivers/net/wireless/realtek/rtw88/hci.h int (*tx)(struct rtw_dev *rtwdev, rtwdev 13 drivers/net/wireless/realtek/rtw88/hci.h int (*setup)(struct rtw_dev *rtwdev); rtwdev 14 drivers/net/wireless/realtek/rtw88/hci.h int (*start)(struct rtw_dev *rtwdev); rtwdev 15 drivers/net/wireless/realtek/rtw88/hci.h void (*stop)(struct rtw_dev *rtwdev); rtwdev 17 drivers/net/wireless/realtek/rtw88/hci.h int (*write_data_rsvd_page)(struct rtw_dev *rtwdev, u8 *buf, u32 size); rtwdev 18 drivers/net/wireless/realtek/rtw88/hci.h int (*write_data_h2c)(struct rtw_dev *rtwdev, u8 *buf, u32 size); rtwdev 20 drivers/net/wireless/realtek/rtw88/hci.h u8 (*read8)(struct rtw_dev *rtwdev, u32 addr); rtwdev 21 drivers/net/wireless/realtek/rtw88/hci.h u16 (*read16)(struct rtw_dev *rtwdev, u32 addr); rtwdev 22 drivers/net/wireless/realtek/rtw88/hci.h u32 (*read32)(struct rtw_dev *rtwdev, u32 addr); rtwdev 23 drivers/net/wireless/realtek/rtw88/hci.h void (*write8)(struct rtw_dev *rtwdev, u32 addr, u8 val); rtwdev 24 drivers/net/wireless/realtek/rtw88/hci.h void (*write16)(struct rtw_dev *rtwdev, u32 addr, u16 val); rtwdev 25 drivers/net/wireless/realtek/rtw88/hci.h void (*write32)(struct rtw_dev *rtwdev, u32 addr, u32 val); rtwdev 28 drivers/net/wireless/realtek/rtw88/hci.h static inline int rtw_hci_tx(struct rtw_dev *rtwdev, rtwdev 32 drivers/net/wireless/realtek/rtw88/hci.h return rtwdev->hci.ops->tx(rtwdev, pkt_info, skb); rtwdev 35 drivers/net/wireless/realtek/rtw88/hci.h static inline int rtw_hci_setup(struct rtw_dev *rtwdev) rtwdev 37 drivers/net/wireless/realtek/rtw88/hci.h return rtwdev->hci.ops->setup(rtwdev); rtwdev 40 drivers/net/wireless/realtek/rtw88/hci.h static inline int rtw_hci_start(struct rtw_dev *rtwdev) rtwdev 42 drivers/net/wireless/realtek/rtw88/hci.h return rtwdev->hci.ops->start(rtwdev); rtwdev 45 drivers/net/wireless/realtek/rtw88/hci.h static inline void rtw_hci_stop(struct rtw_dev *rtwdev) rtwdev 47 drivers/net/wireless/realtek/rtw88/hci.h rtwdev->hci.ops->stop(rtwdev); rtwdev 51 drivers/net/wireless/realtek/rtw88/hci.h rtw_hci_write_data_rsvd_page(struct rtw_dev *rtwdev, u8 *buf, u32 size) rtwdev 53 drivers/net/wireless/realtek/rtw88/hci.h return rtwdev->hci.ops->write_data_rsvd_page(rtwdev, buf, size); rtwdev 57 drivers/net/wireless/realtek/rtw88/hci.h rtw_hci_write_data_h2c(struct rtw_dev *rtwdev, u8 *buf, u32 size) rtwdev 59 drivers/net/wireless/realtek/rtw88/hci.h return rtwdev->hci.ops->write_data_h2c(rtwdev, buf, size); rtwdev 62 drivers/net/wireless/realtek/rtw88/hci.h static inline u8 rtw_read8(struct rtw_dev *rtwdev, u32 addr) rtwdev 64 drivers/net/wireless/realtek/rtw88/hci.h return rtwdev->hci.ops->read8(rtwdev, addr); rtwdev 67 drivers/net/wireless/realtek/rtw88/hci.h static inline u16 rtw_read16(struct rtw_dev *rtwdev, u32 addr) rtwdev 69 drivers/net/wireless/realtek/rtw88/hci.h return rtwdev->hci.ops->read16(rtwdev, addr); rtwdev 72 drivers/net/wireless/realtek/rtw88/hci.h static inline u32 rtw_read32(struct rtw_dev *rtwdev, u32 addr) rtwdev 74 drivers/net/wireless/realtek/rtw88/hci.h return rtwdev->hci.ops->read32(rtwdev, addr); rtwdev 77 drivers/net/wireless/realtek/rtw88/hci.h static inline void rtw_write8(struct rtw_dev *rtwdev, u32 addr, u8 val) rtwdev 79 drivers/net/wireless/realtek/rtw88/hci.h rtwdev->hci.ops->write8(rtwdev, addr, val); rtwdev 82 drivers/net/wireless/realtek/rtw88/hci.h static inline void rtw_write16(struct rtw_dev *rtwdev, u32 addr, u16 val) rtwdev 84 drivers/net/wireless/realtek/rtw88/hci.h rtwdev->hci.ops->write16(rtwdev, addr, val); rtwdev 87 drivers/net/wireless/realtek/rtw88/hci.h static inline void rtw_write32(struct rtw_dev *rtwdev, u32 addr, u32 val) rtwdev 89 drivers/net/wireless/realtek/rtw88/hci.h rtwdev->hci.ops->write32(rtwdev, addr, val); rtwdev 92 drivers/net/wireless/realtek/rtw88/hci.h static inline void rtw_write8_set(struct rtw_dev *rtwdev, u32 addr, u8 bit) rtwdev 96 drivers/net/wireless/realtek/rtw88/hci.h val = rtw_read8(rtwdev, addr); rtwdev 97 drivers/net/wireless/realtek/rtw88/hci.h rtw_write8(rtwdev, addr, val | bit); rtwdev 100 drivers/net/wireless/realtek/rtw88/hci.h static inline void rtw_write16_set(struct rtw_dev *rtwdev, u32 addr, u16 bit) rtwdev 104 drivers/net/wireless/realtek/rtw88/hci.h val = rtw_read16(rtwdev, addr); rtwdev 105 drivers/net/wireless/realtek/rtw88/hci.h rtw_write16(rtwdev, addr, val | bit); rtwdev 108 drivers/net/wireless/realtek/rtw88/hci.h static inline void rtw_write32_set(struct rtw_dev *rtwdev, u32 addr, u32 bit) rtwdev 112 drivers/net/wireless/realtek/rtw88/hci.h val = rtw_read32(rtwdev, addr); rtwdev 113 drivers/net/wireless/realtek/rtw88/hci.h rtw_write32(rtwdev, addr, val | bit); rtwdev 116 drivers/net/wireless/realtek/rtw88/hci.h static inline void rtw_write8_clr(struct rtw_dev *rtwdev, u32 addr, u8 bit) rtwdev 120 drivers/net/wireless/realtek/rtw88/hci.h val = rtw_read8(rtwdev, addr); rtwdev 121 drivers/net/wireless/realtek/rtw88/hci.h rtw_write8(rtwdev, addr, val & ~bit); rtwdev 124 drivers/net/wireless/realtek/rtw88/hci.h static inline void rtw_write16_clr(struct rtw_dev *rtwdev, u32 addr, u16 bit) rtwdev 128 drivers/net/wireless/realtek/rtw88/hci.h val = rtw_read16(rtwdev, addr); rtwdev 129 drivers/net/wireless/realtek/rtw88/hci.h rtw_write16(rtwdev, addr, val & ~bit); rtwdev 132 drivers/net/wireless/realtek/rtw88/hci.h static inline void rtw_write32_clr(struct rtw_dev *rtwdev, u32 addr, u32 bit) rtwdev 136 drivers/net/wireless/realtek/rtw88/hci.h val = rtw_read32(rtwdev, addr); rtwdev 137 drivers/net/wireless/realtek/rtw88/hci.h rtw_write32(rtwdev, addr, val & ~bit); rtwdev 141 drivers/net/wireless/realtek/rtw88/hci.h rtw_read_rf(struct rtw_dev *rtwdev, enum rtw_rf_path rf_path, rtwdev 147 drivers/net/wireless/realtek/rtw88/hci.h spin_lock_irqsave(&rtwdev->rf_lock, flags); rtwdev 148 drivers/net/wireless/realtek/rtw88/hci.h val = rtwdev->chip->ops->read_rf(rtwdev, rf_path, addr, mask); rtwdev 149 drivers/net/wireless/realtek/rtw88/hci.h spin_unlock_irqrestore(&rtwdev->rf_lock, flags); rtwdev 155 drivers/net/wireless/realtek/rtw88/hci.h rtw_write_rf(struct rtw_dev *rtwdev, enum rtw_rf_path rf_path, rtwdev 160 drivers/net/wireless/realtek/rtw88/hci.h spin_lock_irqsave(&rtwdev->rf_lock, flags); rtwdev 161 drivers/net/wireless/realtek/rtw88/hci.h rtwdev->chip->ops->write_rf(rtwdev, rf_path, addr, mask, data); rtwdev 162 drivers/net/wireless/realtek/rtw88/hci.h spin_unlock_irqrestore(&rtwdev->rf_lock, flags); rtwdev 166 drivers/net/wireless/realtek/rtw88/hci.h rtw_read32_mask(struct rtw_dev *rtwdev, u32 addr, u32 mask) rtwdev 172 drivers/net/wireless/realtek/rtw88/hci.h orig = rtw_read32(rtwdev, addr); rtwdev 179 drivers/net/wireless/realtek/rtw88/hci.h rtw_write32_mask(struct rtw_dev *rtwdev, u32 addr, u32 mask, u32 data) rtwdev 187 drivers/net/wireless/realtek/rtw88/hci.h orig = rtw_read32(rtwdev, addr); rtwdev 189 drivers/net/wireless/realtek/rtw88/hci.h rtw_write32(rtwdev, addr, set); rtwdev 193 drivers/net/wireless/realtek/rtw88/hci.h rtw_write8_mask(struct rtw_dev *rtwdev, u32 addr, u32 mask, u8 data) rtwdev 201 drivers/net/wireless/realtek/rtw88/hci.h orig = rtw_read8(rtwdev, addr); rtwdev 203 drivers/net/wireless/realtek/rtw88/hci.h rtw_write8(rtwdev, addr, set); rtwdev 206 drivers/net/wireless/realtek/rtw88/hci.h static inline enum rtw_hci_type rtw_hci_type(struct rtw_dev *rtwdev) rtwdev 208 drivers/net/wireless/realtek/rtw88/hci.h return rtwdev->hci.type; rtwdev 11 drivers/net/wireless/realtek/rtw88/mac.c void rtw_set_channel_mac(struct rtw_dev *rtwdev, u8 channel, u8 bw, rtwdev 23 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8(rtwdev, REG_DATA_SC, rtwdev 26 drivers/net/wireless/realtek/rtw88/mac.c value32 = rtw_read32(rtwdev, REG_WMAC_TRXPTCL_CTL); rtwdev 39 drivers/net/wireless/realtek/rtw88/mac.c rtw_write32(rtwdev, REG_WMAC_TRXPTCL_CTL, value32); rtwdev 41 drivers/net/wireless/realtek/rtw88/mac.c value32 = rtw_read32(rtwdev, REG_AFE_CTRL1) & ~(BIT_MAC_CLK_SEL); rtwdev 43 drivers/net/wireless/realtek/rtw88/mac.c rtw_write32(rtwdev, REG_AFE_CTRL1, value32); rtwdev 45 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8(rtwdev, REG_USTIME_TSF, MAC_CLK_SPEED); rtwdev 46 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8(rtwdev, REG_USTIME_EDCA, MAC_CLK_SPEED); rtwdev 48 drivers/net/wireless/realtek/rtw88/mac.c value8 = rtw_read8(rtwdev, REG_CCK_CHECK); rtwdev 52 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8(rtwdev, REG_CCK_CHECK, value8); rtwdev 55 drivers/net/wireless/realtek/rtw88/mac.c static int rtw_mac_pre_system_cfg(struct rtw_dev *rtwdev) rtwdev 60 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8(rtwdev, REG_RSV_CTRL, 0); rtwdev 62 drivers/net/wireless/realtek/rtw88/mac.c switch (rtw_hci_type(rtwdev)) { rtwdev 64 drivers/net/wireless/realtek/rtw88/mac.c rtw_write32_set(rtwdev, REG_HCI_OPT_CTRL, BIT_BT_DIG_CLK_EN); rtwdev 73 drivers/net/wireless/realtek/rtw88/mac.c value32 = rtw_read32(rtwdev, REG_PAD_CTRL1); rtwdev 75 drivers/net/wireless/realtek/rtw88/mac.c rtw_write32(rtwdev, REG_PAD_CTRL1, value32); rtwdev 77 drivers/net/wireless/realtek/rtw88/mac.c value32 = rtw_read32(rtwdev, REG_LED_CFG); rtwdev 79 drivers/net/wireless/realtek/rtw88/mac.c rtw_write32(rtwdev, REG_LED_CFG, value32); rtwdev 81 drivers/net/wireless/realtek/rtw88/mac.c value32 = rtw_read32(rtwdev, REG_GPIO_MUXCFG); rtwdev 83 drivers/net/wireless/realtek/rtw88/mac.c rtw_write32(rtwdev, REG_GPIO_MUXCFG, value32); rtwdev 86 drivers/net/wireless/realtek/rtw88/mac.c value8 = rtw_read8(rtwdev, REG_SYS_FUNC_EN); rtwdev 88 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8(rtwdev, REG_SYS_FUNC_EN, value8); rtwdev 90 drivers/net/wireless/realtek/rtw88/mac.c value8 = rtw_read8(rtwdev, REG_RF_CTRL); rtwdev 92 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8(rtwdev, REG_RF_CTRL, value8); rtwdev 94 drivers/net/wireless/realtek/rtw88/mac.c value32 = rtw_read32(rtwdev, REG_WLRF1); rtwdev 96 drivers/net/wireless/realtek/rtw88/mac.c rtw_write32(rtwdev, REG_WLRF1, value32); rtwdev 101 drivers/net/wireless/realtek/rtw88/mac.c static int rtw_pwr_cmd_polling(struct rtw_dev *rtwdev, rtwdev 116 drivers/net/wireless/realtek/rtw88/mac.c value = rtw_read8(rtwdev, offset); rtwdev 121 drivers/net/wireless/realtek/rtw88/mac.c if (rtw_hci_type(rtwdev) == RTW_HCI_TYPE_PCIE && rtwdev 123 drivers/net/wireless/realtek/rtw88/mac.c value = rtw_read8(rtwdev, REG_SYS_PW_CTRL); rtwdev 125 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8(rtwdev, REG_SYS_PW_CTRL, value); rtwdev 127 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8(rtwdev, REG_SYS_PW_CTRL, value); rtwdev 139 drivers/net/wireless/realtek/rtw88/mac.c static int rtw_sub_pwr_seq_parser(struct rtw_dev *rtwdev, u8 intf_mask, rtwdev 158 drivers/net/wireless/realtek/rtw88/mac.c value = rtw_read8(rtwdev, offset); rtwdev 161 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8(rtwdev, offset, value); rtwdev 164 drivers/net/wireless/realtek/rtw88/mac.c if (rtw_pwr_cmd_polling(rtwdev, cur_cmd)) rtwdev 183 drivers/net/wireless/realtek/rtw88/mac.c static int rtw_pwr_seq_parser(struct rtw_dev *rtwdev, rtwdev 193 drivers/net/wireless/realtek/rtw88/mac.c cut = rtwdev->hal.cut_version; rtwdev 195 drivers/net/wireless/realtek/rtw88/mac.c switch (rtw_hci_type(rtwdev)) { rtwdev 211 drivers/net/wireless/realtek/rtw88/mac.c ret = rtw_sub_pwr_seq_parser(rtwdev, intf_mask, cut_mask, cmd); rtwdev 221 drivers/net/wireless/realtek/rtw88/mac.c static int rtw_mac_power_switch(struct rtw_dev *rtwdev, bool pwr_on) rtwdev 223 drivers/net/wireless/realtek/rtw88/mac.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 228 drivers/net/wireless/realtek/rtw88/mac.c rpwm = rtw_read8(rtwdev, rtwdev->hci.rpwm_addr); rtwdev 231 drivers/net/wireless/realtek/rtw88/mac.c if (rtw_read16(rtwdev, REG_MCUFW_CTRL) == 0xC078) { rtwdev 233 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8(rtwdev, rtwdev->hci.rpwm_addr, rpwm); rtwdev 236 drivers/net/wireless/realtek/rtw88/mac.c if (rtw_read8(rtwdev, REG_CR) == 0xea) rtwdev 238 drivers/net/wireless/realtek/rtw88/mac.c else if (rtw_hci_type(rtwdev) == RTW_HCI_TYPE_USB && rtwdev 239 drivers/net/wireless/realtek/rtw88/mac.c (rtw_read8(rtwdev, REG_SYS_STATUS1 + 1) & BIT(0))) rtwdev 248 drivers/net/wireless/realtek/rtw88/mac.c if (rtw_pwr_seq_parser(rtwdev, pwr_seq)) rtwdev 254 drivers/net/wireless/realtek/rtw88/mac.c static int rtw_mac_init_system_cfg(struct rtw_dev *rtwdev) rtwdev 256 drivers/net/wireless/realtek/rtw88/mac.c u8 sys_func_en = rtwdev->chip->sys_func_en; rtwdev 260 drivers/net/wireless/realtek/rtw88/mac.c value = rtw_read32(rtwdev, REG_CPU_DMEM_CON); rtwdev 262 drivers/net/wireless/realtek/rtw88/mac.c rtw_write32(rtwdev, REG_CPU_DMEM_CON, value); rtwdev 264 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8(rtwdev, REG_SYS_FUNC_EN + 1, sys_func_en); rtwdev 265 drivers/net/wireless/realtek/rtw88/mac.c value8 = (rtw_read8(rtwdev, REG_CR_EXT + 3) & 0xF0) | 0x0C; rtwdev 266 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8(rtwdev, REG_CR_EXT + 3, value8); rtwdev 269 drivers/net/wireless/realtek/rtw88/mac.c tmp = rtw_read32(rtwdev, REG_MCUFW_CTRL); rtwdev 271 drivers/net/wireless/realtek/rtw88/mac.c rtw_write32(rtwdev, REG_MCUFW_CTRL, tmp & (~BIT_BOOT_FSPI_EN)); rtwdev 272 drivers/net/wireless/realtek/rtw88/mac.c value = rtw_read32(rtwdev, REG_GPIO_MUXCFG) & (~BIT_FSPI_EN); rtwdev 273 drivers/net/wireless/realtek/rtw88/mac.c rtw_write32(rtwdev, REG_GPIO_MUXCFG, value); rtwdev 279 drivers/net/wireless/realtek/rtw88/mac.c int rtw_mac_power_on(struct rtw_dev *rtwdev) rtwdev 283 drivers/net/wireless/realtek/rtw88/mac.c ret = rtw_mac_pre_system_cfg(rtwdev); rtwdev 287 drivers/net/wireless/realtek/rtw88/mac.c ret = rtw_mac_power_switch(rtwdev, true); rtwdev 289 drivers/net/wireless/realtek/rtw88/mac.c rtw_mac_power_switch(rtwdev, false); rtwdev 290 drivers/net/wireless/realtek/rtw88/mac.c ret = rtw_mac_power_switch(rtwdev, true); rtwdev 297 drivers/net/wireless/realtek/rtw88/mac.c ret = rtw_mac_init_system_cfg(rtwdev); rtwdev 304 drivers/net/wireless/realtek/rtw88/mac.c rtw_err(rtwdev, "mac power on failed"); rtwdev 308 drivers/net/wireless/realtek/rtw88/mac.c void rtw_mac_power_off(struct rtw_dev *rtwdev) rtwdev 310 drivers/net/wireless/realtek/rtw88/mac.c rtw_mac_power_switch(rtwdev, false); rtwdev 335 drivers/net/wireless/realtek/rtw88/mac.c static void wlan_cpu_enable(struct rtw_dev *rtwdev, bool enable) rtwdev 339 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8_set(rtwdev, REG_RSV_CTRL + 1, BIT_WLMCU_IOIF); rtwdev 342 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8_set(rtwdev, REG_SYS_FUNC_EN + 1, BIT_FEN_CPUEN); rtwdev 345 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8_clr(rtwdev, REG_SYS_FUNC_EN + 1, BIT_FEN_CPUEN); rtwdev 348 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8_clr(rtwdev, REG_RSV_CTRL + 1, BIT_WLMCU_IOIF); rtwdev 354 drivers/net/wireless/realtek/rtw88/mac.c static void download_firmware_reg_backup(struct rtw_dev *rtwdev, rtwdev 363 drivers/net/wireless/realtek/rtw88/mac.c bckp[bckp_idx].val = rtw_read8(rtwdev, REG_TXDMA_PQ_MAP + 1); rtwdev 366 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8(rtwdev, REG_TXDMA_PQ_MAP + 1, tmp); rtwdev 371 drivers/net/wireless/realtek/rtw88/mac.c bckp[bckp_idx].val = rtw_read8(rtwdev, REG_CR); rtwdev 378 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8(rtwdev, REG_CR, tmp); rtwdev 379 drivers/net/wireless/realtek/rtw88/mac.c rtw_write32(rtwdev, REG_H2CQ_CSR, BIT_H2CQ_FULL); rtwdev 384 drivers/net/wireless/realtek/rtw88/mac.c bckp[bckp_idx].val = rtw_read16(rtwdev, REG_FIFOPAGE_INFO_1); rtwdev 388 drivers/net/wireless/realtek/rtw88/mac.c bckp[bckp_idx].val = rtw_read32(rtwdev, REG_RQPN_CTRL_2) | BIT_LD_RQPN; rtwdev 390 drivers/net/wireless/realtek/rtw88/mac.c rtw_write16(rtwdev, REG_FIFOPAGE_INFO_1, 0x200); rtwdev 391 drivers/net/wireless/realtek/rtw88/mac.c rtw_write32(rtwdev, REG_RQPN_CTRL_2, bckp[bckp_idx - 1].val); rtwdev 394 drivers/net/wireless/realtek/rtw88/mac.c tmp = rtw_read8(rtwdev, REG_BCN_CTRL); rtwdev 400 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8(rtwdev, REG_BCN_CTRL, tmp); rtwdev 405 drivers/net/wireless/realtek/rtw88/mac.c static void download_firmware_reset_platform(struct rtw_dev *rtwdev) rtwdev 407 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8_clr(rtwdev, REG_CPU_DMEM_CON + 2, BIT_WL_PLATFORM_RST >> 16); rtwdev 408 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8_clr(rtwdev, REG_SYS_CLK_CTRL + 1, BIT_CPU_CLK_EN >> 8); rtwdev 409 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8_set(rtwdev, REG_CPU_DMEM_CON + 2, BIT_WL_PLATFORM_RST >> 16); rtwdev 410 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8_set(rtwdev, REG_SYS_CLK_CTRL + 1, BIT_CPU_CLK_EN >> 8); rtwdev 413 drivers/net/wireless/realtek/rtw88/mac.c static void download_firmware_reg_restore(struct rtw_dev *rtwdev, rtwdev 417 drivers/net/wireless/realtek/rtw88/mac.c rtw_restore_reg(rtwdev, bckp, bckp_num); rtwdev 422 drivers/net/wireless/realtek/rtw88/mac.c static int send_firmware_pkt_rsvd_page(struct rtw_dev *rtwdev, u16 pg_addr, rtwdev 432 drivers/net/wireless/realtek/rtw88/mac.c ret = rtw_fw_write_data_rsvd_page(rtwdev, pg_addr, buf, size); rtwdev 438 drivers/net/wireless/realtek/rtw88/mac.c send_firmware_pkt(struct rtw_dev *rtwdev, u16 pg_addr, const u8 *data, u32 size) rtwdev 442 drivers/net/wireless/realtek/rtw88/mac.c if (rtw_hci_type(rtwdev) == RTW_HCI_TYPE_USB && rtwdev 446 drivers/net/wireless/realtek/rtw88/mac.c ret = send_firmware_pkt_rsvd_page(rtwdev, pg_addr, data, size); rtwdev 448 drivers/net/wireless/realtek/rtw88/mac.c rtw_err(rtwdev, "failed to download rsvd page\n"); rtwdev 454 drivers/net/wireless/realtek/rtw88/mac.c iddma_enable(struct rtw_dev *rtwdev, u32 src, u32 dst, u32 ctrl) rtwdev 456 drivers/net/wireless/realtek/rtw88/mac.c rtw_write32(rtwdev, REG_DDMA_CH0SA, src); rtwdev 457 drivers/net/wireless/realtek/rtw88/mac.c rtw_write32(rtwdev, REG_DDMA_CH0DA, dst); rtwdev 458 drivers/net/wireless/realtek/rtw88/mac.c rtw_write32(rtwdev, REG_DDMA_CH0CTRL, ctrl); rtwdev 460 drivers/net/wireless/realtek/rtw88/mac.c if (!check_hw_ready(rtwdev, REG_DDMA_CH0CTRL, BIT_DDMACH0_OWN, 0)) rtwdev 466 drivers/net/wireless/realtek/rtw88/mac.c static int iddma_download_firmware(struct rtw_dev *rtwdev, u32 src, u32 dst, rtwdev 471 drivers/net/wireless/realtek/rtw88/mac.c if (!check_hw_ready(rtwdev, REG_DDMA_CH0CTRL, BIT_DDMACH0_OWN, 0)) rtwdev 478 drivers/net/wireless/realtek/rtw88/mac.c if (iddma_enable(rtwdev, src, dst, ch0_ctrl)) rtwdev 485 drivers/net/wireless/realtek/rtw88/mac.c check_fw_checksum(struct rtw_dev *rtwdev, u32 addr) rtwdev 489 drivers/net/wireless/realtek/rtw88/mac.c fw_ctrl = rtw_read8(rtwdev, REG_MCUFW_CTRL); rtwdev 491 drivers/net/wireless/realtek/rtw88/mac.c if (rtw_read32(rtwdev, REG_DDMA_CH0CTRL) & BIT_DDMACH0_CHKSUM_STS) { rtwdev 495 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8(rtwdev, REG_MCUFW_CTRL, fw_ctrl); rtwdev 499 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8(rtwdev, REG_MCUFW_CTRL, fw_ctrl); rtwdev 502 drivers/net/wireless/realtek/rtw88/mac.c rtw_err(rtwdev, "invalid fw checksum\n"); rtwdev 509 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8(rtwdev, REG_MCUFW_CTRL, fw_ctrl); rtwdev 512 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8(rtwdev, REG_MCUFW_CTRL, fw_ctrl); rtwdev 519 drivers/net/wireless/realtek/rtw88/mac.c download_firmware_to_mem(struct rtw_dev *rtwdev, const u8 *data, rtwdev 522 drivers/net/wireless/realtek/rtw88/mac.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 536 drivers/net/wireless/realtek/rtw88/mac.c val = rtw_read32(rtwdev, REG_DDMA_CH0CTRL); rtwdev 538 drivers/net/wireless/realtek/rtw88/mac.c rtw_write32(rtwdev, REG_DDMA_CH0CTRL, val); rtwdev 546 drivers/net/wireless/realtek/rtw88/mac.c ret = send_firmware_pkt(rtwdev, (u16)(src >> 7), rtwdev 551 drivers/net/wireless/realtek/rtw88/mac.c ret = iddma_download_firmware(rtwdev, OCPBASE_TXBUF_88XX + rtwdev 563 drivers/net/wireless/realtek/rtw88/mac.c if (!check_fw_checksum(rtwdev, dst)) rtwdev 569 drivers/net/wireless/realtek/rtw88/mac.c static void update_firmware_info(struct rtw_dev *rtwdev, rtwdev 581 drivers/net/wireless/realtek/rtw88/mac.c rtw_dbg(rtwdev, RTW_DBG_FW, "fw h2c version: %x\n", fw->h2c_version); rtwdev 582 drivers/net/wireless/realtek/rtw88/mac.c rtw_dbg(rtwdev, RTW_DBG_FW, "fw version: %x\n", fw->version); rtwdev 583 drivers/net/wireless/realtek/rtw88/mac.c rtw_dbg(rtwdev, RTW_DBG_FW, "fw sub version: %x\n", fw->sub_version); rtwdev 584 drivers/net/wireless/realtek/rtw88/mac.c rtw_dbg(rtwdev, RTW_DBG_FW, "fw sub index: %x\n", fw->sub_index); rtwdev 588 drivers/net/wireless/realtek/rtw88/mac.c start_download_firmware(struct rtw_dev *rtwdev, const u8 *data, u32 size) rtwdev 606 drivers/net/wireless/realtek/rtw88/mac.c val = (u16)(rtw_read16(rtwdev, REG_MCUFW_CTRL) & 0x3800); rtwdev 608 drivers/net/wireless/realtek/rtw88/mac.c rtw_write16(rtwdev, REG_MCUFW_CTRL, val); rtwdev 613 drivers/net/wireless/realtek/rtw88/mac.c ret = download_firmware_to_mem(rtwdev, cur_fw, 0, addr, dmem_size); rtwdev 620 drivers/net/wireless/realtek/rtw88/mac.c ret = download_firmware_to_mem(rtwdev, cur_fw, 0, addr, imem_size); rtwdev 628 drivers/net/wireless/realtek/rtw88/mac.c ret = download_firmware_to_mem(rtwdev, cur_fw, 0, addr, rtwdev 637 drivers/net/wireless/realtek/rtw88/mac.c static int download_firmware_validate(struct rtw_dev *rtwdev) rtwdev 641 drivers/net/wireless/realtek/rtw88/mac.c if (!check_hw_ready(rtwdev, REG_MCUFW_CTRL, FW_READY_MASK, FW_READY)) { rtwdev 642 drivers/net/wireless/realtek/rtw88/mac.c fw_key = rtw_read32(rtwdev, REG_FW_DBG7) & FW_KEY_MASK; rtwdev 644 drivers/net/wireless/realtek/rtw88/mac.c rtw_err(rtwdev, "invalid fw key\n"); rtwdev 651 drivers/net/wireless/realtek/rtw88/mac.c static void download_firmware_end_flow(struct rtw_dev *rtwdev) rtwdev 655 drivers/net/wireless/realtek/rtw88/mac.c rtw_write32(rtwdev, REG_TXDMA_STATUS, BTI_PAGE_OVF); rtwdev 658 drivers/net/wireless/realtek/rtw88/mac.c fw_ctrl = rtw_read16(rtwdev, REG_MCUFW_CTRL); rtwdev 663 drivers/net/wireless/realtek/rtw88/mac.c rtw_write16(rtwdev, REG_MCUFW_CTRL, fw_ctrl); rtwdev 666 drivers/net/wireless/realtek/rtw88/mac.c int rtw_download_firmware(struct rtw_dev *rtwdev, struct rtw_fw_state *fw) rtwdev 677 drivers/net/wireless/realtek/rtw88/mac.c if (!ltecoex_read_reg(rtwdev, 0x38, <ecoex_bckp)) rtwdev 680 drivers/net/wireless/realtek/rtw88/mac.c wlan_cpu_enable(rtwdev, false); rtwdev 682 drivers/net/wireless/realtek/rtw88/mac.c download_firmware_reg_backup(rtwdev, bckp); rtwdev 683 drivers/net/wireless/realtek/rtw88/mac.c download_firmware_reset_platform(rtwdev); rtwdev 685 drivers/net/wireless/realtek/rtw88/mac.c ret = start_download_firmware(rtwdev, data, size); rtwdev 689 drivers/net/wireless/realtek/rtw88/mac.c download_firmware_reg_restore(rtwdev, bckp, DLFW_RESTORE_REG_NUM); rtwdev 691 drivers/net/wireless/realtek/rtw88/mac.c download_firmware_end_flow(rtwdev); rtwdev 693 drivers/net/wireless/realtek/rtw88/mac.c wlan_cpu_enable(rtwdev, true); rtwdev 695 drivers/net/wireless/realtek/rtw88/mac.c if (!ltecoex_reg_write(rtwdev, 0x38, ltecoex_bckp)) rtwdev 698 drivers/net/wireless/realtek/rtw88/mac.c ret = download_firmware_validate(rtwdev); rtwdev 702 drivers/net/wireless/realtek/rtw88/mac.c update_firmware_info(rtwdev, fw); rtwdev 705 drivers/net/wireless/realtek/rtw88/mac.c rtw_hci_setup(rtwdev); rtwdev 707 drivers/net/wireless/realtek/rtw88/mac.c rtwdev->h2c.last_box_num = 0; rtwdev 708 drivers/net/wireless/realtek/rtw88/mac.c rtwdev->h2c.seq = 0; rtwdev 710 drivers/net/wireless/realtek/rtw88/mac.c rtw_flag_set(rtwdev, RTW_FLAG_FW_RUNNING); rtwdev 716 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8_clr(rtwdev, REG_MCUFW_CTRL, BIT_MCUFWDL_EN); rtwdev 717 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8_set(rtwdev, REG_SYS_FUNC_EN + 1, BIT_FEN_CPUEN); rtwdev 722 drivers/net/wireless/realtek/rtw88/mac.c static int txdma_queue_mapping(struct rtw_dev *rtwdev) rtwdev 724 drivers/net/wireless/realtek/rtw88/mac.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 728 drivers/net/wireless/realtek/rtw88/mac.c switch (rtw_hci_type(rtwdev)) { rtwdev 733 drivers/net/wireless/realtek/rtw88/mac.c if (rtwdev->hci.bulkout_num == 2) rtwdev 735 drivers/net/wireless/realtek/rtw88/mac.c else if (rtwdev->hci.bulkout_num == 3) rtwdev 737 drivers/net/wireless/realtek/rtw88/mac.c else if (rtwdev->hci.bulkout_num == 4) rtwdev 752 drivers/net/wireless/realtek/rtw88/mac.c rtw_write16(rtwdev, REG_TXDMA_PQ_MAP, txdma_pq_map); rtwdev 754 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8(rtwdev, REG_CR, 0); rtwdev 755 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8(rtwdev, REG_CR, MAC_TRX_ENABLE); rtwdev 756 drivers/net/wireless/realtek/rtw88/mac.c rtw_write32(rtwdev, REG_H2CQ_CSR, BIT_H2CQ_FULL); rtwdev 761 drivers/net/wireless/realtek/rtw88/mac.c static int set_trx_fifo_info(struct rtw_dev *rtwdev) rtwdev 763 drivers/net/wireless/realtek/rtw88/mac.c struct rtw_fifo_conf *fifo = &rtwdev->fifo; rtwdev 764 drivers/net/wireless/realtek/rtw88/mac.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 802 drivers/net/wireless/realtek/rtw88/mac.c rtw_err(rtwdev, "wrong rsvd driver address\n"); rtwdev 809 drivers/net/wireless/realtek/rtw88/mac.c static int priority_queue_cfg(struct rtw_dev *rtwdev) rtwdev 811 drivers/net/wireless/realtek/rtw88/mac.c struct rtw_fifo_conf *fifo = &rtwdev->fifo; rtwdev 812 drivers/net/wireless/realtek/rtw88/mac.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 817 drivers/net/wireless/realtek/rtw88/mac.c ret = set_trx_fifo_info(rtwdev); rtwdev 821 drivers/net/wireless/realtek/rtw88/mac.c switch (rtw_hci_type(rtwdev)) { rtwdev 826 drivers/net/wireless/realtek/rtw88/mac.c if (rtwdev->hci.bulkout_num == 2) rtwdev 828 drivers/net/wireless/realtek/rtw88/mac.c else if (rtwdev->hci.bulkout_num == 3) rtwdev 830 drivers/net/wireless/realtek/rtw88/mac.c else if (rtwdev->hci.bulkout_num == 4) rtwdev 841 drivers/net/wireless/realtek/rtw88/mac.c rtw_write16(rtwdev, REG_FIFOPAGE_INFO_1, pg_tbl->hq_num); rtwdev 842 drivers/net/wireless/realtek/rtw88/mac.c rtw_write16(rtwdev, REG_FIFOPAGE_INFO_2, pg_tbl->lq_num); rtwdev 843 drivers/net/wireless/realtek/rtw88/mac.c rtw_write16(rtwdev, REG_FIFOPAGE_INFO_3, pg_tbl->nq_num); rtwdev 844 drivers/net/wireless/realtek/rtw88/mac.c rtw_write16(rtwdev, REG_FIFOPAGE_INFO_4, pg_tbl->exq_num); rtwdev 845 drivers/net/wireless/realtek/rtw88/mac.c rtw_write16(rtwdev, REG_FIFOPAGE_INFO_5, pubq_num); rtwdev 846 drivers/net/wireless/realtek/rtw88/mac.c rtw_write32_set(rtwdev, REG_RQPN_CTRL_2, BIT_LD_RQPN); rtwdev 848 drivers/net/wireless/realtek/rtw88/mac.c rtw_write16(rtwdev, REG_FIFOPAGE_CTRL_2, fifo->rsvd_boundary); rtwdev 849 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8_set(rtwdev, REG_FWHW_TXQ_CTRL + 2, BIT_EN_WR_FREE_TAIL >> 16); rtwdev 851 drivers/net/wireless/realtek/rtw88/mac.c rtw_write16(rtwdev, REG_BCNQ_BDNY_V1, fifo->rsvd_boundary); rtwdev 852 drivers/net/wireless/realtek/rtw88/mac.c rtw_write16(rtwdev, REG_FIFOPAGE_CTRL_2 + 2, fifo->rsvd_boundary); rtwdev 853 drivers/net/wireless/realtek/rtw88/mac.c rtw_write16(rtwdev, REG_BCNQ1_BDNY_V1, fifo->rsvd_boundary); rtwdev 854 drivers/net/wireless/realtek/rtw88/mac.c rtw_write32(rtwdev, REG_RXFF_BNDY, chip->rxff_size - C2H_PKT_BUF - 1); rtwdev 855 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8_set(rtwdev, REG_AUTO_LLT_V1, BIT_AUTO_INIT_LLT_V1); rtwdev 857 drivers/net/wireless/realtek/rtw88/mac.c if (!check_hw_ready(rtwdev, REG_AUTO_LLT_V1, BIT_AUTO_INIT_LLT_V1, 0)) rtwdev 860 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8(rtwdev, REG_CR + 3, 0); rtwdev 865 drivers/net/wireless/realtek/rtw88/mac.c static int init_h2c(struct rtw_dev *rtwdev) rtwdev 867 drivers/net/wireless/realtek/rtw88/mac.c struct rtw_fifo_conf *fifo = &rtwdev->fifo; rtwdev 878 drivers/net/wireless/realtek/rtw88/mac.c value32 = rtw_read32(rtwdev, REG_H2C_HEAD); rtwdev 880 drivers/net/wireless/realtek/rtw88/mac.c rtw_write32(rtwdev, REG_H2C_HEAD, value32); rtwdev 882 drivers/net/wireless/realtek/rtw88/mac.c value32 = rtw_read32(rtwdev, REG_H2C_READ_ADDR); rtwdev 884 drivers/net/wireless/realtek/rtw88/mac.c rtw_write32(rtwdev, REG_H2C_READ_ADDR, value32); rtwdev 886 drivers/net/wireless/realtek/rtw88/mac.c value32 = rtw_read32(rtwdev, REG_H2C_TAIL); rtwdev 889 drivers/net/wireless/realtek/rtw88/mac.c rtw_write32(rtwdev, REG_H2C_TAIL, value32); rtwdev 891 drivers/net/wireless/realtek/rtw88/mac.c value8 = rtw_read8(rtwdev, REG_H2C_INFO); rtwdev 893 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8(rtwdev, REG_H2C_INFO, value8); rtwdev 895 drivers/net/wireless/realtek/rtw88/mac.c value8 = rtw_read8(rtwdev, REG_H2C_INFO); rtwdev 897 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8(rtwdev, REG_H2C_INFO, value8); rtwdev 899 drivers/net/wireless/realtek/rtw88/mac.c value8 = rtw_read8(rtwdev, REG_TXDMA_OFFSET_CHK + 1); rtwdev 901 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8(rtwdev, REG_TXDMA_OFFSET_CHK + 1, value8); rtwdev 903 drivers/net/wireless/realtek/rtw88/mac.c wp = rtw_read32(rtwdev, REG_H2C_PKT_WRITEADDR) & 0x3FFFF; rtwdev 904 drivers/net/wireless/realtek/rtw88/mac.c rp = rtw_read32(rtwdev, REG_H2C_PKT_READADDR) & 0x3FFFF; rtwdev 908 drivers/net/wireless/realtek/rtw88/mac.c rtw_err(rtwdev, "H2C queue mismatch\n"); rtwdev 915 drivers/net/wireless/realtek/rtw88/mac.c static int rtw_init_trx_cfg(struct rtw_dev *rtwdev) rtwdev 919 drivers/net/wireless/realtek/rtw88/mac.c ret = txdma_queue_mapping(rtwdev); rtwdev 923 drivers/net/wireless/realtek/rtw88/mac.c ret = priority_queue_cfg(rtwdev); rtwdev 927 drivers/net/wireless/realtek/rtw88/mac.c ret = init_h2c(rtwdev); rtwdev 934 drivers/net/wireless/realtek/rtw88/mac.c static int rtw_drv_info_cfg(struct rtw_dev *rtwdev) rtwdev 938 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8(rtwdev, REG_RX_DRVINFO_SZ, PHY_STATUS_SIZE); rtwdev 939 drivers/net/wireless/realtek/rtw88/mac.c value8 = rtw_read8(rtwdev, REG_TRXFF_BNDY + 1); rtwdev 943 drivers/net/wireless/realtek/rtw88/mac.c rtw_write8(rtwdev, REG_TRXFF_BNDY + 1, value8); rtwdev 944 drivers/net/wireless/realtek/rtw88/mac.c rtw_write32_set(rtwdev, REG_RCR, BIT_APP_PHYSTS); rtwdev 945 drivers/net/wireless/realtek/rtw88/mac.c rtw_write32_clr(rtwdev, REG_WMAC_OPTION_FUNCTION + 4, BIT(8) | BIT(9)); rtwdev 950 drivers/net/wireless/realtek/rtw88/mac.c int rtw_mac_init(struct rtw_dev *rtwdev) rtwdev 952 drivers/net/wireless/realtek/rtw88/mac.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 955 drivers/net/wireless/realtek/rtw88/mac.c ret = rtw_init_trx_cfg(rtwdev); rtwdev 959 drivers/net/wireless/realtek/rtw88/mac.c ret = chip->ops->mac_init(rtwdev); rtwdev 963 drivers/net/wireless/realtek/rtw88/mac.c ret = rtw_drv_info_cfg(rtwdev); rtwdev 28 drivers/net/wireless/realtek/rtw88/mac.h void rtw_set_channel_mac(struct rtw_dev *rtwdev, u8 channel, u8 bw, rtwdev 30 drivers/net/wireless/realtek/rtw88/mac.h int rtw_mac_power_on(struct rtw_dev *rtwdev); rtwdev 31 drivers/net/wireless/realtek/rtw88/mac.h void rtw_mac_power_off(struct rtw_dev *rtwdev); rtwdev 32 drivers/net/wireless/realtek/rtw88/mac.h int rtw_download_firmware(struct rtw_dev *rtwdev, struct rtw_fw_state *fw); rtwdev 33 drivers/net/wireless/realtek/rtw88/mac.h int rtw_mac_init(struct rtw_dev *rtwdev); rtwdev 19 drivers/net/wireless/realtek/rtw88/mac80211.c struct rtw_dev *rtwdev = hw->priv; rtwdev 22 drivers/net/wireless/realtek/rtw88/mac80211.c if (!rtw_flag_check(rtwdev, RTW_FLAG_RUNNING)) rtwdev 25 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_tx_pkt_info_update(rtwdev, &pkt_info, control, skb); rtwdev 26 drivers/net/wireless/realtek/rtw88/mac80211.c if (rtw_hci_tx(rtwdev, &pkt_info, skb)) rtwdev 37 drivers/net/wireless/realtek/rtw88/mac80211.c struct rtw_dev *rtwdev = hw->priv; rtwdev 40 drivers/net/wireless/realtek/rtw88/mac80211.c mutex_lock(&rtwdev->mutex); rtwdev 41 drivers/net/wireless/realtek/rtw88/mac80211.c ret = rtw_core_start(rtwdev); rtwdev 42 drivers/net/wireless/realtek/rtw88/mac80211.c mutex_unlock(&rtwdev->mutex); rtwdev 49 drivers/net/wireless/realtek/rtw88/mac80211.c struct rtw_dev *rtwdev = hw->priv; rtwdev 51 drivers/net/wireless/realtek/rtw88/mac80211.c mutex_lock(&rtwdev->mutex); rtwdev 52 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_core_stop(rtwdev); rtwdev 53 drivers/net/wireless/realtek/rtw88/mac80211.c mutex_unlock(&rtwdev->mutex); rtwdev 58 drivers/net/wireless/realtek/rtw88/mac80211.c struct rtw_dev *rtwdev = hw->priv; rtwdev 61 drivers/net/wireless/realtek/rtw88/mac80211.c mutex_lock(&rtwdev->mutex); rtwdev 65 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_enter_ips(rtwdev); rtwdev 67 drivers/net/wireless/realtek/rtw88/mac80211.c ret = rtw_leave_ips(rtwdev); rtwdev 69 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_err(rtwdev, "failed to leave idle state\n"); rtwdev 76 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_set_channel(rtwdev); rtwdev 79 drivers/net/wireless/realtek/rtw88/mac80211.c mutex_unlock(&rtwdev->mutex); rtwdev 124 drivers/net/wireless/realtek/rtw88/mac80211.c struct rtw_dev *rtwdev = hw->priv; rtwdev 140 drivers/net/wireless/realtek/rtw88/mac80211.c mutex_lock(&rtwdev->mutex); rtwdev 165 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_vif_port_config(rtwdev, rtwvif, config); rtwdev 167 drivers/net/wireless/realtek/rtw88/mac80211.c mutex_unlock(&rtwdev->mutex); rtwdev 169 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_info(rtwdev, "start vif %pM on port %d\n", vif->addr, rtwvif->port); rtwdev 176 drivers/net/wireless/realtek/rtw88/mac80211.c struct rtw_dev *rtwdev = hw->priv; rtwdev 180 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_info(rtwdev, "stop vif %pM on port %d\n", vif->addr, rtwvif->port); rtwdev 182 drivers/net/wireless/realtek/rtw88/mac80211.c mutex_lock(&rtwdev->mutex); rtwdev 190 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_vif_port_config(rtwdev, rtwvif, config); rtwdev 192 drivers/net/wireless/realtek/rtw88/mac80211.c mutex_unlock(&rtwdev->mutex); rtwdev 200 drivers/net/wireless/realtek/rtw88/mac80211.c struct rtw_dev *rtwdev = hw->priv; rtwdev 205 drivers/net/wireless/realtek/rtw88/mac80211.c mutex_lock(&rtwdev->mutex); rtwdev 209 drivers/net/wireless/realtek/rtw88/mac80211.c rtwdev->hal.rcr |= BIT_AM | BIT_AB; rtwdev 211 drivers/net/wireless/realtek/rtw88/mac80211.c rtwdev->hal.rcr &= ~(BIT_AM | BIT_AB); rtwdev 215 drivers/net/wireless/realtek/rtw88/mac80211.c rtwdev->hal.rcr |= BIT_ACRC32; rtwdev 217 drivers/net/wireless/realtek/rtw88/mac80211.c rtwdev->hal.rcr &= ~(BIT_ACRC32); rtwdev 221 drivers/net/wireless/realtek/rtw88/mac80211.c rtwdev->hal.rcr |= BIT_AAP; rtwdev 223 drivers/net/wireless/realtek/rtw88/mac80211.c rtwdev->hal.rcr &= ~(BIT_AAP); rtwdev 227 drivers/net/wireless/realtek/rtw88/mac80211.c rtwdev->hal.rcr &= ~(BIT_CBSSID_BCN | BIT_CBSSID_DATA); rtwdev 229 drivers/net/wireless/realtek/rtw88/mac80211.c rtwdev->hal.rcr |= BIT_CBSSID_BCN; rtwdev 232 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_dbg(rtwdev, RTW_DBG_RX, rtwdev 234 drivers/net/wireless/realtek/rtw88/mac80211.c changed_flags, *new_flags, rtwdev->hal.rcr); rtwdev 236 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_write32(rtwdev, REG_RCR, rtwdev->hal.rcr); rtwdev 238 drivers/net/wireless/realtek/rtw88/mac80211.c mutex_unlock(&rtwdev->mutex); rtwdev 246 drivers/net/wireless/realtek/rtw88/mac80211.c struct rtw_dev *rtwdev = hw->priv; rtwdev 250 drivers/net/wireless/realtek/rtw88/mac80211.c mutex_lock(&rtwdev->mutex); rtwdev 253 drivers/net/wireless/realtek/rtw88/mac80211.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 257 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_coex_connect_notify(rtwdev, COEX_ASSOCIATE_FINISH); rtwdev 259 drivers/net/wireless/realtek/rtw88/mac80211.c chip->ops->phy_calibration(rtwdev); rtwdev 262 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_add_rsvd_page(rtwdev, RSVD_PS_POLL, true); rtwdev 263 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_add_rsvd_page(rtwdev, RSVD_QOS_NULL, true); rtwdev 264 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_add_rsvd_page(rtwdev, RSVD_NULL, true); rtwdev 265 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_fw_download_rsvd_page(rtwdev, vif); rtwdev 266 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_send_rsvd_page_h2c(rtwdev); rtwdev 267 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_coex_media_status_notify(rtwdev, conf->assoc); rtwdev 271 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_reset_rsvd_page(rtwdev); rtwdev 285 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_fw_download_rsvd_page(rtwdev, vif); rtwdev 287 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_vif_port_config(rtwdev, rtwvif, config); rtwdev 289 drivers/net/wireless/realtek/rtw88/mac80211.c mutex_unlock(&rtwdev->mutex); rtwdev 292 drivers/net/wireless/realtek/rtw88/mac80211.c static u8 rtw_acquire_macid(struct rtw_dev *rtwdev) rtwdev 296 drivers/net/wireless/realtek/rtw88/mac80211.c mac_id = find_first_zero_bit(rtwdev->mac_id_map, RTW_MAX_MAC_ID_NUM); rtwdev 298 drivers/net/wireless/realtek/rtw88/mac80211.c set_bit(mac_id, rtwdev->mac_id_map); rtwdev 303 drivers/net/wireless/realtek/rtw88/mac80211.c static void rtw_release_macid(struct rtw_dev *rtwdev, u8 mac_id) rtwdev 305 drivers/net/wireless/realtek/rtw88/mac80211.c clear_bit(mac_id, rtwdev->mac_id_map); rtwdev 312 drivers/net/wireless/realtek/rtw88/mac80211.c struct rtw_dev *rtwdev = hw->priv; rtwdev 316 drivers/net/wireless/realtek/rtw88/mac80211.c mutex_lock(&rtwdev->mutex); rtwdev 318 drivers/net/wireless/realtek/rtw88/mac80211.c si->mac_id = rtw_acquire_macid(rtwdev); rtwdev 329 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_update_sta_info(rtwdev, si); rtwdev 330 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_fw_media_status_report(rtwdev, si->mac_id, true); rtwdev 332 drivers/net/wireless/realtek/rtw88/mac80211.c rtwdev->sta_cnt++; rtwdev 334 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_info(rtwdev, "sta %pM joined with macid %d\n", rtwdev 338 drivers/net/wireless/realtek/rtw88/mac80211.c mutex_unlock(&rtwdev->mutex); rtwdev 346 drivers/net/wireless/realtek/rtw88/mac80211.c struct rtw_dev *rtwdev = hw->priv; rtwdev 349 drivers/net/wireless/realtek/rtw88/mac80211.c mutex_lock(&rtwdev->mutex); rtwdev 351 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_release_macid(rtwdev, si->mac_id); rtwdev 352 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_fw_media_status_report(rtwdev, si->mac_id, false); rtwdev 354 drivers/net/wireless/realtek/rtw88/mac80211.c rtwdev->sta_cnt--; rtwdev 356 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_info(rtwdev, "sta %pM with macid %d left\n", rtwdev 359 drivers/net/wireless/realtek/rtw88/mac80211.c mutex_unlock(&rtwdev->mutex); rtwdev 367 drivers/net/wireless/realtek/rtw88/mac80211.c struct rtw_dev *rtwdev = hw->priv; rtwdev 368 drivers/net/wireless/realtek/rtw88/mac80211.c struct rtw_sec_desc *sec = &rtwdev->sec; rtwdev 398 drivers/net/wireless/realtek/rtw88/mac80211.c mutex_lock(&rtwdev->mutex); rtwdev 417 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_sec_write_cam(rtwdev, sec, sta, key, rtwdev 421 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_sec_clear_cam(rtwdev, sec, key->hw_key_idx); rtwdev 426 drivers/net/wireless/realtek/rtw88/mac80211.c mutex_unlock(&rtwdev->mutex); rtwdev 463 drivers/net/wireless/realtek/rtw88/mac80211.c struct rtw_dev *rtwdev = hw->priv; rtwdev 467 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_leave_lps(rtwdev, rtwvif); rtwdev 469 drivers/net/wireless/realtek/rtw88/mac80211.c mutex_lock(&rtwdev->mutex); rtwdev 473 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_vif_port_config(rtwdev, rtwvif, config); rtwdev 475 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_coex_scan_notify(rtwdev, COEX_SCAN_START); rtwdev 477 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_flag_set(rtwdev, RTW_FLAG_DIG_DISABLE); rtwdev 478 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_flag_set(rtwdev, RTW_FLAG_SCANNING); rtwdev 480 drivers/net/wireless/realtek/rtw88/mac80211.c mutex_unlock(&rtwdev->mutex); rtwdev 486 drivers/net/wireless/realtek/rtw88/mac80211.c struct rtw_dev *rtwdev = hw->priv; rtwdev 490 drivers/net/wireless/realtek/rtw88/mac80211.c mutex_lock(&rtwdev->mutex); rtwdev 492 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_flag_clear(rtwdev, RTW_FLAG_SCANNING); rtwdev 493 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_flag_clear(rtwdev, RTW_FLAG_DIG_DISABLE); rtwdev 497 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_vif_port_config(rtwdev, rtwvif, config); rtwdev 499 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_coex_scan_notify(rtwdev, COEX_SCAN_FINISH); rtwdev 501 drivers/net/wireless/realtek/rtw88/mac80211.c mutex_unlock(&rtwdev->mutex); rtwdev 508 drivers/net/wireless/realtek/rtw88/mac80211.c struct rtw_dev *rtwdev = hw->priv; rtwdev 510 drivers/net/wireless/realtek/rtw88/mac80211.c mutex_lock(&rtwdev->mutex); rtwdev 511 drivers/net/wireless/realtek/rtw88/mac80211.c rtw_coex_connect_notify(rtwdev, COEX_ASSOCIATE_START); rtwdev 512 drivers/net/wireless/realtek/rtw88/mac80211.c mutex_unlock(&rtwdev->mutex); rtwdev 150 drivers/net/wireless/realtek/rtw88/main.c struct rtw_dev *rtwdev = container_of(work, struct rtw_dev, rtwdev 153 drivers/net/wireless/realtek/rtw88/main.c bool busy_traffic = rtw_flag_check(rtwdev, RTW_FLAG_BUSY_TRAFFIC); rtwdev 155 drivers/net/wireless/realtek/rtw88/main.c if (!rtw_flag_check(rtwdev, RTW_FLAG_RUNNING)) rtwdev 158 drivers/net/wireless/realtek/rtw88/main.c ieee80211_queue_delayed_work(rtwdev->hw, &rtwdev->watch_dog_work, rtwdev 161 drivers/net/wireless/realtek/rtw88/main.c if (rtwdev->stats.tx_cnt > 100 || rtwdev->stats.rx_cnt > 100) rtwdev 162 drivers/net/wireless/realtek/rtw88/main.c rtw_flag_set(rtwdev, RTW_FLAG_BUSY_TRAFFIC); rtwdev 164 drivers/net/wireless/realtek/rtw88/main.c rtw_flag_clear(rtwdev, RTW_FLAG_BUSY_TRAFFIC); rtwdev 166 drivers/net/wireless/realtek/rtw88/main.c if (busy_traffic != rtw_flag_check(rtwdev, RTW_FLAG_BUSY_TRAFFIC)) rtwdev 167 drivers/net/wireless/realtek/rtw88/main.c rtw_coex_wl_status_change_notify(rtwdev); rtwdev 170 drivers/net/wireless/realtek/rtw88/main.c rtwdev->stats.tx_unicast = 0; rtwdev 171 drivers/net/wireless/realtek/rtw88/main.c rtwdev->stats.rx_unicast = 0; rtwdev 172 drivers/net/wireless/realtek/rtw88/main.c rtwdev->stats.tx_cnt = 0; rtwdev 173 drivers/net/wireless/realtek/rtw88/main.c rtwdev->stats.rx_cnt = 0; rtwdev 176 drivers/net/wireless/realtek/rtw88/main.c rtw_iterate_vifs_atomic(rtwdev, rtw_vif_watch_dog_iter, &data); rtwdev 184 drivers/net/wireless/realtek/rtw88/main.c rtw_enter_lps(rtwdev, data.rtwvif); rtwdev 186 drivers/net/wireless/realtek/rtw88/main.c if (rtw_flag_check(rtwdev, RTW_FLAG_SCANNING)) rtwdev 189 drivers/net/wireless/realtek/rtw88/main.c rtw_phy_dynamic_mechanism(rtwdev); rtwdev 191 drivers/net/wireless/realtek/rtw88/main.c rtwdev->watch_dog_cnt++; rtwdev 196 drivers/net/wireless/realtek/rtw88/main.c struct rtw_dev *rtwdev = container_of(work, struct rtw_dev, c2h_work); rtwdev 199 drivers/net/wireless/realtek/rtw88/main.c skb_queue_walk_safe(&rtwdev->c2h_queue, skb, tmp) { rtwdev 200 drivers/net/wireless/realtek/rtw88/main.c skb_unlink(skb, &rtwdev->c2h_queue); rtwdev 201 drivers/net/wireless/realtek/rtw88/main.c rtw_fw_c2h_cmd_handle(rtwdev, skb); rtwdev 285 drivers/net/wireless/realtek/rtw88/main.c void rtw_set_channel(struct rtw_dev *rtwdev) rtwdev 287 drivers/net/wireless/realtek/rtw88/main.c struct ieee80211_hw *hw = rtwdev->hw; rtwdev 288 drivers/net/wireless/realtek/rtw88/main.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 289 drivers/net/wireless/realtek/rtw88/main.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 309 drivers/net/wireless/realtek/rtw88/main.c chip->ops->set_channel(rtwdev, center_chan, bandwidth, primary_chan_idx); rtwdev 312 drivers/net/wireless/realtek/rtw88/main.c rtw_coex_switchband_notify(rtwdev, COEX_SWITCH_TO_5G); rtwdev 314 drivers/net/wireless/realtek/rtw88/main.c if (rtw_flag_check(rtwdev, RTW_FLAG_SCANNING)) rtwdev 315 drivers/net/wireless/realtek/rtw88/main.c rtw_coex_switchband_notify(rtwdev, COEX_SWITCH_TO_24G); rtwdev 317 drivers/net/wireless/realtek/rtw88/main.c rtw_coex_switchband_notify(rtwdev, COEX_SWITCH_TO_24G_NOFORSCAN); rtwdev 320 drivers/net/wireless/realtek/rtw88/main.c rtw_phy_set_tx_power_level(rtwdev, center_chan); rtwdev 323 drivers/net/wireless/realtek/rtw88/main.c static void rtw_vif_write_addr(struct rtw_dev *rtwdev, u32 start, u8 *addr) rtwdev 328 drivers/net/wireless/realtek/rtw88/main.c rtw_write8(rtwdev, start + i, addr[i]); rtwdev 331 drivers/net/wireless/realtek/rtw88/main.c void rtw_vif_port_config(struct rtw_dev *rtwdev, rtwdev 339 drivers/net/wireless/realtek/rtw88/main.c rtw_vif_write_addr(rtwdev, addr, rtwvif->mac_addr); rtwdev 343 drivers/net/wireless/realtek/rtw88/main.c rtw_vif_write_addr(rtwdev, addr, rtwvif->bssid); rtwdev 348 drivers/net/wireless/realtek/rtw88/main.c rtw_write32_mask(rtwdev, addr, mask, rtwvif->net_type); rtwdev 353 drivers/net/wireless/realtek/rtw88/main.c rtw_write32_mask(rtwdev, addr, mask, rtwvif->aid); rtwdev 358 drivers/net/wireless/realtek/rtw88/main.c rtw_write8_mask(rtwdev, addr, mask, rtwvif->bcn_ctrl); rtwdev 382 drivers/net/wireless/realtek/rtw88/main.c static void rtw_hw_config_rf_ant_num(struct rtw_dev *rtwdev, u8 hw_ant_num) rtwdev 384 drivers/net/wireless/realtek/rtw88/main.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 532 drivers/net/wireless/realtek/rtw88/main.c void rtw_update_sta_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si) rtwdev 535 drivers/net/wireless/realtek/rtw88/main.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 536 drivers/net/wireless/realtek/rtw88/main.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 602 drivers/net/wireless/realtek/rtw88/main.c rtw_err(rtwdev, "Unknown band type\n"); rtwdev 654 drivers/net/wireless/realtek/rtw88/main.c rtw_fw_send_ra_info(rtwdev, si); rtwdev 657 drivers/net/wireless/realtek/rtw88/main.c static int rtw_power_on(struct rtw_dev *rtwdev) rtwdev 659 drivers/net/wireless/realtek/rtw88/main.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 660 drivers/net/wireless/realtek/rtw88/main.c struct rtw_fw_state *fw = &rtwdev->fw; rtwdev 664 drivers/net/wireless/realtek/rtw88/main.c ret = rtw_hci_setup(rtwdev); rtwdev 666 drivers/net/wireless/realtek/rtw88/main.c rtw_err(rtwdev, "failed to setup hci\n"); rtwdev 671 drivers/net/wireless/realtek/rtw88/main.c ret = rtw_mac_power_on(rtwdev); rtwdev 673 drivers/net/wireless/realtek/rtw88/main.c rtw_err(rtwdev, "failed to power on mac\n"); rtwdev 680 drivers/net/wireless/realtek/rtw88/main.c rtw_err(rtwdev, "failed to load firmware\n"); rtwdev 684 drivers/net/wireless/realtek/rtw88/main.c ret = rtw_download_firmware(rtwdev, fw); rtwdev 686 drivers/net/wireless/realtek/rtw88/main.c rtw_err(rtwdev, "failed to download firmware\n"); rtwdev 691 drivers/net/wireless/realtek/rtw88/main.c ret = rtw_mac_init(rtwdev); rtwdev 693 drivers/net/wireless/realtek/rtw88/main.c rtw_err(rtwdev, "failed to configure mac\n"); rtwdev 697 drivers/net/wireless/realtek/rtw88/main.c chip->ops->phy_set_param(rtwdev); rtwdev 699 drivers/net/wireless/realtek/rtw88/main.c ret = rtw_hci_start(rtwdev); rtwdev 701 drivers/net/wireless/realtek/rtw88/main.c rtw_err(rtwdev, "failed to start hci\n"); rtwdev 706 drivers/net/wireless/realtek/rtw88/main.c rtw_fw_send_general_info(rtwdev); rtwdev 707 drivers/net/wireless/realtek/rtw88/main.c rtw_fw_send_phydm_info(rtwdev); rtwdev 709 drivers/net/wireless/realtek/rtw88/main.c wifi_only = !rtwdev->efuse.btcoex; rtwdev 710 drivers/net/wireless/realtek/rtw88/main.c rtw_coex_power_on_setting(rtwdev); rtwdev 711 drivers/net/wireless/realtek/rtw88/main.c rtw_coex_init_hw_config(rtwdev, wifi_only); rtwdev 716 drivers/net/wireless/realtek/rtw88/main.c rtw_mac_power_off(rtwdev); rtwdev 722 drivers/net/wireless/realtek/rtw88/main.c int rtw_core_start(struct rtw_dev *rtwdev) rtwdev 726 drivers/net/wireless/realtek/rtw88/main.c ret = rtw_power_on(rtwdev); rtwdev 730 drivers/net/wireless/realtek/rtw88/main.c rtw_sec_enable_sec_engine(rtwdev); rtwdev 733 drivers/net/wireless/realtek/rtw88/main.c rtw_write32(rtwdev, REG_RCR, rtwdev->hal.rcr); rtwdev 735 drivers/net/wireless/realtek/rtw88/main.c ieee80211_queue_delayed_work(rtwdev->hw, &rtwdev->watch_dog_work, rtwdev 738 drivers/net/wireless/realtek/rtw88/main.c rtw_flag_set(rtwdev, RTW_FLAG_RUNNING); rtwdev 743 drivers/net/wireless/realtek/rtw88/main.c static void rtw_power_off(struct rtw_dev *rtwdev) rtwdev 745 drivers/net/wireless/realtek/rtw88/main.c rtwdev->hci.ops->stop(rtwdev); rtwdev 746 drivers/net/wireless/realtek/rtw88/main.c rtw_mac_power_off(rtwdev); rtwdev 749 drivers/net/wireless/realtek/rtw88/main.c void rtw_core_stop(struct rtw_dev *rtwdev) rtwdev 751 drivers/net/wireless/realtek/rtw88/main.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 753 drivers/net/wireless/realtek/rtw88/main.c rtw_flag_clear(rtwdev, RTW_FLAG_RUNNING); rtwdev 754 drivers/net/wireless/realtek/rtw88/main.c rtw_flag_clear(rtwdev, RTW_FLAG_FW_RUNNING); rtwdev 756 drivers/net/wireless/realtek/rtw88/main.c cancel_delayed_work_sync(&rtwdev->watch_dog_work); rtwdev 761 drivers/net/wireless/realtek/rtw88/main.c rtw_power_off(rtwdev); rtwdev 764 drivers/net/wireless/realtek/rtw88/main.c static void rtw_init_ht_cap(struct rtw_dev *rtwdev, rtwdev 767 drivers/net/wireless/realtek/rtw88/main.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 795 drivers/net/wireless/realtek/rtw88/main.c static void rtw_init_vht_cap(struct rtw_dev *rtwdev, rtwdev 798 drivers/net/wireless/realtek/rtw88/main.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 839 drivers/net/wireless/realtek/rtw88/main.c struct rtw_dev *rtwdev = hw->priv; rtwdev 847 drivers/net/wireless/realtek/rtw88/main.c rtw_init_ht_cap(rtwdev, &sband->ht_cap); rtwdev 856 drivers/net/wireless/realtek/rtw88/main.c rtw_init_ht_cap(rtwdev, &sband->ht_cap); rtwdev 858 drivers/net/wireless/realtek/rtw88/main.c rtw_init_vht_cap(rtwdev, &sband->vht_cap); rtwdev 865 drivers/net/wireless/realtek/rtw88/main.c rtw_err(rtwdev, "failed to set supported band\n"); rtwdev 878 drivers/net/wireless/realtek/rtw88/main.c struct rtw_dev *rtwdev = context; rtwdev 879 drivers/net/wireless/realtek/rtw88/main.c struct rtw_fw_state *fw = &rtwdev->fw; rtwdev 882 drivers/net/wireless/realtek/rtw88/main.c rtw_err(rtwdev, "failed to request firmware\n"); rtwdev 888 drivers/net/wireless/realtek/rtw88/main.c static int rtw_load_firmware(struct rtw_dev *rtwdev, const char *fw_name) rtwdev 890 drivers/net/wireless/realtek/rtw88/main.c struct rtw_fw_state *fw = &rtwdev->fw; rtwdev 895 drivers/net/wireless/realtek/rtw88/main.c ret = request_firmware_nowait(THIS_MODULE, true, fw_name, rtwdev->dev, rtwdev 896 drivers/net/wireless/realtek/rtw88/main.c GFP_KERNEL, rtwdev, rtw_load_firmware_cb); rtwdev 898 drivers/net/wireless/realtek/rtw88/main.c rtw_err(rtwdev, "async firmware request failed\n"); rtwdev 905 drivers/net/wireless/realtek/rtw88/main.c static int rtw_chip_parameter_setup(struct rtw_dev *rtwdev) rtwdev 907 drivers/net/wireless/realtek/rtw88/main.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 908 drivers/net/wireless/realtek/rtw88/main.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 909 drivers/net/wireless/realtek/rtw88/main.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 912 drivers/net/wireless/realtek/rtw88/main.c switch (rtw_hci_type(rtwdev)) { rtwdev 914 drivers/net/wireless/realtek/rtw88/main.c rtwdev->hci.rpwm_addr = 0x03d9; rtwdev 917 drivers/net/wireless/realtek/rtw88/main.c rtw_err(rtwdev, "unsupported hci type\n"); rtwdev 921 drivers/net/wireless/realtek/rtw88/main.c hal->chip_version = rtw_read32(rtwdev, REG_SYS_CFG1); rtwdev 947 drivers/net/wireless/realtek/rtw88/main.c rtwdev->hal.rcr |= BIT_VHT_DACK; rtwdev 952 drivers/net/wireless/realtek/rtw88/main.c static int rtw_chip_efuse_enable(struct rtw_dev *rtwdev) rtwdev 954 drivers/net/wireless/realtek/rtw88/main.c struct rtw_fw_state *fw = &rtwdev->fw; rtwdev 957 drivers/net/wireless/realtek/rtw88/main.c ret = rtw_hci_setup(rtwdev); rtwdev 959 drivers/net/wireless/realtek/rtw88/main.c rtw_err(rtwdev, "failed to setup hci\n"); rtwdev 963 drivers/net/wireless/realtek/rtw88/main.c ret = rtw_mac_power_on(rtwdev); rtwdev 965 drivers/net/wireless/realtek/rtw88/main.c rtw_err(rtwdev, "failed to power on mac\n"); rtwdev 969 drivers/net/wireless/realtek/rtw88/main.c rtw_write8(rtwdev, REG_C2HEVT, C2H_HW_FEATURE_DUMP); rtwdev 974 drivers/net/wireless/realtek/rtw88/main.c rtw_err(rtwdev, "failed to load firmware\n"); rtwdev 978 drivers/net/wireless/realtek/rtw88/main.c ret = rtw_download_firmware(rtwdev, fw); rtwdev 980 drivers/net/wireless/realtek/rtw88/main.c rtw_err(rtwdev, "failed to download firmware\n"); rtwdev 987 drivers/net/wireless/realtek/rtw88/main.c rtw_mac_power_off(rtwdev); rtwdev 993 drivers/net/wireless/realtek/rtw88/main.c static int rtw_dump_hw_feature(struct rtw_dev *rtwdev) rtwdev 995 drivers/net/wireless/realtek/rtw88/main.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 1001 drivers/net/wireless/realtek/rtw88/main.c id = rtw_read8(rtwdev, REG_C2HEVT); rtwdev 1003 drivers/net/wireless/realtek/rtw88/main.c rtw_err(rtwdev, "failed to read hw feature report\n"); rtwdev 1008 drivers/net/wireless/realtek/rtw88/main.c hw_feature[i] = rtw_read8(rtwdev, REG_C2HEVT + 2 + i); rtwdev 1010 drivers/net/wireless/realtek/rtw88/main.c rtw_write8(rtwdev, REG_C2HEVT, 0); rtwdev 1019 drivers/net/wireless/realtek/rtw88/main.c rtw_hw_config_rf_ant_num(rtwdev, efuse->hw_cap.ant_num); rtwdev 1022 drivers/net/wireless/realtek/rtw88/main.c efuse->hw_cap.nss > rtwdev->hal.rf_path_num) rtwdev 1023 drivers/net/wireless/realtek/rtw88/main.c efuse->hw_cap.nss = rtwdev->hal.rf_path_num; rtwdev 1025 drivers/net/wireless/realtek/rtw88/main.c rtw_dbg(rtwdev, RTW_DBG_EFUSE, rtwdev 1033 drivers/net/wireless/realtek/rtw88/main.c static void rtw_chip_efuse_disable(struct rtw_dev *rtwdev) rtwdev 1035 drivers/net/wireless/realtek/rtw88/main.c rtw_hci_stop(rtwdev); rtwdev 1036 drivers/net/wireless/realtek/rtw88/main.c rtw_mac_power_off(rtwdev); rtwdev 1039 drivers/net/wireless/realtek/rtw88/main.c static int rtw_chip_efuse_info_setup(struct rtw_dev *rtwdev) rtwdev 1041 drivers/net/wireless/realtek/rtw88/main.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 1044 drivers/net/wireless/realtek/rtw88/main.c mutex_lock(&rtwdev->mutex); rtwdev 1047 drivers/net/wireless/realtek/rtw88/main.c ret = rtw_chip_efuse_enable(rtwdev); rtwdev 1051 drivers/net/wireless/realtek/rtw88/main.c ret = rtw_parse_efuse_map(rtwdev); rtwdev 1055 drivers/net/wireless/realtek/rtw88/main.c ret = rtw_dump_hw_feature(rtwdev); rtwdev 1059 drivers/net/wireless/realtek/rtw88/main.c ret = rtw_check_supported_rfe(rtwdev); rtwdev 1089 drivers/net/wireless/realtek/rtw88/main.c rtw_chip_efuse_disable(rtwdev); rtwdev 1092 drivers/net/wireless/realtek/rtw88/main.c mutex_unlock(&rtwdev->mutex); rtwdev 1096 drivers/net/wireless/realtek/rtw88/main.c static int rtw_chip_board_info_setup(struct rtw_dev *rtwdev) rtwdev 1098 drivers/net/wireless/realtek/rtw88/main.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 1099 drivers/net/wireless/realtek/rtw88/main.c const struct rtw_rfe_def *rfe_def = rtw_get_rfe_def(rtwdev); rtwdev 1104 drivers/net/wireless/realtek/rtw88/main.c rtw_phy_setup_phy_cond(rtwdev, 0); rtwdev 1106 drivers/net/wireless/realtek/rtw88/main.c rtw_phy_init_tx_power(rtwdev); rtwdev 1107 drivers/net/wireless/realtek/rtw88/main.c rtw_load_table(rtwdev, rfe_def->phy_pg_tbl); rtwdev 1108 drivers/net/wireless/realtek/rtw88/main.c rtw_load_table(rtwdev, rfe_def->txpwr_lmt_tbl); rtwdev 1115 drivers/net/wireless/realtek/rtw88/main.c int rtw_chip_info_setup(struct rtw_dev *rtwdev) rtwdev 1119 drivers/net/wireless/realtek/rtw88/main.c ret = rtw_chip_parameter_setup(rtwdev); rtwdev 1121 drivers/net/wireless/realtek/rtw88/main.c rtw_err(rtwdev, "failed to setup chip parameters\n"); rtwdev 1125 drivers/net/wireless/realtek/rtw88/main.c ret = rtw_chip_efuse_info_setup(rtwdev); rtwdev 1127 drivers/net/wireless/realtek/rtw88/main.c rtw_err(rtwdev, "failed to setup chip efuse info\n"); rtwdev 1131 drivers/net/wireless/realtek/rtw88/main.c ret = rtw_chip_board_info_setup(rtwdev); rtwdev 1133 drivers/net/wireless/realtek/rtw88/main.c rtw_err(rtwdev, "failed to setup chip board info\n"); rtwdev 1144 drivers/net/wireless/realtek/rtw88/main.c int rtw_core_init(struct rtw_dev *rtwdev) rtwdev 1146 drivers/net/wireless/realtek/rtw88/main.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 1149 drivers/net/wireless/realtek/rtw88/main.c INIT_LIST_HEAD(&rtwdev->rsvd_page_list); rtwdev 1151 drivers/net/wireless/realtek/rtw88/main.c timer_setup(&rtwdev->tx_report.purge_timer, rtwdev 1154 drivers/net/wireless/realtek/rtw88/main.c INIT_DELAYED_WORK(&rtwdev->watch_dog_work, rtw_watch_dog_work); rtwdev 1155 drivers/net/wireless/realtek/rtw88/main.c INIT_DELAYED_WORK(&rtwdev->lps_work, rtw_lps_work); rtwdev 1159 drivers/net/wireless/realtek/rtw88/main.c INIT_WORK(&rtwdev->c2h_work, rtw_c2h_work); rtwdev 1160 drivers/net/wireless/realtek/rtw88/main.c skb_queue_head_init(&rtwdev->c2h_queue); rtwdev 1161 drivers/net/wireless/realtek/rtw88/main.c skb_queue_head_init(&rtwdev->coex.queue); rtwdev 1162 drivers/net/wireless/realtek/rtw88/main.c skb_queue_head_init(&rtwdev->tx_report.queue); rtwdev 1164 drivers/net/wireless/realtek/rtw88/main.c spin_lock_init(&rtwdev->dm_lock); rtwdev 1165 drivers/net/wireless/realtek/rtw88/main.c spin_lock_init(&rtwdev->rf_lock); rtwdev 1166 drivers/net/wireless/realtek/rtw88/main.c spin_lock_init(&rtwdev->h2c.lock); rtwdev 1167 drivers/net/wireless/realtek/rtw88/main.c spin_lock_init(&rtwdev->tx_report.q_lock); rtwdev 1169 drivers/net/wireless/realtek/rtw88/main.c mutex_init(&rtwdev->mutex); rtwdev 1170 drivers/net/wireless/realtek/rtw88/main.c mutex_init(&rtwdev->coex.mutex); rtwdev 1171 drivers/net/wireless/realtek/rtw88/main.c mutex_init(&rtwdev->hal.tx_power_mutex); rtwdev 1173 drivers/net/wireless/realtek/rtw88/main.c init_waitqueue_head(&rtwdev->coex.wait); rtwdev 1175 drivers/net/wireless/realtek/rtw88/main.c rtwdev->sec.total_cam_num = 32; rtwdev 1176 drivers/net/wireless/realtek/rtw88/main.c rtwdev->hal.current_channel = 1; rtwdev 1177 drivers/net/wireless/realtek/rtw88/main.c set_bit(RTW_BC_MC_MACID, rtwdev->mac_id_map); rtwdev 1179 drivers/net/wireless/realtek/rtw88/main.c mutex_lock(&rtwdev->mutex); rtwdev 1180 drivers/net/wireless/realtek/rtw88/main.c rtw_add_rsvd_page(rtwdev, RSVD_BEACON, false); rtwdev 1181 drivers/net/wireless/realtek/rtw88/main.c mutex_unlock(&rtwdev->mutex); rtwdev 1184 drivers/net/wireless/realtek/rtw88/main.c rtwdev->hal.rcr = BIT_APP_FCS | BIT_APP_MIC | BIT_APP_ICV | rtwdev 1188 drivers/net/wireless/realtek/rtw88/main.c ret = rtw_load_firmware(rtwdev, rtwdev->chip->fw_name); rtwdev 1190 drivers/net/wireless/realtek/rtw88/main.c rtw_warn(rtwdev, "no firmware loaded\n"); rtwdev 1198 drivers/net/wireless/realtek/rtw88/main.c void rtw_core_deinit(struct rtw_dev *rtwdev) rtwdev 1200 drivers/net/wireless/realtek/rtw88/main.c struct rtw_fw_state *fw = &rtwdev->fw; rtwdev 1207 drivers/net/wireless/realtek/rtw88/main.c spin_lock_irqsave(&rtwdev->tx_report.q_lock, flags); rtwdev 1208 drivers/net/wireless/realtek/rtw88/main.c skb_queue_purge(&rtwdev->tx_report.queue); rtwdev 1209 drivers/net/wireless/realtek/rtw88/main.c spin_unlock_irqrestore(&rtwdev->tx_report.q_lock, flags); rtwdev 1211 drivers/net/wireless/realtek/rtw88/main.c list_for_each_entry_safe(rsvd_pkt, tmp, &rtwdev->rsvd_page_list, list) { rtwdev 1216 drivers/net/wireless/realtek/rtw88/main.c mutex_destroy(&rtwdev->mutex); rtwdev 1217 drivers/net/wireless/realtek/rtw88/main.c mutex_destroy(&rtwdev->coex.mutex); rtwdev 1218 drivers/net/wireless/realtek/rtw88/main.c mutex_destroy(&rtwdev->hal.tx_power_mutex); rtwdev 1222 drivers/net/wireless/realtek/rtw88/main.c int rtw_register_hw(struct rtw_dev *rtwdev, struct ieee80211_hw *hw) rtwdev 1228 drivers/net/wireless/realtek/rtw88/main.c max_tx_headroom = rtwdev->chip->tx_pkt_desc_sz; rtwdev 1255 drivers/net/wireless/realtek/rtw88/main.c rtw_set_supported_band(hw, rtwdev->chip); rtwdev 1256 drivers/net/wireless/realtek/rtw88/main.c SET_IEEE80211_PERM_ADDR(hw, rtwdev->efuse.addr); rtwdev 1258 drivers/net/wireless/realtek/rtw88/main.c rtw_regd_init(rtwdev, rtw_regd_notifier); rtwdev 1262 drivers/net/wireless/realtek/rtw88/main.c rtw_err(rtwdev, "failed to register hw\n"); rtwdev 1266 drivers/net/wireless/realtek/rtw88/main.c if (regulatory_hint(hw->wiphy, rtwdev->regd.alpha2)) rtwdev 1267 drivers/net/wireless/realtek/rtw88/main.c rtw_err(rtwdev, "regulatory_hint fail\n"); rtwdev 1269 drivers/net/wireless/realtek/rtw88/main.c rtw_debugfs_init(rtwdev); rtwdev 1275 drivers/net/wireless/realtek/rtw88/main.c void rtw_unregister_hw(struct rtw_dev *rtwdev, struct ieee80211_hw *hw) rtwdev 1277 drivers/net/wireless/realtek/rtw88/main.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 624 drivers/net/wireless/realtek/rtw88/main.h int (*mac_init)(struct rtw_dev *rtwdev); rtwdev 625 drivers/net/wireless/realtek/rtw88/main.h int (*read_efuse)(struct rtw_dev *rtwdev, u8 *map); rtwdev 626 drivers/net/wireless/realtek/rtw88/main.h void (*phy_set_param)(struct rtw_dev *rtwdev); rtwdev 627 drivers/net/wireless/realtek/rtw88/main.h void (*set_channel)(struct rtw_dev *rtwdev, u8 channel, rtwdev 629 drivers/net/wireless/realtek/rtw88/main.h void (*query_rx_desc)(struct rtw_dev *rtwdev, u8 *rx_desc, rtwdev 632 drivers/net/wireless/realtek/rtw88/main.h u32 (*read_rf)(struct rtw_dev *rtwdev, enum rtw_rf_path rf_path, rtwdev 634 drivers/net/wireless/realtek/rtw88/main.h bool (*write_rf)(struct rtw_dev *rtwdev, enum rtw_rf_path rf_path, rtwdev 636 drivers/net/wireless/realtek/rtw88/main.h void (*set_tx_power_index)(struct rtw_dev *rtwdev); rtwdev 637 drivers/net/wireless/realtek/rtw88/main.h int (*rsvd_page_dump)(struct rtw_dev *rtwdev, u8 *buf, u32 offset, rtwdev 639 drivers/net/wireless/realtek/rtw88/main.h void (*set_antenna)(struct rtw_dev *rtwdev, u8 antenna_tx, rtwdev 641 drivers/net/wireless/realtek/rtw88/main.h void (*cfg_ldo25)(struct rtw_dev *rtwdev, bool enable); rtwdev 642 drivers/net/wireless/realtek/rtw88/main.h void (*false_alarm_statistics)(struct rtw_dev *rtwdev); rtwdev 643 drivers/net/wireless/realtek/rtw88/main.h void (*phy_calibration)(struct rtw_dev *rtwdev); rtwdev 644 drivers/net/wireless/realtek/rtw88/main.h void (*dpk_track)(struct rtw_dev *rtwdev); rtwdev 645 drivers/net/wireless/realtek/rtw88/main.h void (*cck_pd_set)(struct rtw_dev *rtwdev, u8 level); rtwdev 648 drivers/net/wireless/realtek/rtw88/main.h void (*coex_set_init)(struct rtw_dev *rtwdev); rtwdev 649 drivers/net/wireless/realtek/rtw88/main.h void (*coex_set_ant_switch)(struct rtw_dev *rtwdev, rtwdev 651 drivers/net/wireless/realtek/rtw88/main.h void (*coex_set_gnt_fix)(struct rtw_dev *rtwdev); rtwdev 652 drivers/net/wireless/realtek/rtw88/main.h void (*coex_set_gnt_debug)(struct rtw_dev *rtwdev); rtwdev 653 drivers/net/wireless/realtek/rtw88/main.h void (*coex_set_rfe_type)(struct rtw_dev *rtwdev); rtwdev 654 drivers/net/wireless/realtek/rtw88/main.h void (*coex_set_wl_tx_power)(struct rtw_dev *rtwdev, u8 wl_pwr); rtwdev 655 drivers/net/wireless/realtek/rtw88/main.h void (*coex_set_wl_rx_gain)(struct rtw_dev *rtwdev, bool low_gain); rtwdev 792 drivers/net/wireless/realtek/rtw88/main.h void (*parse)(struct rtw_dev *rtwdev, const struct rtw_table *tbl); rtwdev 793 drivers/net/wireless/realtek/rtw88/main.h void (*do_cfg)(struct rtw_dev *rtwdev, const struct rtw_table *tbl, rtwdev 798 drivers/net/wireless/realtek/rtw88/main.h static inline void rtw_load_table(struct rtw_dev *rtwdev, rtwdev 801 drivers/net/wireless/realtek/rtw88/main.h (*tbl->parse)(rtwdev, tbl); rtwdev 1381 drivers/net/wireless/realtek/rtw88/main.h static inline bool rtw_flag_check(struct rtw_dev *rtwdev, enum rtw_flags flag) rtwdev 1383 drivers/net/wireless/realtek/rtw88/main.h return test_bit(flag, rtwdev->flags); rtwdev 1386 drivers/net/wireless/realtek/rtw88/main.h static inline void rtw_flag_clear(struct rtw_dev *rtwdev, enum rtw_flags flag) rtwdev 1388 drivers/net/wireless/realtek/rtw88/main.h clear_bit(flag, rtwdev->flags); rtwdev 1391 drivers/net/wireless/realtek/rtw88/main.h static inline void rtw_flag_set(struct rtw_dev *rtwdev, enum rtw_flags flag) rtwdev 1393 drivers/net/wireless/realtek/rtw88/main.h set_bit(flag, rtwdev->flags); rtwdev 1396 drivers/net/wireless/realtek/rtw88/main.h static inline bool rtw_is_assoc(struct rtw_dev *rtwdev) rtwdev 1398 drivers/net/wireless/realtek/rtw88/main.h return !!rtwdev->sta_cnt; rtwdev 1403 drivers/net/wireless/realtek/rtw88/main.h bool check_hw_ready(struct rtw_dev *rtwdev, u32 addr, u32 mask, u32 target); rtwdev 1404 drivers/net/wireless/realtek/rtw88/main.h bool ltecoex_read_reg(struct rtw_dev *rtwdev, u16 offset, u32 *val); rtwdev 1405 drivers/net/wireless/realtek/rtw88/main.h bool ltecoex_reg_write(struct rtw_dev *rtwdev, u16 offset, u32 value); rtwdev 1406 drivers/net/wireless/realtek/rtw88/main.h void rtw_restore_reg(struct rtw_dev *rtwdev, rtwdev 1408 drivers/net/wireless/realtek/rtw88/main.h void rtw_set_channel(struct rtw_dev *rtwdev); rtwdev 1409 drivers/net/wireless/realtek/rtw88/main.h void rtw_vif_port_config(struct rtw_dev *rtwdev, struct rtw_vif *rtwvif, rtwdev 1412 drivers/net/wireless/realtek/rtw88/main.h void rtw_update_sta_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si); rtwdev 1413 drivers/net/wireless/realtek/rtw88/main.h int rtw_core_start(struct rtw_dev *rtwdev); rtwdev 1414 drivers/net/wireless/realtek/rtw88/main.h void rtw_core_stop(struct rtw_dev *rtwdev); rtwdev 1415 drivers/net/wireless/realtek/rtw88/main.h int rtw_chip_info_setup(struct rtw_dev *rtwdev); rtwdev 1416 drivers/net/wireless/realtek/rtw88/main.h int rtw_core_init(struct rtw_dev *rtwdev); rtwdev 1417 drivers/net/wireless/realtek/rtw88/main.h void rtw_core_deinit(struct rtw_dev *rtwdev); rtwdev 1418 drivers/net/wireless/realtek/rtw88/main.h int rtw_register_hw(struct rtw_dev *rtwdev, struct ieee80211_hw *hw); rtwdev 1419 drivers/net/wireless/realtek/rtw88/main.h void rtw_unregister_hw(struct rtw_dev *rtwdev, struct ieee80211_hw *hw); rtwdev 44 drivers/net/wireless/realtek/rtw88/pci.c static u8 rtw_pci_read8(struct rtw_dev *rtwdev, u32 addr) rtwdev 46 drivers/net/wireless/realtek/rtw88/pci.c struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; rtwdev 51 drivers/net/wireless/realtek/rtw88/pci.c static u16 rtw_pci_read16(struct rtw_dev *rtwdev, u32 addr) rtwdev 53 drivers/net/wireless/realtek/rtw88/pci.c struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; rtwdev 58 drivers/net/wireless/realtek/rtw88/pci.c static u32 rtw_pci_read32(struct rtw_dev *rtwdev, u32 addr) rtwdev 60 drivers/net/wireless/realtek/rtw88/pci.c struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; rtwdev 65 drivers/net/wireless/realtek/rtw88/pci.c static void rtw_pci_write8(struct rtw_dev *rtwdev, u32 addr, u8 val) rtwdev 67 drivers/net/wireless/realtek/rtw88/pci.c struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; rtwdev 72 drivers/net/wireless/realtek/rtw88/pci.c static void rtw_pci_write16(struct rtw_dev *rtwdev, u32 addr, u16 val) rtwdev 74 drivers/net/wireless/realtek/rtw88/pci.c struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; rtwdev 79 drivers/net/wireless/realtek/rtw88/pci.c static void rtw_pci_write32(struct rtw_dev *rtwdev, u32 addr, u32 val) rtwdev 81 drivers/net/wireless/realtek/rtw88/pci.c struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; rtwdev 93 drivers/net/wireless/realtek/rtw88/pci.c static void rtw_pci_free_tx_ring_skbs(struct rtw_dev *rtwdev, rtwdev 96 drivers/net/wireless/realtek/rtw88/pci.c struct pci_dev *pdev = to_pci_dev(rtwdev->dev); rtwdev 112 drivers/net/wireless/realtek/rtw88/pci.c static void rtw_pci_free_tx_ring(struct rtw_dev *rtwdev, rtwdev 115 drivers/net/wireless/realtek/rtw88/pci.c struct pci_dev *pdev = to_pci_dev(rtwdev->dev); rtwdev 120 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_free_tx_ring_skbs(rtwdev, tx_ring); rtwdev 127 drivers/net/wireless/realtek/rtw88/pci.c static void rtw_pci_free_rx_ring_skbs(struct rtw_dev *rtwdev, rtwdev 130 drivers/net/wireless/realtek/rtw88/pci.c struct pci_dev *pdev = to_pci_dev(rtwdev->dev); rtwdev 148 drivers/net/wireless/realtek/rtw88/pci.c static void rtw_pci_free_rx_ring(struct rtw_dev *rtwdev, rtwdev 151 drivers/net/wireless/realtek/rtw88/pci.c struct pci_dev *pdev = to_pci_dev(rtwdev->dev); rtwdev 155 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_free_rx_ring_skbs(rtwdev, rx_ring); rtwdev 160 drivers/net/wireless/realtek/rtw88/pci.c static void rtw_pci_free_trx_ring(struct rtw_dev *rtwdev) rtwdev 162 drivers/net/wireless/realtek/rtw88/pci.c struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; rtwdev 169 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_free_tx_ring(rtwdev, tx_ring); rtwdev 174 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_free_rx_ring(rtwdev, rx_ring); rtwdev 178 drivers/net/wireless/realtek/rtw88/pci.c static int rtw_pci_init_tx_ring(struct rtw_dev *rtwdev, rtwdev 182 drivers/net/wireless/realtek/rtw88/pci.c struct pci_dev *pdev = to_pci_dev(rtwdev->dev); rtwdev 189 drivers/net/wireless/realtek/rtw88/pci.c rtw_err(rtwdev, "failed to allocate tx ring\n"); rtwdev 204 drivers/net/wireless/realtek/rtw88/pci.c static int rtw_pci_reset_rx_desc(struct rtw_dev *rtwdev, struct sk_buff *skb, rtwdev 208 drivers/net/wireless/realtek/rtw88/pci.c struct pci_dev *pdev = to_pci_dev(rtwdev->dev); rtwdev 230 drivers/net/wireless/realtek/rtw88/pci.c static void rtw_pci_sync_rx_desc_device(struct rtw_dev *rtwdev, dma_addr_t dma, rtwdev 234 drivers/net/wireless/realtek/rtw88/pci.c struct device *dev = rtwdev->dev; rtwdev 247 drivers/net/wireless/realtek/rtw88/pci.c static int rtw_pci_init_rx_ring(struct rtw_dev *rtwdev, rtwdev 251 drivers/net/wireless/realtek/rtw88/pci.c struct pci_dev *pdev = to_pci_dev(rtwdev->dev); rtwdev 262 drivers/net/wireless/realtek/rtw88/pci.c rtw_err(rtwdev, "failed to allocate rx ring\n"); rtwdev 277 drivers/net/wireless/realtek/rtw88/pci.c ret = rtw_pci_reset_rx_desc(rtwdev, skb, rx_ring, i, desc_size); rtwdev 305 drivers/net/wireless/realtek/rtw88/pci.c rtw_err(rtwdev, "failed to init rx buffer\n"); rtwdev 310 drivers/net/wireless/realtek/rtw88/pci.c static int rtw_pci_init_trx_ring(struct rtw_dev *rtwdev) rtwdev 312 drivers/net/wireless/realtek/rtw88/pci.c struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; rtwdev 315 drivers/net/wireless/realtek/rtw88/pci.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 326 drivers/net/wireless/realtek/rtw88/pci.c ret = rtw_pci_init_tx_ring(rtwdev, tx_ring, tx_desc_size, len); rtwdev 335 drivers/net/wireless/realtek/rtw88/pci.c ret = rtw_pci_init_rx_ring(rtwdev, rx_ring, rx_desc_size, rtwdev 347 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_free_tx_ring(rtwdev, tx_ring); rtwdev 353 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_free_rx_ring(rtwdev, rx_ring); rtwdev 359 drivers/net/wireless/realtek/rtw88/pci.c static void rtw_pci_deinit(struct rtw_dev *rtwdev) rtwdev 361 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_free_trx_ring(rtwdev); rtwdev 364 drivers/net/wireless/realtek/rtw88/pci.c static int rtw_pci_init(struct rtw_dev *rtwdev) rtwdev 366 drivers/net/wireless/realtek/rtw88/pci.c struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; rtwdev 383 drivers/net/wireless/realtek/rtw88/pci.c ret = rtw_pci_init_trx_ring(rtwdev); rtwdev 388 drivers/net/wireless/realtek/rtw88/pci.c static void rtw_pci_reset_buf_desc(struct rtw_dev *rtwdev) rtwdev 390 drivers/net/wireless/realtek/rtw88/pci.c struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; rtwdev 395 drivers/net/wireless/realtek/rtw88/pci.c tmp = rtw_read8(rtwdev, RTK_PCI_CTRL + 3); rtwdev 396 drivers/net/wireless/realtek/rtw88/pci.c rtw_write8(rtwdev, RTK_PCI_CTRL + 3, tmp | 0xf7); rtwdev 399 drivers/net/wireless/realtek/rtw88/pci.c rtw_write32(rtwdev, RTK_PCI_TXBD_DESA_BCNQ, dma); rtwdev 405 drivers/net/wireless/realtek/rtw88/pci.c rtw_write16(rtwdev, RTK_PCI_TXBD_NUM_H2CQ, len); rtwdev 406 drivers/net/wireless/realtek/rtw88/pci.c rtw_write32(rtwdev, RTK_PCI_TXBD_DESA_H2CQ, dma); rtwdev 412 drivers/net/wireless/realtek/rtw88/pci.c rtw_write16(rtwdev, RTK_PCI_TXBD_NUM_BKQ, len); rtwdev 413 drivers/net/wireless/realtek/rtw88/pci.c rtw_write32(rtwdev, RTK_PCI_TXBD_DESA_BKQ, dma); rtwdev 419 drivers/net/wireless/realtek/rtw88/pci.c rtw_write16(rtwdev, RTK_PCI_TXBD_NUM_BEQ, len); rtwdev 420 drivers/net/wireless/realtek/rtw88/pci.c rtw_write32(rtwdev, RTK_PCI_TXBD_DESA_BEQ, dma); rtwdev 426 drivers/net/wireless/realtek/rtw88/pci.c rtw_write16(rtwdev, RTK_PCI_TXBD_NUM_VOQ, len); rtwdev 427 drivers/net/wireless/realtek/rtw88/pci.c rtw_write32(rtwdev, RTK_PCI_TXBD_DESA_VOQ, dma); rtwdev 433 drivers/net/wireless/realtek/rtw88/pci.c rtw_write16(rtwdev, RTK_PCI_TXBD_NUM_VIQ, len); rtwdev 434 drivers/net/wireless/realtek/rtw88/pci.c rtw_write32(rtwdev, RTK_PCI_TXBD_DESA_VIQ, dma); rtwdev 440 drivers/net/wireless/realtek/rtw88/pci.c rtw_write16(rtwdev, RTK_PCI_TXBD_NUM_MGMTQ, len); rtwdev 441 drivers/net/wireless/realtek/rtw88/pci.c rtw_write32(rtwdev, RTK_PCI_TXBD_DESA_MGMTQ, dma); rtwdev 447 drivers/net/wireless/realtek/rtw88/pci.c rtw_write16(rtwdev, RTK_PCI_TXBD_NUM_HI0Q, len); rtwdev 448 drivers/net/wireless/realtek/rtw88/pci.c rtw_write32(rtwdev, RTK_PCI_TXBD_DESA_HI0Q, dma); rtwdev 454 drivers/net/wireless/realtek/rtw88/pci.c rtw_write16(rtwdev, RTK_PCI_RXBD_NUM_MPDUQ, len & 0xfff); rtwdev 455 drivers/net/wireless/realtek/rtw88/pci.c rtw_write32(rtwdev, RTK_PCI_RXBD_DESA_MPDUQ, dma); rtwdev 458 drivers/net/wireless/realtek/rtw88/pci.c rtw_write32(rtwdev, RTK_PCI_TXBD_RWPTR_CLR, 0xffffffff); rtwdev 461 drivers/net/wireless/realtek/rtw88/pci.c rtw_write32_set(rtwdev, RTK_PCI_TXBD_H2CQ_CSR, BIT_CLR_H2CQ_HOST_IDX); rtwdev 462 drivers/net/wireless/realtek/rtw88/pci.c rtw_write32_set(rtwdev, RTK_PCI_TXBD_H2CQ_CSR, BIT_CLR_H2CQ_HW_IDX); rtwdev 465 drivers/net/wireless/realtek/rtw88/pci.c static void rtw_pci_reset_trx_ring(struct rtw_dev *rtwdev) rtwdev 467 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_reset_buf_desc(rtwdev); rtwdev 470 drivers/net/wireless/realtek/rtw88/pci.c static void rtw_pci_enable_interrupt(struct rtw_dev *rtwdev, rtwdev 473 drivers/net/wireless/realtek/rtw88/pci.c rtw_write32(rtwdev, RTK_PCI_HIMR0, rtwpci->irq_mask[0]); rtwdev 474 drivers/net/wireless/realtek/rtw88/pci.c rtw_write32(rtwdev, RTK_PCI_HIMR1, rtwpci->irq_mask[1]); rtwdev 475 drivers/net/wireless/realtek/rtw88/pci.c rtw_write32(rtwdev, RTK_PCI_HIMR3, rtwpci->irq_mask[3]); rtwdev 479 drivers/net/wireless/realtek/rtw88/pci.c static void rtw_pci_disable_interrupt(struct rtw_dev *rtwdev, rtwdev 482 drivers/net/wireless/realtek/rtw88/pci.c rtw_write32(rtwdev, RTK_PCI_HIMR0, 0); rtwdev 483 drivers/net/wireless/realtek/rtw88/pci.c rtw_write32(rtwdev, RTK_PCI_HIMR1, 0); rtwdev 484 drivers/net/wireless/realtek/rtw88/pci.c rtw_write32(rtwdev, RTK_PCI_HIMR3, 0); rtwdev 488 drivers/net/wireless/realtek/rtw88/pci.c static int rtw_pci_setup(struct rtw_dev *rtwdev) rtwdev 490 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_reset_trx_ring(rtwdev); rtwdev 495 drivers/net/wireless/realtek/rtw88/pci.c static void rtw_pci_dma_reset(struct rtw_dev *rtwdev, struct rtw_pci *rtwpci) rtwdev 498 drivers/net/wireless/realtek/rtw88/pci.c rtw_write32_set(rtwdev, RTK_PCI_CTRL, rtwdev 503 drivers/net/wireless/realtek/rtw88/pci.c static void rtw_pci_dma_release(struct rtw_dev *rtwdev, struct rtw_pci *rtwpci) rtwdev 510 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_free_tx_ring_skbs(rtwdev, tx_ring); rtwdev 514 drivers/net/wireless/realtek/rtw88/pci.c static int rtw_pci_start(struct rtw_dev *rtwdev) rtwdev 516 drivers/net/wireless/realtek/rtw88/pci.c struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; rtwdev 519 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_dma_reset(rtwdev, rtwpci); rtwdev 522 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_enable_interrupt(rtwdev, rtwpci); rtwdev 528 drivers/net/wireless/realtek/rtw88/pci.c static void rtw_pci_stop(struct rtw_dev *rtwdev) rtwdev 530 drivers/net/wireless/realtek/rtw88/pci.c struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; rtwdev 534 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_disable_interrupt(rtwdev, rtwpci); rtwdev 535 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_dma_release(rtwdev, rtwpci); rtwdev 582 drivers/net/wireless/realtek/rtw88/pci.c static void rtw_pci_dma_check(struct rtw_dev *rtwdev, rtwdev 586 drivers/net/wireless/realtek/rtw88/pci.c struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; rtwdev 587 drivers/net/wireless/realtek/rtw88/pci.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 598 drivers/net/wireless/realtek/rtw88/pci.c rtw_warn(rtwdev, "pci bus timeout, check dma status\n"); rtwdev 603 drivers/net/wireless/realtek/rtw88/pci.c static int rtw_pci_xmit(struct rtw_dev *rtwdev, rtwdev 607 drivers/net/wireless/realtek/rtw88/pci.c struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; rtwdev 608 drivers/net/wireless/realtek/rtw88/pci.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 661 drivers/net/wireless/realtek/rtw88/pci.c rtw_write16(rtwdev, bd_idx, ring->r.wp & 0xfff); rtwdev 665 drivers/net/wireless/realtek/rtw88/pci.c reg_bcn_work = rtw_read8(rtwdev, RTK_PCI_TXBD_BCN_WORK); rtwdev 667 drivers/net/wireless/realtek/rtw88/pci.c rtw_write8(rtwdev, RTK_PCI_TXBD_BCN_WORK, reg_bcn_work); rtwdev 673 drivers/net/wireless/realtek/rtw88/pci.c static int rtw_pci_write_data_rsvd_page(struct rtw_dev *rtwdev, u8 *buf, rtwdev 681 drivers/net/wireless/realtek/rtw88/pci.c tx_pkt_desc_sz = rtwdev->chip->tx_pkt_desc_sz; rtwdev 693 drivers/net/wireless/realtek/rtw88/pci.c return rtw_pci_xmit(rtwdev, &pkt_info, skb, RTW_TX_QUEUE_BCN); rtwdev 696 drivers/net/wireless/realtek/rtw88/pci.c static int rtw_pci_write_data_h2c(struct rtw_dev *rtwdev, u8 *buf, u32 size) rtwdev 703 drivers/net/wireless/realtek/rtw88/pci.c tx_pkt_desc_sz = rtwdev->chip->tx_pkt_desc_sz; rtwdev 714 drivers/net/wireless/realtek/rtw88/pci.c return rtw_pci_xmit(rtwdev, &pkt_info, skb, RTW_TX_QUEUE_H2C); rtwdev 717 drivers/net/wireless/realtek/rtw88/pci.c static int rtw_pci_tx(struct rtw_dev *rtwdev, rtwdev 721 drivers/net/wireless/realtek/rtw88/pci.c struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; rtwdev 726 drivers/net/wireless/realtek/rtw88/pci.c ret = rtw_pci_xmit(rtwdev, pkt_info, skb, queue); rtwdev 732 drivers/net/wireless/realtek/rtw88/pci.c ieee80211_stop_queue(rtwdev->hw, skb_get_queue_mapping(skb)); rtwdev 739 drivers/net/wireless/realtek/rtw88/pci.c static void rtw_pci_tx_isr(struct rtw_dev *rtwdev, struct rtw_pci *rtwpci, rtwdev 742 drivers/net/wireless/realtek/rtw88/pci.c struct ieee80211_hw *hw = rtwdev->hw; rtwdev 755 drivers/net/wireless/realtek/rtw88/pci.c bd_idx = rtw_read32(rtwdev, bd_idx_addr); rtwdev 766 drivers/net/wireless/realtek/rtw88/pci.c rtw_err(rtwdev, "failed to dequeue %d skb TX queue %d, BD=0x%08x, rp %d -> %d\n", rtwdev 787 drivers/net/wireless/realtek/rtw88/pci.c skb_pull(skb, rtwdev->chip->tx_pkt_desc_sz); rtwdev 793 drivers/net/wireless/realtek/rtw88/pci.c rtw_tx_report_enqueue(rtwdev, skb, tx_data->sn); rtwdev 810 drivers/net/wireless/realtek/rtw88/pci.c static void rtw_pci_rx_isr(struct rtw_dev *rtwdev, struct rtw_pci *rtwpci, rtwdev 813 drivers/net/wireless/realtek/rtw88/pci.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 829 drivers/net/wireless/realtek/rtw88/pci.c tmp = rtw_read32(rtwdev, RTK_PCI_RXBD_IDX_MPDUQ); rtwdev 839 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_dma_check(rtwdev, ring, cur_rp); rtwdev 842 drivers/net/wireless/realtek/rtw88/pci.c dma_sync_single_for_cpu(rtwdev->dev, dma, RTK_PCI_RX_BUF_SIZE, rtwdev 845 drivers/net/wireless/realtek/rtw88/pci.c chip->ops->query_rx_desc(rtwdev, rx_desc, &pkt_stat, &rx_status); rtwdev 863 drivers/net/wireless/realtek/rtw88/pci.c rtw_fw_c2h_cmd_rx_irqsafe(rtwdev, pkt_offset, new); rtwdev 868 drivers/net/wireless/realtek/rtw88/pci.c rtw_rx_stats(rtwdev, pkt_stat.vif, new); rtwdev 870 drivers/net/wireless/realtek/rtw88/pci.c ieee80211_rx_irqsafe(rtwdev->hw, new); rtwdev 875 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_sync_rx_desc_device(rtwdev, dma, ring, cur_rp, rtwdev 885 drivers/net/wireless/realtek/rtw88/pci.c rtw_write16(rtwdev, RTK_PCI_RXBD_IDX_MPDUQ, ring->r.rp); rtwdev 888 drivers/net/wireless/realtek/rtw88/pci.c static void rtw_pci_irq_recognized(struct rtw_dev *rtwdev, rtwdev 891 drivers/net/wireless/realtek/rtw88/pci.c irq_status[0] = rtw_read32(rtwdev, RTK_PCI_HISR0); rtwdev 892 drivers/net/wireless/realtek/rtw88/pci.c irq_status[1] = rtw_read32(rtwdev, RTK_PCI_HISR1); rtwdev 893 drivers/net/wireless/realtek/rtw88/pci.c irq_status[3] = rtw_read32(rtwdev, RTK_PCI_HISR3); rtwdev 897 drivers/net/wireless/realtek/rtw88/pci.c rtw_write32(rtwdev, RTK_PCI_HISR0, irq_status[0]); rtwdev 898 drivers/net/wireless/realtek/rtw88/pci.c rtw_write32(rtwdev, RTK_PCI_HISR1, irq_status[1]); rtwdev 899 drivers/net/wireless/realtek/rtw88/pci.c rtw_write32(rtwdev, RTK_PCI_HISR3, irq_status[3]); rtwdev 904 drivers/net/wireless/realtek/rtw88/pci.c struct rtw_dev *rtwdev = dev; rtwdev 905 drivers/net/wireless/realtek/rtw88/pci.c struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; rtwdev 919 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_disable_interrupt(rtwdev, rtwpci); rtwdev 928 drivers/net/wireless/realtek/rtw88/pci.c struct rtw_dev *rtwdev = dev; rtwdev 929 drivers/net/wireless/realtek/rtw88/pci.c struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; rtwdev 934 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_irq_recognized(rtwdev, rtwpci, irq_status); rtwdev 937 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_tx_isr(rtwdev, rtwpci, RTW_TX_QUEUE_MGMT); rtwdev 939 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_tx_isr(rtwdev, rtwpci, RTW_TX_QUEUE_HI0); rtwdev 941 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_tx_isr(rtwdev, rtwpci, RTW_TX_QUEUE_BE); rtwdev 943 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_tx_isr(rtwdev, rtwpci, RTW_TX_QUEUE_BK); rtwdev 945 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_tx_isr(rtwdev, rtwpci, RTW_TX_QUEUE_VO); rtwdev 947 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_tx_isr(rtwdev, rtwpci, RTW_TX_QUEUE_VI); rtwdev 949 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_tx_isr(rtwdev, rtwpci, RTW_TX_QUEUE_H2C); rtwdev 951 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_rx_isr(rtwdev, rtwpci, RTW_RX_QUEUE_MPDU); rtwdev 954 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_enable_interrupt(rtwdev, rtwpci); rtwdev 960 drivers/net/wireless/realtek/rtw88/pci.c static int rtw_pci_io_mapping(struct rtw_dev *rtwdev, rtwdev 963 drivers/net/wireless/realtek/rtw88/pci.c struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; rtwdev 970 drivers/net/wireless/realtek/rtw88/pci.c rtw_err(rtwdev, "failed to request pci regions\n"); rtwdev 977 drivers/net/wireless/realtek/rtw88/pci.c rtw_err(rtwdev, "failed to map pci memory\n"); rtwdev 984 drivers/net/wireless/realtek/rtw88/pci.c static void rtw_pci_io_unmapping(struct rtw_dev *rtwdev, rtwdev 987 drivers/net/wireless/realtek/rtw88/pci.c struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; rtwdev 995 drivers/net/wireless/realtek/rtw88/pci.c static void rtw_dbi_write8(struct rtw_dev *rtwdev, u16 addr, u8 data) rtwdev 1003 drivers/net/wireless/realtek/rtw88/pci.c rtw_write8(rtwdev, REG_DBI_WDATA_V1 + remainder, data); rtwdev 1004 drivers/net/wireless/realtek/rtw88/pci.c rtw_write16(rtwdev, REG_DBI_FLAG_V1, write_addr); rtwdev 1005 drivers/net/wireless/realtek/rtw88/pci.c rtw_write8(rtwdev, REG_DBI_FLAG_V1 + 2, 0x01); rtwdev 1007 drivers/net/wireless/realtek/rtw88/pci.c flag = rtw_read8(rtwdev, REG_DBI_FLAG_V1 + 2); rtwdev 1010 drivers/net/wireless/realtek/rtw88/pci.c flag = rtw_read8(rtwdev, REG_DBI_FLAG_V1 + 2); rtwdev 1017 drivers/net/wireless/realtek/rtw88/pci.c static void rtw_mdio_write(struct rtw_dev *rtwdev, u8 addr, u16 data, bool g1) rtwdev 1023 drivers/net/wireless/realtek/rtw88/pci.c rtw_write16(rtwdev, REG_MDIO_V1, data); rtwdev 1027 drivers/net/wireless/realtek/rtw88/pci.c rtw_write8(rtwdev, REG_PCIE_MIX_CFG, addr & 0x1f); rtwdev 1028 drivers/net/wireless/realtek/rtw88/pci.c rtw_write8(rtwdev, REG_PCIE_MIX_CFG + 3, page); rtwdev 1030 drivers/net/wireless/realtek/rtw88/pci.c rtw_write32_mask(rtwdev, REG_PCIE_MIX_CFG, BIT_MDIO_WFLAG_V1, 1); rtwdev 1031 drivers/net/wireless/realtek/rtw88/pci.c wflag = rtw_read32_mask(rtwdev, REG_PCIE_MIX_CFG, BIT_MDIO_WFLAG_V1); rtwdev 1036 drivers/net/wireless/realtek/rtw88/pci.c wflag = rtw_read32_mask(rtwdev, REG_PCIE_MIX_CFG, rtwdev 1044 drivers/net/wireless/realtek/rtw88/pci.c static void rtw_pci_phy_cfg(struct rtw_dev *rtwdev) rtwdev 1046 drivers/net/wireless/realtek/rtw88/pci.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 1053 drivers/net/wireless/realtek/rtw88/pci.c cut = BIT(0) << rtwdev->hal.cut_version; rtwdev 1064 drivers/net/wireless/realtek/rtw88/pci.c rtw_mdio_write(rtwdev, offset, value, true); rtwdev 1066 drivers/net/wireless/realtek/rtw88/pci.c rtw_dbi_write8(rtwdev, offset, value); rtwdev 1078 drivers/net/wireless/realtek/rtw88/pci.c rtw_mdio_write(rtwdev, offset, value, false); rtwdev 1080 drivers/net/wireless/realtek/rtw88/pci.c rtw_dbi_write8(rtwdev, offset, value); rtwdev 1084 drivers/net/wireless/realtek/rtw88/pci.c static int rtw_pci_claim(struct rtw_dev *rtwdev, struct pci_dev *pdev) rtwdev 1090 drivers/net/wireless/realtek/rtw88/pci.c rtw_err(rtwdev, "failed to enable pci device\n"); rtwdev 1095 drivers/net/wireless/realtek/rtw88/pci.c pci_set_drvdata(pdev, rtwdev->hw); rtwdev 1096 drivers/net/wireless/realtek/rtw88/pci.c SET_IEEE80211_DEV(rtwdev->hw, &pdev->dev); rtwdev 1101 drivers/net/wireless/realtek/rtw88/pci.c static void rtw_pci_declaim(struct rtw_dev *rtwdev, struct pci_dev *pdev) rtwdev 1107 drivers/net/wireless/realtek/rtw88/pci.c static int rtw_pci_setup_resource(struct rtw_dev *rtwdev, struct pci_dev *pdev) rtwdev 1112 drivers/net/wireless/realtek/rtw88/pci.c rtwpci = (struct rtw_pci *)rtwdev->priv; rtwdev 1116 drivers/net/wireless/realtek/rtw88/pci.c ret = rtw_pci_io_mapping(rtwdev, pdev); rtwdev 1118 drivers/net/wireless/realtek/rtw88/pci.c rtw_err(rtwdev, "failed to request pci io region\n"); rtwdev 1122 drivers/net/wireless/realtek/rtw88/pci.c ret = rtw_pci_init(rtwdev); rtwdev 1124 drivers/net/wireless/realtek/rtw88/pci.c rtw_err(rtwdev, "failed to allocate pci resources\n"); rtwdev 1128 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_phy_cfg(rtwdev); rtwdev 1133 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_io_unmapping(rtwdev, pdev); rtwdev 1139 drivers/net/wireless/realtek/rtw88/pci.c static void rtw_pci_destroy(struct rtw_dev *rtwdev, struct pci_dev *pdev) rtwdev 1141 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_deinit(rtwdev); rtwdev 1142 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_io_unmapping(rtwdev, pdev); rtwdev 1161 drivers/net/wireless/realtek/rtw88/pci.c static int rtw_pci_request_irq(struct rtw_dev *rtwdev, struct pci_dev *pdev) rtwdev 1171 drivers/net/wireless/realtek/rtw88/pci.c rtw_err(rtwdev, "failed to alloc PCI irq vectors\n"); rtwdev 1175 drivers/net/wireless/realtek/rtw88/pci.c ret = devm_request_threaded_irq(rtwdev->dev, pdev->irq, rtwdev 1178 drivers/net/wireless/realtek/rtw88/pci.c IRQF_SHARED, KBUILD_MODNAME, rtwdev); rtwdev 1180 drivers/net/wireless/realtek/rtw88/pci.c rtw_err(rtwdev, "failed to request irq %d\n", ret); rtwdev 1187 drivers/net/wireless/realtek/rtw88/pci.c static void rtw_pci_free_irq(struct rtw_dev *rtwdev, struct pci_dev *pdev) rtwdev 1189 drivers/net/wireless/realtek/rtw88/pci.c devm_free_irq(rtwdev->dev, pdev->irq, rtwdev); rtwdev 1197 drivers/net/wireless/realtek/rtw88/pci.c struct rtw_dev *rtwdev; rtwdev 1208 drivers/net/wireless/realtek/rtw88/pci.c rtwdev = hw->priv; rtwdev 1209 drivers/net/wireless/realtek/rtw88/pci.c rtwdev->hw = hw; rtwdev 1210 drivers/net/wireless/realtek/rtw88/pci.c rtwdev->dev = &pdev->dev; rtwdev 1211 drivers/net/wireless/realtek/rtw88/pci.c rtwdev->chip = (struct rtw_chip_info *)id->driver_data; rtwdev 1212 drivers/net/wireless/realtek/rtw88/pci.c rtwdev->hci.ops = &rtw_pci_ops; rtwdev 1213 drivers/net/wireless/realtek/rtw88/pci.c rtwdev->hci.type = RTW_HCI_TYPE_PCIE; rtwdev 1215 drivers/net/wireless/realtek/rtw88/pci.c ret = rtw_core_init(rtwdev); rtwdev 1219 drivers/net/wireless/realtek/rtw88/pci.c rtw_dbg(rtwdev, RTW_DBG_PCI, rtwdev 1223 drivers/net/wireless/realtek/rtw88/pci.c ret = rtw_pci_claim(rtwdev, pdev); rtwdev 1225 drivers/net/wireless/realtek/rtw88/pci.c rtw_err(rtwdev, "failed to claim pci device\n"); rtwdev 1229 drivers/net/wireless/realtek/rtw88/pci.c ret = rtw_pci_setup_resource(rtwdev, pdev); rtwdev 1231 drivers/net/wireless/realtek/rtw88/pci.c rtw_err(rtwdev, "failed to setup pci resources\n"); rtwdev 1235 drivers/net/wireless/realtek/rtw88/pci.c ret = rtw_chip_info_setup(rtwdev); rtwdev 1237 drivers/net/wireless/realtek/rtw88/pci.c rtw_err(rtwdev, "failed to setup chip information\n"); rtwdev 1241 drivers/net/wireless/realtek/rtw88/pci.c ret = rtw_register_hw(rtwdev, hw); rtwdev 1243 drivers/net/wireless/realtek/rtw88/pci.c rtw_err(rtwdev, "failed to register hw\n"); rtwdev 1247 drivers/net/wireless/realtek/rtw88/pci.c ret = rtw_pci_request_irq(rtwdev, pdev); rtwdev 1256 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_destroy(rtwdev, pdev); rtwdev 1259 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_declaim(rtwdev, pdev); rtwdev 1262 drivers/net/wireless/realtek/rtw88/pci.c rtw_core_deinit(rtwdev); rtwdev 1273 drivers/net/wireless/realtek/rtw88/pci.c struct rtw_dev *rtwdev; rtwdev 1279 drivers/net/wireless/realtek/rtw88/pci.c rtwdev = hw->priv; rtwdev 1280 drivers/net/wireless/realtek/rtw88/pci.c rtwpci = (struct rtw_pci *)rtwdev->priv; rtwdev 1282 drivers/net/wireless/realtek/rtw88/pci.c rtw_unregister_hw(rtwdev, hw); rtwdev 1283 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_disable_interrupt(rtwdev, rtwpci); rtwdev 1284 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_destroy(rtwdev, pdev); rtwdev 1285 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_declaim(rtwdev, pdev); rtwdev 1286 drivers/net/wireless/realtek/rtw88/pci.c rtw_pci_free_irq(rtwdev, pdev); rtwdev 1287 drivers/net/wireless/realtek/rtw88/pci.c rtw_core_deinit(rtwdev); rtwdev 114 drivers/net/wireless/realtek/rtw88/phy.c static void rtw_phy_cck_pd_init(struct rtw_dev *rtwdev) rtwdev 116 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_dm_info *dm_info = &rtwdev->dm_info; rtwdev 127 drivers/net/wireless/realtek/rtw88/phy.c void rtw_phy_init(struct rtw_dev *rtwdev) rtwdev 129 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 130 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_dm_info *dm_info = &rtwdev->dm_info; rtwdev 144 drivers/net/wireless/realtek/rtw88/phy.c dm_info->igi_history[0] = rtw_read32_mask(rtwdev, addr, mask); rtwdev 145 drivers/net/wireless/realtek/rtw88/phy.c rtw_phy_cck_pd_init(rtwdev); rtwdev 148 drivers/net/wireless/realtek/rtw88/phy.c void rtw_phy_dig_write(struct rtw_dev *rtwdev, u8 igi) rtwdev 150 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 151 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 158 drivers/net/wireless/realtek/rtw88/phy.c rtw_write32_mask(rtwdev, addr, mask, igi); rtwdev 162 drivers/net/wireless/realtek/rtw88/phy.c static void rtw_phy_stat_false_alarm(struct rtw_dev *rtwdev) rtwdev 164 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 166 drivers/net/wireless/realtek/rtw88/phy.c chip->ops->false_alarm_statistics(rtwdev); rtwdev 193 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_dev *rtwdev; rtwdev 200 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_dev *rtwdev = iter_data->rtwdev; rtwdev 207 drivers/net/wireless/realtek/rtw88/phy.c rtw_fw_send_rssi_info(rtwdev, si); rtwdev 212 drivers/net/wireless/realtek/rtw88/phy.c static void rtw_phy_stat_rssi(struct rtw_dev *rtwdev) rtwdev 214 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_dm_info *dm_info = &rtwdev->dm_info; rtwdev 217 drivers/net/wireless/realtek/rtw88/phy.c data.rtwdev = rtwdev; rtwdev 219 drivers/net/wireless/realtek/rtw88/phy.c rtw_iterate_stas_atomic(rtwdev, rtw_phy_stat_rssi_iter, &data); rtwdev 225 drivers/net/wireless/realtek/rtw88/phy.c static void rtw_phy_statistics(struct rtw_dev *rtwdev) rtwdev 227 drivers/net/wireless/realtek/rtw88/phy.c rtw_phy_stat_rssi(rtwdev); rtwdev 228 drivers/net/wireless/realtek/rtw88/phy.c rtw_phy_stat_false_alarm(rtwdev); rtwdev 387 drivers/net/wireless/realtek/rtw88/phy.c static void rtw_phy_dig(struct rtw_dev *rtwdev) rtwdev 389 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_dm_info *dm_info = &rtwdev->dm_info; rtwdev 397 drivers/net/wireless/realtek/rtw88/phy.c if (rtw_flag_check(rtwdev, RTW_FLAG_DIG_DISABLE)) rtwdev 403 drivers/net/wireless/realtek/rtw88/phy.c linked = !!rtwdev->sta_cnt; rtwdev 437 drivers/net/wireless/realtek/rtw88/phy.c rtw_phy_dig_write(rtwdev, cur_igi); rtwdev 442 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_dev *rtwdev = data; rtwdev 445 drivers/net/wireless/realtek/rtw88/phy.c rtw_update_sta_info(rtwdev, si); rtwdev 448 drivers/net/wireless/realtek/rtw88/phy.c static void rtw_phy_ra_info_update(struct rtw_dev *rtwdev) rtwdev 450 drivers/net/wireless/realtek/rtw88/phy.c if (rtwdev->watch_dog_cnt & 0x3) rtwdev 453 drivers/net/wireless/realtek/rtw88/phy.c rtw_iterate_stas_atomic(rtwdev, rtw_phy_ra_info_update_iter, rtwdev); rtwdev 456 drivers/net/wireless/realtek/rtw88/phy.c static void rtw_phy_dpk_track(struct rtw_dev *rtwdev) rtwdev 458 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 461 drivers/net/wireless/realtek/rtw88/phy.c chip->ops->dpk_track(rtwdev); rtwdev 467 drivers/net/wireless/realtek/rtw88/phy.c static u8 rtw_phy_cck_pd_lv_unlink(struct rtw_dev *rtwdev) rtwdev 469 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_dm_info *dm_info = &rtwdev->dm_info; rtwdev 488 drivers/net/wireless/realtek/rtw88/phy.c static u8 rtw_phy_cck_pd_lv_link(struct rtw_dev *rtwdev) rtwdev 490 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_dm_info *dm_info = &rtwdev->dm_info; rtwdev 509 drivers/net/wireless/realtek/rtw88/phy.c static u8 rtw_phy_cck_pd_lv(struct rtw_dev *rtwdev) rtwdev 511 drivers/net/wireless/realtek/rtw88/phy.c if (!rtw_is_assoc(rtwdev)) rtwdev 512 drivers/net/wireless/realtek/rtw88/phy.c return rtw_phy_cck_pd_lv_unlink(rtwdev); rtwdev 514 drivers/net/wireless/realtek/rtw88/phy.c return rtw_phy_cck_pd_lv_link(rtwdev); rtwdev 517 drivers/net/wireless/realtek/rtw88/phy.c static void rtw_phy_cck_pd(struct rtw_dev *rtwdev) rtwdev 519 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_dm_info *dm_info = &rtwdev->dm_info; rtwdev 520 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 524 drivers/net/wireless/realtek/rtw88/phy.c if (rtwdev->hal.current_band_type != RTW_BAND_2G) rtwdev 532 drivers/net/wireless/realtek/rtw88/phy.c level = rtw_phy_cck_pd_lv(rtwdev); rtwdev 538 drivers/net/wireless/realtek/rtw88/phy.c chip->ops->cck_pd_set(rtwdev, level); rtwdev 541 drivers/net/wireless/realtek/rtw88/phy.c void rtw_phy_dynamic_mechanism(struct rtw_dev *rtwdev) rtwdev 544 drivers/net/wireless/realtek/rtw88/phy.c rtw_phy_statistics(rtwdev); rtwdev 545 drivers/net/wireless/realtek/rtw88/phy.c rtw_phy_dig(rtwdev); rtwdev 546 drivers/net/wireless/realtek/rtw88/phy.c rtw_phy_cck_pd(rtwdev); rtwdev 547 drivers/net/wireless/realtek/rtw88/phy.c rtw_phy_ra_info_update(rtwdev); rtwdev 548 drivers/net/wireless/realtek/rtw88/phy.c rtw_phy_dpk_track(rtwdev); rtwdev 668 drivers/net/wireless/realtek/rtw88/phy.c u32 rtw_phy_read_rf(struct rtw_dev *rtwdev, enum rtw_rf_path rf_path, rtwdev 671 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 672 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 677 drivers/net/wireless/realtek/rtw88/phy.c rtw_err(rtwdev, "unsupported rf path (%d)\n", rf_path); rtwdev 685 drivers/net/wireless/realtek/rtw88/phy.c val = rtw_read32_mask(rtwdev, direct_addr, mask); rtwdev 690 drivers/net/wireless/realtek/rtw88/phy.c bool rtw_phy_write_rf_reg_sipi(struct rtw_dev *rtwdev, enum rtw_rf_path rf_path, rtwdev 693 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 694 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 701 drivers/net/wireless/realtek/rtw88/phy.c rtw_err(rtwdev, "unsupported rf path (%d)\n", rf_path); rtwdev 709 drivers/net/wireless/realtek/rtw88/phy.c old_data = rtw_phy_read_rf(rtwdev, rf_path, addr, RFREG_MASK); rtwdev 712 drivers/net/wireless/realtek/rtw88/phy.c rtw_err(rtwdev, "Write fail, rf is disabled\n"); rtwdev 722 drivers/net/wireless/realtek/rtw88/phy.c rtw_write32(rtwdev, sipi_addr[rf_path], data_and_addr); rtwdev 729 drivers/net/wireless/realtek/rtw88/phy.c bool rtw_phy_write_rf_reg(struct rtw_dev *rtwdev, enum rtw_rf_path rf_path, rtwdev 732 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 733 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 738 drivers/net/wireless/realtek/rtw88/phy.c rtw_err(rtwdev, "unsupported rf path (%d)\n", rf_path); rtwdev 747 drivers/net/wireless/realtek/rtw88/phy.c rtw_write32_mask(rtwdev, REG_RSV_CTRL, BITS_RFC_DIRECT, DISABLE_PI); rtwdev 748 drivers/net/wireless/realtek/rtw88/phy.c rtw_write32_mask(rtwdev, REG_WLRF1, BITS_RFC_DIRECT, DISABLE_PI); rtwdev 751 drivers/net/wireless/realtek/rtw88/phy.c rtw_write32_mask(rtwdev, direct_addr, mask, data); rtwdev 756 drivers/net/wireless/realtek/rtw88/phy.c rtw_write32_mask(rtwdev, REG_RSV_CTRL, BITS_RFC_DIRECT, ENABLE_PI); rtwdev 757 drivers/net/wireless/realtek/rtw88/phy.c rtw_write32_mask(rtwdev, REG_WLRF1, BITS_RFC_DIRECT, ENABLE_PI); rtwdev 763 drivers/net/wireless/realtek/rtw88/phy.c bool rtw_phy_write_rf_reg_mix(struct rtw_dev *rtwdev, enum rtw_rf_path rf_path, rtwdev 767 drivers/net/wireless/realtek/rtw88/phy.c return rtw_phy_write_rf_reg(rtwdev, rf_path, addr, mask, data); rtwdev 769 drivers/net/wireless/realtek/rtw88/phy.c return rtw_phy_write_rf_reg_sipi(rtwdev, rf_path, addr, mask, data); rtwdev 772 drivers/net/wireless/realtek/rtw88/phy.c void rtw_phy_setup_phy_cond(struct rtw_dev *rtwdev, u32 pkg) rtwdev 774 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 775 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 783 drivers/net/wireless/realtek/rtw88/phy.c switch (rtw_hci_type(rtwdev)) { rtwdev 798 drivers/net/wireless/realtek/rtw88/phy.c rtw_dbg(rtwdev, RTW_DBG_PHY, "phy cond=0x%08x\n", *((u32 *)&hal->phy_cond)); rtwdev 801 drivers/net/wireless/realtek/rtw88/phy.c static bool check_positive(struct rtw_dev *rtwdev, struct rtw_phy_cond cond) rtwdev 803 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 821 drivers/net/wireless/realtek/rtw88/phy.c void rtw_parse_tbl_phy_cond(struct rtw_dev *rtwdev, const struct rtw_table *tbl) rtwdev 848 drivers/net/wireless/realtek/rtw88/phy.c if (check_positive(rtwdev, pos_cond)) { rtwdev 859 drivers/net/wireless/realtek/rtw88/phy.c (*tbl->do_cfg)(rtwdev, tbl, p->cfg.addr, p->cfg.data); rtwdev 866 drivers/net/wireless/realtek/rtw88/phy.c static u8 tbl_to_dec_pwr_by_rate(struct rtw_dev *rtwdev, u32 hex, u8 i) rtwdev 868 drivers/net/wireless/realtek/rtw88/phy.c if (rtwdev->chip->is_pwr_by_rate_dec) rtwdev 875 drivers/net/wireless/realtek/rtw88/phy.c rtw_phy_get_rate_values_of_txpwr_by_rate(struct rtw_dev *rtwdev, rtwdev 889 drivers/net/wireless/realtek/rtw88/phy.c pwr_by_rate[i] = tbl_to_dec_pwr_by_rate(rtwdev, val, i); rtwdev 899 drivers/net/wireless/realtek/rtw88/phy.c pwr_by_rate[i] = tbl_to_dec_pwr_by_rate(rtwdev, val, i); rtwdev 914 drivers/net/wireless/realtek/rtw88/phy.c tbl_to_dec_pwr_by_rate(rtwdev, val, i); rtwdev 929 drivers/net/wireless/realtek/rtw88/phy.c pwr_by_rate[i] = tbl_to_dec_pwr_by_rate(rtwdev, val, i); rtwdev 939 drivers/net/wireless/realtek/rtw88/phy.c pwr_by_rate[i] = tbl_to_dec_pwr_by_rate(rtwdev, val, i); rtwdev 949 drivers/net/wireless/realtek/rtw88/phy.c pwr_by_rate[i] = tbl_to_dec_pwr_by_rate(rtwdev, val, i); rtwdev 959 drivers/net/wireless/realtek/rtw88/phy.c pwr_by_rate[i] = tbl_to_dec_pwr_by_rate(rtwdev, val, i); rtwdev 967 drivers/net/wireless/realtek/rtw88/phy.c pwr_by_rate[i - 1] = tbl_to_dec_pwr_by_rate(rtwdev, rtwdev 980 drivers/net/wireless/realtek/rtw88/phy.c pwr_by_rate[i] = tbl_to_dec_pwr_by_rate(rtwdev, val, i); rtwdev 992 drivers/net/wireless/realtek/rtw88/phy.c pwr_by_rate[i] = tbl_to_dec_pwr_by_rate(rtwdev, val, i); rtwdev 1004 drivers/net/wireless/realtek/rtw88/phy.c pwr_by_rate[i] = tbl_to_dec_pwr_by_rate(rtwdev, val, i); rtwdev 1016 drivers/net/wireless/realtek/rtw88/phy.c pwr_by_rate[i] = tbl_to_dec_pwr_by_rate(rtwdev, val, i); rtwdev 1028 drivers/net/wireless/realtek/rtw88/phy.c pwr_by_rate[i] = tbl_to_dec_pwr_by_rate(rtwdev, val, i); rtwdev 1040 drivers/net/wireless/realtek/rtw88/phy.c pwr_by_rate[i] = tbl_to_dec_pwr_by_rate(rtwdev, val, i); rtwdev 1052 drivers/net/wireless/realtek/rtw88/phy.c pwr_by_rate[i] = tbl_to_dec_pwr_by_rate(rtwdev, val, i); rtwdev 1064 drivers/net/wireless/realtek/rtw88/phy.c pwr_by_rate[i] = tbl_to_dec_pwr_by_rate(rtwdev, val, i); rtwdev 1076 drivers/net/wireless/realtek/rtw88/phy.c pwr_by_rate[i] = tbl_to_dec_pwr_by_rate(rtwdev, val, i); rtwdev 1088 drivers/net/wireless/realtek/rtw88/phy.c pwr_by_rate[i] = tbl_to_dec_pwr_by_rate(rtwdev, val, i); rtwdev 1100 drivers/net/wireless/realtek/rtw88/phy.c pwr_by_rate[i] = tbl_to_dec_pwr_by_rate(rtwdev, val, i); rtwdev 1112 drivers/net/wireless/realtek/rtw88/phy.c pwr_by_rate[i] = tbl_to_dec_pwr_by_rate(rtwdev, val, i); rtwdev 1124 drivers/net/wireless/realtek/rtw88/phy.c pwr_by_rate[i] = tbl_to_dec_pwr_by_rate(rtwdev, val, i); rtwdev 1136 drivers/net/wireless/realtek/rtw88/phy.c pwr_by_rate[i] = tbl_to_dec_pwr_by_rate(rtwdev, val, i); rtwdev 1148 drivers/net/wireless/realtek/rtw88/phy.c pwr_by_rate[i] = tbl_to_dec_pwr_by_rate(rtwdev, val, i); rtwdev 1160 drivers/net/wireless/realtek/rtw88/phy.c pwr_by_rate[i] = tbl_to_dec_pwr_by_rate(rtwdev, val, i); rtwdev 1170 drivers/net/wireless/realtek/rtw88/phy.c pwr_by_rate[i] = tbl_to_dec_pwr_by_rate(rtwdev, val, i); rtwdev 1174 drivers/net/wireless/realtek/rtw88/phy.c rtw_warn(rtwdev, "invalid tx power index addr 0x%08x\n", addr); rtwdev 1179 drivers/net/wireless/realtek/rtw88/phy.c static void rtw_phy_store_tx_power_by_rate(struct rtw_dev *rtwdev, rtwdev 1183 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 1191 drivers/net/wireless/realtek/rtw88/phy.c rtw_phy_get_rate_values_of_txpwr_by_rate(rtwdev, regaddr, bitmask, data, rtwdev 1211 drivers/net/wireless/realtek/rtw88/phy.c void rtw_parse_tbl_bb_pg(struct rtw_dev *rtwdev, const struct rtw_table *tbl) rtwdev 1223 drivers/net/wireless/realtek/rtw88/phy.c rtw_phy_store_tx_power_by_rate(rtwdev, p->band, p->rf_path, rtwdev 1261 drivers/net/wireless/realtek/rtw88/phy.c static void rtw_phy_set_tx_power_limit(struct rtw_dev *rtwdev, u8 regd, u8 band, rtwdev 1264 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 1265 drivers/net/wireless/realtek/rtw88/phy.c u8 max_power_index = rtwdev->chip->max_power_index; rtwdev 1296 drivers/net/wireless/realtek/rtw88/phy.c rtw_xref_5g_txpwr_lmt(struct rtw_dev *rtwdev, u8 regd, rtwdev 1299 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 1300 drivers/net/wireless/realtek/rtw88/phy.c u8 max_power_index = rtwdev->chip->max_power_index; rtwdev 1316 drivers/net/wireless/realtek/rtw88/phy.c rtw_xref_txpwr_lmt_by_rs(struct rtw_dev *rtwdev, u8 regd, u8 bw, u8 ch_idx) rtwdev 1326 drivers/net/wireless/realtek/rtw88/phy.c rtw_xref_5g_txpwr_lmt(rtwdev, regd, bw, ch_idx, rs_ht, rs_vht); rtwdev 1332 drivers/net/wireless/realtek/rtw88/phy.c rtw_xref_5g_txpwr_lmt_by_ch(struct rtw_dev *rtwdev, u8 regd, u8 bw) rtwdev 1337 drivers/net/wireless/realtek/rtw88/phy.c rtw_xref_txpwr_lmt_by_rs(rtwdev, regd, bw, ch_idx); rtwdev 1342 drivers/net/wireless/realtek/rtw88/phy.c rtw_xref_txpwr_lmt_by_bw(struct rtw_dev *rtwdev, u8 regd) rtwdev 1347 drivers/net/wireless/realtek/rtw88/phy.c rtw_xref_5g_txpwr_lmt_by_ch(rtwdev, regd, bw); rtwdev 1351 drivers/net/wireless/realtek/rtw88/phy.c static void rtw_xref_txpwr_lmt(struct rtw_dev *rtwdev) rtwdev 1356 drivers/net/wireless/realtek/rtw88/phy.c rtw_xref_txpwr_lmt_by_bw(rtwdev, regd); rtwdev 1359 drivers/net/wireless/realtek/rtw88/phy.c void rtw_parse_tbl_txpwr_lmt(struct rtw_dev *rtwdev, rtwdev 1366 drivers/net/wireless/realtek/rtw88/phy.c rtw_phy_set_tx_power_limit(rtwdev, p->regd, p->band, rtwdev 1370 drivers/net/wireless/realtek/rtw88/phy.c rtw_xref_txpwr_lmt(rtwdev); rtwdev 1373 drivers/net/wireless/realtek/rtw88/phy.c void rtw_phy_cfg_mac(struct rtw_dev *rtwdev, const struct rtw_table *tbl, rtwdev 1376 drivers/net/wireless/realtek/rtw88/phy.c rtw_write8(rtwdev, addr, data); rtwdev 1379 drivers/net/wireless/realtek/rtw88/phy.c void rtw_phy_cfg_agc(struct rtw_dev *rtwdev, const struct rtw_table *tbl, rtwdev 1382 drivers/net/wireless/realtek/rtw88/phy.c rtw_write32(rtwdev, addr, data); rtwdev 1385 drivers/net/wireless/realtek/rtw88/phy.c void rtw_phy_cfg_bb(struct rtw_dev *rtwdev, const struct rtw_table *tbl, rtwdev 1401 drivers/net/wireless/realtek/rtw88/phy.c rtw_write32(rtwdev, addr, data); rtwdev 1404 drivers/net/wireless/realtek/rtw88/phy.c void rtw_phy_cfg_rf(struct rtw_dev *rtwdev, const struct rtw_table *tbl, rtwdev 1412 drivers/net/wireless/realtek/rtw88/phy.c rtw_write_rf(rtwdev, tbl->rf_path, addr, RFREG_MASK, data); rtwdev 1417 drivers/net/wireless/realtek/rtw88/phy.c static void rtw_load_rfk_table(struct rtw_dev *rtwdev) rtwdev 1419 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 1420 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; rtwdev 1425 drivers/net/wireless/realtek/rtw88/phy.c rtw_write32_mask(rtwdev, 0x1e24, BIT(17), 0x1); rtwdev 1426 drivers/net/wireless/realtek/rtw88/phy.c rtw_write32_mask(rtwdev, 0x1cd0, BIT(28), 0x1); rtwdev 1427 drivers/net/wireless/realtek/rtw88/phy.c rtw_write32_mask(rtwdev, 0x1cd0, BIT(29), 0x1); rtwdev 1428 drivers/net/wireless/realtek/rtw88/phy.c rtw_write32_mask(rtwdev, 0x1cd0, BIT(30), 0x1); rtwdev 1429 drivers/net/wireless/realtek/rtw88/phy.c rtw_write32_mask(rtwdev, 0x1cd0, BIT(31), 0x0); rtwdev 1431 drivers/net/wireless/realtek/rtw88/phy.c rtw_load_table(rtwdev, chip->rfk_init_tbl); rtwdev 1436 drivers/net/wireless/realtek/rtw88/phy.c void rtw_phy_load_tables(struct rtw_dev *rtwdev) rtwdev 1438 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 1441 drivers/net/wireless/realtek/rtw88/phy.c rtw_load_table(rtwdev, chip->mac_tbl); rtwdev 1442 drivers/net/wireless/realtek/rtw88/phy.c rtw_load_table(rtwdev, chip->bb_tbl); rtwdev 1443 drivers/net/wireless/realtek/rtw88/phy.c rtw_load_table(rtwdev, chip->agc_tbl); rtwdev 1444 drivers/net/wireless/realtek/rtw88/phy.c rtw_load_rfk_table(rtwdev); rtwdev 1446 drivers/net/wireless/realtek/rtw88/phy.c for (rf_path = 0; rf_path < rtwdev->hal.rf_path_num; rf_path++) { rtwdev 1450 drivers/net/wireless/realtek/rtw88/phy.c rtw_load_table(rtwdev, tbl); rtwdev 1543 drivers/net/wireless/realtek/rtw88/phy.c static s8 rtw_phy_get_dis_dpd_by_rate_diff(struct rtw_dev *rtwdev, u16 rate) rtwdev 1545 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 1574 drivers/net/wireless/realtek/rtw88/phy.c static u8 rtw_phy_get_2g_tx_power_index(struct rtw_dev *rtwdev, rtwdev 1579 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 1621 drivers/net/wireless/realtek/rtw88/phy.c static u8 rtw_phy_get_5g_tx_power_index(struct rtw_dev *rtwdev, rtwdev 1626 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 1675 drivers/net/wireless/realtek/rtw88/phy.c static s8 rtw_phy_get_tx_power_limit(struct rtw_dev *rtwdev, u8 band, rtwdev 1679 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 1681 drivers/net/wireless/realtek/rtw88/phy.c s8 power_limit = (s8)rtwdev->chip->max_power_index; rtwdev 1733 drivers/net/wireless/realtek/rtw88/phy.c return (s8)rtwdev->chip->max_power_index; rtwdev 1736 drivers/net/wireless/realtek/rtw88/phy.c void rtw_get_tx_power_params(struct rtw_dev *rtwdev, u8 path, u8 rate, u8 bw, rtwdev 1739 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 1746 drivers/net/wireless/realtek/rtw88/phy.c pwr_idx = &rtwdev->efuse.txpwr_idx_table[path]; rtwdev 1752 drivers/net/wireless/realtek/rtw88/phy.c *base = rtw_phy_get_2g_tx_power_index(rtwdev, rtwdev 1758 drivers/net/wireless/realtek/rtw88/phy.c *base = rtw_phy_get_5g_tx_power_index(rtwdev, rtwdev 1764 drivers/net/wireless/realtek/rtw88/phy.c *limit = rtw_phy_get_tx_power_limit(rtwdev, band, bw, path, rtwdev 1769 drivers/net/wireless/realtek/rtw88/phy.c rtw_phy_get_tx_power_index(struct rtw_dev *rtwdev, u8 rf_path, u8 rate, rtwdev 1776 drivers/net/wireless/realtek/rtw88/phy.c rtw_get_tx_power_params(rtwdev, rf_path, rate, bandwidth, rtwdev 1782 drivers/net/wireless/realtek/rtw88/phy.c if (rtwdev->chip->en_dis_dpd) rtwdev 1783 drivers/net/wireless/realtek/rtw88/phy.c offset += rtw_phy_get_dis_dpd_by_rate_diff(rtwdev, rate); rtwdev 1787 drivers/net/wireless/realtek/rtw88/phy.c if (tx_power > rtwdev->chip->max_power_index) rtwdev 1788 drivers/net/wireless/realtek/rtw88/phy.c tx_power = rtwdev->chip->max_power_index; rtwdev 1793 drivers/net/wireless/realtek/rtw88/phy.c static void rtw_phy_set_tx_power_index_by_rs(struct rtw_dev *rtwdev, rtwdev 1796 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 1797 drivers/net/wireless/realtek/rtw88/phy.c u8 regd = rtwdev->regd.txpwr_regd; rtwdev 1813 drivers/net/wireless/realtek/rtw88/phy.c pwr_idx = rtw_phy_get_tx_power_index(rtwdev, path, rate, rtwdev 1824 drivers/net/wireless/realtek/rtw88/phy.c static void rtw_phy_set_tx_power_level_by_path(struct rtw_dev *rtwdev, rtwdev 1827 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 1837 drivers/net/wireless/realtek/rtw88/phy.c rtw_phy_set_tx_power_index_by_rs(rtwdev, ch, path, rs); rtwdev 1840 drivers/net/wireless/realtek/rtw88/phy.c void rtw_phy_set_tx_power_level(struct rtw_dev *rtwdev, u8 channel) rtwdev 1842 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 1843 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 1849 drivers/net/wireless/realtek/rtw88/phy.c rtw_phy_set_tx_power_level_by_path(rtwdev, channel, path); rtwdev 1851 drivers/net/wireless/realtek/rtw88/phy.c chip->ops->set_tx_power_index(rtwdev); rtwdev 1934 drivers/net/wireless/realtek/rtw88/phy.c static void rtw_phy_init_tx_power_limit(struct rtw_dev *rtwdev, rtwdev 1937 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 1938 drivers/net/wireless/realtek/rtw88/phy.c s8 max_power_index = (s8)rtwdev->chip->max_power_index; rtwdev 1950 drivers/net/wireless/realtek/rtw88/phy.c void rtw_phy_init_tx_power(struct rtw_dev *rtwdev) rtwdev 1952 drivers/net/wireless/realtek/rtw88/phy.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 1967 drivers/net/wireless/realtek/rtw88/phy.c rtw_phy_init_tx_power_limit(rtwdev, regd, bw, rtwdev 19 drivers/net/wireless/realtek/rtw88/phy.h void rtw_phy_init(struct rtw_dev *rtwdev); rtwdev 20 drivers/net/wireless/realtek/rtw88/phy.h void rtw_phy_dynamic_mechanism(struct rtw_dev *rtwdev); rtwdev 22 drivers/net/wireless/realtek/rtw88/phy.h u32 rtw_phy_read_rf(struct rtw_dev *rtwdev, enum rtw_rf_path rf_path, rtwdev 24 drivers/net/wireless/realtek/rtw88/phy.h bool rtw_phy_write_rf_reg_sipi(struct rtw_dev *rtwdev, enum rtw_rf_path rf_path, rtwdev 26 drivers/net/wireless/realtek/rtw88/phy.h bool rtw_phy_write_rf_reg(struct rtw_dev *rtwdev, enum rtw_rf_path rf_path, rtwdev 28 drivers/net/wireless/realtek/rtw88/phy.h bool rtw_phy_write_rf_reg_mix(struct rtw_dev *rtwdev, enum rtw_rf_path rf_path, rtwdev 30 drivers/net/wireless/realtek/rtw88/phy.h void rtw_phy_setup_phy_cond(struct rtw_dev *rtwdev, u32 pkg); rtwdev 31 drivers/net/wireless/realtek/rtw88/phy.h void rtw_parse_tbl_phy_cond(struct rtw_dev *rtwdev, const struct rtw_table *tbl); rtwdev 32 drivers/net/wireless/realtek/rtw88/phy.h void rtw_parse_tbl_bb_pg(struct rtw_dev *rtwdev, const struct rtw_table *tbl); rtwdev 33 drivers/net/wireless/realtek/rtw88/phy.h void rtw_parse_tbl_txpwr_lmt(struct rtw_dev *rtwdev, const struct rtw_table *tbl); rtwdev 34 drivers/net/wireless/realtek/rtw88/phy.h void rtw_phy_cfg_mac(struct rtw_dev *rtwdev, const struct rtw_table *tbl, rtwdev 36 drivers/net/wireless/realtek/rtw88/phy.h void rtw_phy_cfg_agc(struct rtw_dev *rtwdev, const struct rtw_table *tbl, rtwdev 38 drivers/net/wireless/realtek/rtw88/phy.h void rtw_phy_cfg_bb(struct rtw_dev *rtwdev, const struct rtw_table *tbl, rtwdev 40 drivers/net/wireless/realtek/rtw88/phy.h void rtw_phy_cfg_rf(struct rtw_dev *rtwdev, const struct rtw_table *tbl, rtwdev 42 drivers/net/wireless/realtek/rtw88/phy.h void rtw_phy_init_tx_power(struct rtw_dev *rtwdev); rtwdev 43 drivers/net/wireless/realtek/rtw88/phy.h void rtw_phy_load_tables(struct rtw_dev *rtwdev); rtwdev 44 drivers/net/wireless/realtek/rtw88/phy.h void rtw_phy_set_tx_power_level(struct rtw_dev *rtwdev, u8 channel); rtwdev 86 drivers/net/wireless/realtek/rtw88/phy.h static inline const struct rtw_rfe_def *rtw_get_rfe_def(struct rtw_dev *rtwdev) rtwdev 88 drivers/net/wireless/realtek/rtw88/phy.h struct rtw_chip_info *chip = rtwdev->chip; rtwdev 89 drivers/net/wireless/realtek/rtw88/phy.h struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 98 drivers/net/wireless/realtek/rtw88/phy.h rtw_dbg(rtwdev, RTW_DBG_PHY, "use rfe_def[%d]\n", efuse->rfe_option); rtwdev 102 drivers/net/wireless/realtek/rtw88/phy.h static inline int rtw_check_supported_rfe(struct rtw_dev *rtwdev) rtwdev 104 drivers/net/wireless/realtek/rtw88/phy.h const struct rtw_rfe_def *rfe_def = rtw_get_rfe_def(rtwdev); rtwdev 107 drivers/net/wireless/realtek/rtw88/phy.h rtw_err(rtwdev, "rfe %d isn't supported\n", rtwdev 108 drivers/net/wireless/realtek/rtw88/phy.h rtwdev->efuse.rfe_option); rtwdev 115 drivers/net/wireless/realtek/rtw88/phy.h void rtw_phy_dig_write(struct rtw_dev *rtwdev, u8 igi); rtwdev 124 drivers/net/wireless/realtek/rtw88/phy.h rtw_get_tx_power_params(struct rtw_dev *rtwdev, u8 path, rtwdev 12 drivers/net/wireless/realtek/rtw88/ps.c static int rtw_ips_pwr_up(struct rtw_dev *rtwdev) rtwdev 16 drivers/net/wireless/realtek/rtw88/ps.c ret = rtw_core_start(rtwdev); rtwdev 18 drivers/net/wireless/realtek/rtw88/ps.c rtw_err(rtwdev, "leave idle state failed\n"); rtwdev 20 drivers/net/wireless/realtek/rtw88/ps.c rtw_set_channel(rtwdev); rtwdev 21 drivers/net/wireless/realtek/rtw88/ps.c rtw_flag_clear(rtwdev, RTW_FLAG_INACTIVE_PS); rtwdev 26 drivers/net/wireless/realtek/rtw88/ps.c int rtw_enter_ips(struct rtw_dev *rtwdev) rtwdev 28 drivers/net/wireless/realtek/rtw88/ps.c rtw_flag_set(rtwdev, RTW_FLAG_INACTIVE_PS); rtwdev 30 drivers/net/wireless/realtek/rtw88/ps.c rtw_coex_ips_notify(rtwdev, COEX_IPS_ENTER); rtwdev 32 drivers/net/wireless/realtek/rtw88/ps.c rtw_core_stop(rtwdev); rtwdev 40 drivers/net/wireless/realtek/rtw88/ps.c struct rtw_dev *rtwdev = data; rtwdev 44 drivers/net/wireless/realtek/rtw88/ps.c rtw_vif_port_config(rtwdev, rtwvif, config); rtwdev 47 drivers/net/wireless/realtek/rtw88/ps.c int rtw_leave_ips(struct rtw_dev *rtwdev) rtwdev 51 drivers/net/wireless/realtek/rtw88/ps.c ret = rtw_ips_pwr_up(rtwdev); rtwdev 53 drivers/net/wireless/realtek/rtw88/ps.c rtw_err(rtwdev, "failed to leave ips state\n"); rtwdev 57 drivers/net/wireless/realtek/rtw88/ps.c rtw_iterate_vifs_atomic(rtwdev, rtw_restore_port_cfg_iter, rtwdev); rtwdev 59 drivers/net/wireless/realtek/rtw88/ps.c rtw_coex_ips_notify(rtwdev, COEX_IPS_LEAVE); rtwdev 64 drivers/net/wireless/realtek/rtw88/ps.c static void rtw_leave_lps_core(struct rtw_dev *rtwdev) rtwdev 66 drivers/net/wireless/realtek/rtw88/ps.c struct rtw_lps_conf *conf = &rtwdev->lps_conf; rtwdev 73 drivers/net/wireless/realtek/rtw88/ps.c rtw_fw_set_pwr_mode(rtwdev); rtwdev 74 drivers/net/wireless/realtek/rtw88/ps.c rtw_flag_clear(rtwdev, RTW_FLAG_LEISURE_PS); rtwdev 76 drivers/net/wireless/realtek/rtw88/ps.c rtw_coex_lps_notify(rtwdev, COEX_LPS_DISABLE); rtwdev 79 drivers/net/wireless/realtek/rtw88/ps.c static void rtw_enter_lps_core(struct rtw_dev *rtwdev) rtwdev 81 drivers/net/wireless/realtek/rtw88/ps.c struct rtw_lps_conf *conf = &rtwdev->lps_conf; rtwdev 88 drivers/net/wireless/realtek/rtw88/ps.c rtw_coex_lps_notify(rtwdev, COEX_LPS_ENABLE); rtwdev 90 drivers/net/wireless/realtek/rtw88/ps.c rtw_fw_set_pwr_mode(rtwdev); rtwdev 91 drivers/net/wireless/realtek/rtw88/ps.c rtw_flag_set(rtwdev, RTW_FLAG_LEISURE_PS); rtwdev 96 drivers/net/wireless/realtek/rtw88/ps.c struct rtw_dev *rtwdev = container_of(work, struct rtw_dev, rtwdev 98 drivers/net/wireless/realtek/rtw88/ps.c struct rtw_lps_conf *conf = &rtwdev->lps_conf; rtwdev 105 drivers/net/wireless/realtek/rtw88/ps.c rtw_enter_lps_core(rtwdev); rtwdev 107 drivers/net/wireless/realtek/rtw88/ps.c rtw_leave_lps_core(rtwdev); rtwdev 110 drivers/net/wireless/realtek/rtw88/ps.c void rtw_enter_lps_irqsafe(struct rtw_dev *rtwdev, struct rtw_vif *rtwvif) rtwdev 112 drivers/net/wireless/realtek/rtw88/ps.c struct rtw_lps_conf *conf = &rtwdev->lps_conf; rtwdev 121 drivers/net/wireless/realtek/rtw88/ps.c ieee80211_queue_delayed_work(rtwdev->hw, &rtwdev->lps_work, 0); rtwdev 124 drivers/net/wireless/realtek/rtw88/ps.c void rtw_leave_lps_irqsafe(struct rtw_dev *rtwdev, struct rtw_vif *rtwvif) rtwdev 126 drivers/net/wireless/realtek/rtw88/ps.c struct rtw_lps_conf *conf = &rtwdev->lps_conf; rtwdev 135 drivers/net/wireless/realtek/rtw88/ps.c ieee80211_queue_delayed_work(rtwdev->hw, &rtwdev->lps_work, 0); rtwdev 138 drivers/net/wireless/realtek/rtw88/ps.c bool rtw_in_lps(struct rtw_dev *rtwdev) rtwdev 140 drivers/net/wireless/realtek/rtw88/ps.c return rtw_flag_check(rtwdev, RTW_FLAG_LEISURE_PS); rtwdev 143 drivers/net/wireless/realtek/rtw88/ps.c void rtw_enter_lps(struct rtw_dev *rtwdev, struct rtw_vif *rtwvif) rtwdev 145 drivers/net/wireless/realtek/rtw88/ps.c struct rtw_lps_conf *conf = &rtwdev->lps_conf; rtwdev 157 drivers/net/wireless/realtek/rtw88/ps.c rtw_enter_lps_core(rtwdev); rtwdev 160 drivers/net/wireless/realtek/rtw88/ps.c void rtw_leave_lps(struct rtw_dev *rtwdev, struct rtw_vif *rtwvif) rtwdev 162 drivers/net/wireless/realtek/rtw88/ps.c struct rtw_lps_conf *conf = &rtwdev->lps_conf; rtwdev 174 drivers/net/wireless/realtek/rtw88/ps.c rtw_leave_lps_core(rtwdev); rtwdev 10 drivers/net/wireless/realtek/rtw88/ps.h int rtw_enter_ips(struct rtw_dev *rtwdev); rtwdev 11 drivers/net/wireless/realtek/rtw88/ps.h int rtw_leave_ips(struct rtw_dev *rtwdev); rtwdev 14 drivers/net/wireless/realtek/rtw88/ps.h void rtw_enter_lps_irqsafe(struct rtw_dev *rtwdev, struct rtw_vif *rtwvif); rtwdev 15 drivers/net/wireless/realtek/rtw88/ps.h void rtw_leave_lps_irqsafe(struct rtw_dev *rtwdev, struct rtw_vif *rtwvif); rtwdev 16 drivers/net/wireless/realtek/rtw88/ps.h void rtw_enter_lps(struct rtw_dev *rtwdev, struct rtw_vif *rtwvif); rtwdev 17 drivers/net/wireless/realtek/rtw88/ps.h void rtw_leave_lps(struct rtw_dev *rtwdev, struct rtw_vif *rtwvif); rtwdev 18 drivers/net/wireless/realtek/rtw88/ps.h bool rtw_in_lps(struct rtw_dev *rtwdev); rtwdev 297 drivers/net/wireless/realtek/rtw88/regd.c struct rtw_dev *rtwdev = hw->priv; rtwdev 298 drivers/net/wireless/realtek/rtw88/regd.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 342 drivers/net/wireless/realtek/rtw88/regd.c static int rtw_regd_notifier_apply(struct rtw_dev *rtwdev, rtwdev 348 drivers/net/wireless/realtek/rtw88/regd.c rtwdev->regd = rtw_regd_find_reg_by_name(request->alpha2); rtwdev 370 drivers/net/wireless/realtek/rtw88/regd.c int rtw_regd_init(struct rtw_dev *rtwdev, rtwdev 374 drivers/net/wireless/realtek/rtw88/regd.c struct wiphy *wiphy = rtwdev->hw->wiphy; rtwdev 379 drivers/net/wireless/realtek/rtw88/regd.c rtwdev->regd = rtw_regd_find_reg_by_name(rtwdev->efuse.country_code); rtwdev 380 drivers/net/wireless/realtek/rtw88/regd.c rtw_regd_init_wiphy(&rtwdev->regd, wiphy, reg_notifier); rtwdev 388 drivers/net/wireless/realtek/rtw88/regd.c struct rtw_dev *rtwdev = hw->priv; rtwdev 389 drivers/net/wireless/realtek/rtw88/regd.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 391 drivers/net/wireless/realtek/rtw88/regd.c rtw_regd_notifier_apply(rtwdev, wiphy, request); rtwdev 392 drivers/net/wireless/realtek/rtw88/regd.c rtw_dbg(rtwdev, RTW_DBG_REGD, rtwdev 395 drivers/net/wireless/realtek/rtw88/regd.c rtwdev->regd.chplan, rtwdev->regd.txpwr_regd); rtwdev 397 drivers/net/wireless/realtek/rtw88/regd.c rtw_phy_set_tx_power_level(rtwdev, hal->current_channel); rtwdev 67 drivers/net/wireless/realtek/rtw88/regd.h int rtw_regd_init(struct rtw_dev *rtwdev, rtwdev 17 drivers/net/wireless/realtek/rtw88/rtw8822b.c static void rtw8822b_config_trx_mode(struct rtw_dev *rtwdev, u8 tx_path, rtwdev 26 drivers/net/wireless/realtek/rtw88/rtw8822b.c static int rtw8822b_read_efuse(struct rtw_dev *rtwdev, u8 *log_map) rtwdev 28 drivers/net/wireless/realtek/rtw88/rtw8822b.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 50 drivers/net/wireless/realtek/rtw88/rtw8822b.c switch (rtw_hci_type(rtwdev)) { rtwdev 62 drivers/net/wireless/realtek/rtw88/rtw8822b.c static void rtw8822b_phy_rfe_init(struct rtw_dev *rtwdev) rtwdev 65 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, 0x64, BIT(29) | BIT(28), 0x3); rtwdev 66 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, 0x4c, BIT(26) | BIT(25), 0x0); rtwdev 67 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, 0x40, BIT(2), 0x1); rtwdev 70 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, 0x1990, 0x3f, 0x30); rtwdev 71 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, 0x1990, (BIT(11) | BIT(10)), 0x3); rtwdev 74 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, 0x974, 0x3f, 0x3f); rtwdev 75 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, 0x974, (BIT(11) | BIT(10)), 0x3); rtwdev 78 drivers/net/wireless/realtek/rtw88/rtw8822b.c static void rtw8822b_phy_set_param(struct rtw_dev *rtwdev) rtwdev 80 drivers/net/wireless/realtek/rtw88/rtw8822b.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 85 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_set(rtwdev, REG_SYS_FUNC_EN, rtwdev 87 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_set(rtwdev, REG_RF_CTRL, rtwdev 89 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_set(rtwdev, REG_WLRF1, BIT_WLRF1_BBRF_EN); rtwdev 92 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_clr(rtwdev, REG_RXPSEL, BIT_RX_PSEL_RST); rtwdev 94 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_phy_load_tables(rtwdev); rtwdev 96 drivers/net/wireless/realtek/rtw88/rtw8822b.c crystal_cap = rtwdev->efuse.crystal_cap & 0x3F; rtwdev 97 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, 0x24, 0x7e000000, crystal_cap); rtwdev 98 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, 0x28, 0x7e, crystal_cap); rtwdev 101 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_set(rtwdev, REG_RXPSEL, BIT_RX_PSEL_RST); rtwdev 104 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw8822b_config_trx_mode(rtwdev, hal->antenna_tx, hal->antenna_rx, rtwdev 106 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_phy_init(rtwdev); rtwdev 108 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw8822b_phy_rfe_init(rtwdev); rtwdev 163 drivers/net/wireless/realtek/rtw88/rtw8822b.c static int rtw8822b_mac_init(struct rtw_dev *rtwdev) rtwdev 168 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_clr(rtwdev, REG_SW_AMPDU_BURST_MODE_CTRL, BIT_PRE_TX_CMD); rtwdev 169 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8(rtwdev, REG_AMPDU_MAX_TIME_V1, WLAN_AMPDU_MAX_TIME); rtwdev 170 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_set(rtwdev, REG_TX_HANG_CTRL, BIT_EN_EOF_V1); rtwdev 174 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32(rtwdev, REG_PROT_MODE_CTRL, value32); rtwdev 175 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write16(rtwdev, REG_BAR_MODE_CTRL + 2, rtwdev 177 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8(rtwdev, REG_FAST_EDCA_VOVI_SETTING, FAST_EDCA_VO_TH); rtwdev 178 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8(rtwdev, REG_FAST_EDCA_VOVI_SETTING + 2, FAST_EDCA_VI_TH); rtwdev 179 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8(rtwdev, REG_FAST_EDCA_BEBK_SETTING, FAST_EDCA_BE_TH); rtwdev 180 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8(rtwdev, REG_FAST_EDCA_BEBK_SETTING + 2, FAST_EDCA_BK_TH); rtwdev 182 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_clr(rtwdev, REG_TIMER0_SRC_SEL, BIT_TSFT_SEL_TIMER0); rtwdev 183 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write16(rtwdev, REG_TXPAUSE, 0x0000); rtwdev 184 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8(rtwdev, REG_SLOT, WLAN_SLOT_TIME); rtwdev 185 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8(rtwdev, REG_PIFS, WLAN_PIFS_TIME); rtwdev 186 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32(rtwdev, REG_SIFS, WLAN_SIFS_CFG); rtwdev 187 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write16(rtwdev, REG_EDCA_VO_PARAM + 2, WLAN_VO_TXOP_LIMIT); rtwdev 188 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write16(rtwdev, REG_EDCA_VI_PARAM + 2, WLAN_VI_TXOP_LIMIT); rtwdev 189 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32(rtwdev, REG_RD_NAV_NXT, WLAN_NAV_CFG); rtwdev 190 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write16(rtwdev, REG_RXTSF_OFFSET_CCK, WLAN_RX_TSF_CFG); rtwdev 192 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_set(rtwdev, REG_BCN_CTRL, BIT_EN_BCN_FUNCTION); rtwdev 194 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32(rtwdev, REG_TBTT_PROHIBIT, WLAN_TBTT_TIME); rtwdev 195 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8(rtwdev, REG_DRVERLYINT, WLAN_DRV_EARLY_INT); rtwdev 196 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8(rtwdev, REG_BCNDMATIM, WLAN_BCN_DMA_TIME); rtwdev 197 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_clr(rtwdev, REG_TX_PTCL_CTRL + 1, BIT_SIFS_BK_EN >> 8); rtwdev 199 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32(rtwdev, REG_RXFLTMAP0, WLAN_RX_FILTER0); rtwdev 200 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write16(rtwdev, REG_RXFLTMAP2, WLAN_RX_FILTER2); rtwdev 201 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32(rtwdev, REG_RCR, WLAN_RCR_CFG); rtwdev 202 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8(rtwdev, REG_RX_PKT_LIMIT, WLAN_RXPKT_MAX_SZ_512); rtwdev 203 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8(rtwdev, REG_TCR + 2, WLAN_TX_FUNC_CFG2); rtwdev 204 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8(rtwdev, REG_TCR + 1, WLAN_TX_FUNC_CFG1); rtwdev 205 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32(rtwdev, REG_WMAC_OPTION_FUNCTION + 8, WLAN_MAC_OPT_FUNC2); rtwdev 206 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8(rtwdev, REG_WMAC_OPTION_FUNCTION + 4, WLAN_MAC_OPT_NORM_FUNC1); rtwdev 211 drivers/net/wireless/realtek/rtw88/rtw8822b.c static void rtw8822b_set_channel_rfe_efem(struct rtw_dev *rtwdev, u8 channel) rtwdev 213 drivers/net/wireless/realtek/rtw88/rtw8822b.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 217 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32s_mask(rtwdev, REG_RFESEL0, 0xffffff, 0x705770); rtwdev 218 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32s_mask(rtwdev, REG_RFESEL8, MASKBYTE1, 0x57); rtwdev 219 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32s_mask(rtwdev, REG_RFECTL, BIT(4), 0); rtwdev 221 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32s_mask(rtwdev, REG_RFESEL0, 0xffffff, 0x177517); rtwdev 222 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32s_mask(rtwdev, REG_RFESEL8, MASKBYTE1, 0x75); rtwdev 223 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32s_mask(rtwdev, REG_RFECTL, BIT(5), 0); rtwdev 226 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32s_mask(rtwdev, REG_RFEINV, BIT(11) | BIT(10) | 0x3f, 0x0); rtwdev 231 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32s_mask(rtwdev, REG_TRSW, MASKLWORD, 0xa501); rtwdev 234 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32s_mask(rtwdev, REG_TRSW, MASKLWORD, 0xa500); rtwdev 237 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32s_mask(rtwdev, REG_TRSW, MASKLWORD, 0xa005); rtwdev 241 drivers/net/wireless/realtek/rtw88/rtw8822b.c static void rtw8822b_set_channel_rfe_ifem(struct rtw_dev *rtwdev, u8 channel) rtwdev 243 drivers/net/wireless/realtek/rtw88/rtw8822b.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 248 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32s_mask(rtwdev, REG_RFESEL0, 0xffffff, 0x745774); rtwdev 249 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32s_mask(rtwdev, REG_RFESEL8, MASKBYTE1, 0x57); rtwdev 252 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32s_mask(rtwdev, REG_RFESEL0, 0xffffff, 0x477547); rtwdev 253 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32s_mask(rtwdev, REG_RFESEL8, MASKBYTE1, 0x75); rtwdev 256 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32s_mask(rtwdev, REG_RFEINV, BIT(11) | BIT(10) | 0x3f, 0x0); rtwdev 262 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32s_mask(rtwdev, REG_TRSW, MASKLWORD, 0xa501); rtwdev 265 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32s_mask(rtwdev, REG_TRSW, MASKLWORD, 0xa500); rtwdev 268 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32s_mask(rtwdev, REG_TRSW, MASKLWORD, 0xa005); rtwdev 271 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32s_mask(rtwdev, REG_TRSW, MASKLWORD, 0xa5a5); rtwdev 320 drivers/net/wireless/realtek/rtw88/rtw8822b.c void (*rtw_set_channel_rfe)(struct rtw_dev *rtwdev, u8 channel); rtwdev 343 drivers/net/wireless/realtek/rtw88/rtw8822b.c static void rtw8822b_set_channel_cca(struct rtw_dev *rtwdev, u8 channel, u8 bw, rtwdev 346 drivers/net/wireless/realtek/rtw88/rtw8822b.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 347 drivers/net/wireless/realtek/rtw88/rtw8822b.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 401 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_CCASEL, MASKDWORD, reg82c); rtwdev 402 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_PDMFTH, MASKDWORD, reg830); rtwdev 403 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_CCA2ND, MASKDWORD, reg838); rtwdev 406 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_L1WT, MASKDWORD, 0x9194b2b9); rtwdev 411 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_CCA2ND, 0xf0, 0x4); rtwdev 422 drivers/net/wireless/realtek/rtw88/rtw8822b.c static void rtw8822b_set_channel_rf(struct rtw_dev *rtwdev, u8 channel, u8 bw) rtwdev 437 drivers/net/wireless/realtek/rtw88/rtw8822b.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 440 drivers/net/wireless/realtek/rtw88/rtw8822b.c rf_reg18 = rtw_read_rf(rtwdev, RF_PATH_A, 0x18, RFREG_MASK); rtwdev 478 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write_rf(rtwdev, RF_PATH_A, RF_MALSEL, RFBE_MASK, rf_reg_be); rtwdev 482 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTDBG, BIT(18), 0x1); rtwdev 484 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTDBG, BIT(18), 0x0); rtwdev 486 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write_rf(rtwdev, RF_PATH_A, 0x18, RFREG_MASK, rf_reg18); rtwdev 488 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write_rf(rtwdev, RF_PATH_B, 0x18, RFREG_MASK, rf_reg18); rtwdev 490 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write_rf(rtwdev, RF_PATH_A, RF_XTALX2, BIT(19), 0); rtwdev 491 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write_rf(rtwdev, RF_PATH_A, RF_XTALX2, BIT(19), 1); rtwdev 499 drivers/net/wireless/realtek/rtw88/rtw8822b.c static void rtw8822b_toggle_igi(struct rtw_dev *rtwdev) rtwdev 501 drivers/net/wireless/realtek/rtw88/rtw8822b.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 504 drivers/net/wireless/realtek/rtw88/rtw8822b.c igi = rtw_read32_mask(rtwdev, REG_RXIGI_A, 0x7f); rtwdev 505 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_RXIGI_A, 0x7f, igi - 2); rtwdev 506 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_RXIGI_A, 0x7f, igi); rtwdev 507 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_RXIGI_B, 0x7f, igi - 2); rtwdev 508 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_RXIGI_B, 0x7f, igi); rtwdev 510 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_RXPSEL, MASKBYTE0, 0x0); rtwdev 511 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_RXPSEL, MASKBYTE0, rtwdev 515 drivers/net/wireless/realtek/rtw88/rtw8822b.c static void rtw8822b_set_channel_rxdfir(struct rtw_dev *rtwdev, u8 bw) rtwdev 519 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ACBB0, BIT(29) | BIT(28), 0x1); rtwdev 520 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ACBBRXFIR, BIT(29) | BIT(28), 0x0); rtwdev 521 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32s_mask(rtwdev, REG_TXDFIR, BIT(31), 0x0); rtwdev 524 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ACBB0, BIT(29) | BIT(28), 0x2); rtwdev 525 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ACBBRXFIR, BIT(29) | BIT(28), 0x1); rtwdev 526 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32s_mask(rtwdev, REG_TXDFIR, BIT(31), 0x0); rtwdev 529 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ACBB0, BIT(29) | BIT(28), 0x2); rtwdev 530 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ACBBRXFIR, BIT(29) | BIT(28), 0x2); rtwdev 531 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32s_mask(rtwdev, REG_TXDFIR, BIT(31), 0x1); rtwdev 535 drivers/net/wireless/realtek/rtw88/rtw8822b.c static void rtw8822b_set_channel_bb(struct rtw_dev *rtwdev, u8 channel, u8 bw, rtwdev 538 drivers/net/wireless/realtek/rtw88/rtw8822b.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 543 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_RXPSEL, BIT(28), 0x1); rtwdev 544 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_CCK_CHECK, BIT(7), 0x0); rtwdev 545 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ENTXCCK, BIT(18), 0x0); rtwdev 546 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_RXCCAMSK, 0x0000FC00, 15); rtwdev 548 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ACGG2TBL, 0x1f, 0x0); rtwdev 549 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_CLKTRK, 0x1ffe0000, 0x96a); rtwdev 551 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_TXSF2, MASKDWORD, 0x00006577); rtwdev 552 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_TXSF6, MASKLWORD, 0x0000); rtwdev 554 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_TXSF2, MASKDWORD, 0x384f6577); rtwdev 555 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_TXSF6, MASKLWORD, 0x1525); rtwdev 558 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_RFEINV, 0x300, 0x2); rtwdev 560 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ENTXCCK, BIT(18), 0x1); rtwdev 561 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_CCK_CHECK, BIT(7), 0x1); rtwdev 562 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_RXPSEL, BIT(28), 0x0); rtwdev 563 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_RXCCAMSK, 0x0000FC00, 34); rtwdev 566 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ACGG2TBL, 0x1f, 0x1); rtwdev 568 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ACGG2TBL, 0x1f, 0x2); rtwdev 570 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ACGG2TBL, 0x1f, 0x3); rtwdev 573 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_CLKTRK, 0x1ffe0000, 0x494); rtwdev 575 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_CLKTRK, 0x1ffe0000, 0x453); rtwdev 577 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_CLKTRK, 0x1ffe0000, 0x452); rtwdev 579 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_CLKTRK, 0x1ffe0000, 0x412); rtwdev 581 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, 0xcbc, 0x300, 0x1); rtwdev 587 drivers/net/wireless/realtek/rtw88/rtw8822b.c val32 = rtw_read32_mask(rtwdev, REG_ADCCLK, MASKDWORD); rtwdev 590 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ADCCLK, MASKDWORD, val32); rtwdev 592 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ADC160, BIT(30), 0x1); rtwdev 596 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_set(rtwdev, REG_RXSB, BIT(4)); rtwdev 598 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_clr(rtwdev, REG_RXSB, BIT(4)); rtwdev 600 drivers/net/wireless/realtek/rtw88/rtw8822b.c val32 = rtw_read32_mask(rtwdev, REG_ADCCLK, MASKDWORD); rtwdev 603 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ADCCLK, MASKDWORD, val32); rtwdev 605 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ADC160, BIT(30), 0x1); rtwdev 608 drivers/net/wireless/realtek/rtw88/rtw8822b.c val32 = rtw_read32_mask(rtwdev, REG_ADCCLK, MASKDWORD); rtwdev 611 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ADCCLK, MASKDWORD, val32); rtwdev 613 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ADC160, BIT(30), 0x1); rtwdev 616 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_L1PKWT, 0x0000f000, 0x6); rtwdev 617 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ADC40, BIT(10), 0x1); rtwdev 621 drivers/net/wireless/realtek/rtw88/rtw8822b.c val32 = rtw_read32_mask(rtwdev, REG_ADCCLK, MASKDWORD); rtwdev 624 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ADCCLK, MASKDWORD, val32); rtwdev 626 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ADC160, BIT(30), 0x0); rtwdev 627 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ADC40, BIT(31), 0x1); rtwdev 630 drivers/net/wireless/realtek/rtw88/rtw8822b.c val32 = rtw_read32_mask(rtwdev, REG_ADCCLK, MASKDWORD); rtwdev 633 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ADCCLK, MASKDWORD, val32); rtwdev 635 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ADC160, BIT(30), 0x0); rtwdev 636 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ADC40, BIT(31), 0x1); rtwdev 641 drivers/net/wireless/realtek/rtw88/rtw8822b.c static void rtw8822b_set_channel(struct rtw_dev *rtwdev, u8 channel, u8 bw, rtwdev 644 drivers/net/wireless/realtek/rtw88/rtw8822b.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 653 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw8822b_set_channel_bb(rtwdev, channel, bw, primary_chan_idx); rtwdev 654 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_set_channel_mac(rtwdev, channel, bw, primary_chan_idx); rtwdev 655 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw8822b_set_channel_rf(rtwdev, channel, bw); rtwdev 656 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw8822b_set_channel_rxdfir(rtwdev, bw); rtwdev 657 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw8822b_toggle_igi(rtwdev); rtwdev 658 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw8822b_set_channel_cca(rtwdev, channel, bw, rfe_info); rtwdev 659 drivers/net/wireless/realtek/rtw88/rtw8822b.c (*rfe_info->rtw_set_channel_rfe)(rtwdev, channel); rtwdev 662 drivers/net/wireless/realtek/rtw88/rtw8822b.c static void rtw8822b_config_trx_mode(struct rtw_dev *rtwdev, u8 tx_path, rtwdev 665 drivers/net/wireless/realtek/rtw88/rtw8822b.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 667 drivers/net/wireless/realtek/rtw88/rtw8822b.c u8 ch = rtwdev->hal.current_channel; rtwdev 678 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_AGCTR_A, MASKLWORD, 0x3231); rtwdev 680 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_AGCTR_A, MASKLWORD, 0x1111); rtwdev 683 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_AGCTR_B, MASKLWORD, 0x3231); rtwdev 685 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_AGCTR_B, MASKLWORD, 0x1111); rtwdev 687 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_CDDTXP, (BIT(19) | BIT(18)), 0x3); rtwdev 688 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_TXPSEL, (BIT(29) | BIT(28)), 0x1); rtwdev 689 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_TXPSEL, BIT(30), 0x1); rtwdev 692 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_CDDTXP, 0xfff00000, 0x001); rtwdev 693 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ADCINI, 0xf0000000, 0x8); rtwdev 695 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_CDDTXP, 0xfff00000, 0x002); rtwdev 696 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ADCINI, 0xf0000000, 0x4); rtwdev 700 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_TXPSEL1, 0xfff0, 0x01); rtwdev 702 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_TXPSEL1, 0xfff0, 0x43); rtwdev 705 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_TXPSEL, MASKBYTE0, tx_path_sel); rtwdev 708 drivers/net/wireless/realtek/rtw88/rtw8822b.c if (is_tx2_path || rtwdev->mp_mode) { rtwdev 709 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_CDDTXP, 0xfff00000, 0x043); rtwdev 710 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ADCINI, 0xf0000000, 0xc); rtwdev 714 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_RXDESC, BIT(22), 0x0); rtwdev 715 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_RXDESC, BIT(18), 0x0); rtwdev 718 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ADCINI, 0x0f000000, 0x0); rtwdev 720 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ADCINI, 0x0f000000, 0x5); rtwdev 723 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_RXPSEL, MASKBYTE0, rx_path_sel); rtwdev 726 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ANTWT, BIT(16), 0x0); rtwdev 727 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_HTSTFWT, BIT(28), 0x0); rtwdev 728 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_MRC, BIT(23), 0x0); rtwdev 730 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_ANTWT, BIT(16), 0x1); rtwdev 731 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_HTSTFWT, BIT(28), 0x1); rtwdev 732 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_mask(rtwdev, REG_MRC, BIT(23), 0x1); rtwdev 738 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTWE, RFREG_MASK, 0x80000); rtwdev 739 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTWA, RFREG_MASK, 0x00001); rtwdev 742 drivers/net/wireless/realtek/rtw88/rtw8822b.c rf_reg33 = rtw_read_rf(rtwdev, RF_PATH_A, 0x33, RFREG_MASK); rtwdev 751 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTWE, RFREG_MASK, 0x80000); rtwdev 752 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTWA, RFREG_MASK, 0x00001); rtwdev 753 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTWD1, RFREG_MASK, 0x00034); rtwdev 754 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTWD0, RFREG_MASK, 0x4080c); rtwdev 755 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTWE, RFREG_MASK, 0x00000); rtwdev 756 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTWE, RFREG_MASK, 0x00000); rtwdev 758 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw8822b_toggle_igi(rtwdev); rtwdev 759 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw8822b_set_channel_cca(rtwdev, 1, RTW_CHANNEL_WIDTH_20, rfe_info); rtwdev 760 drivers/net/wireless/realtek/rtw88/rtw8822b.c (*rfe_info->rtw_set_channel_rfe)(rtwdev, ch); rtwdev 763 drivers/net/wireless/realtek/rtw88/rtw8822b.c static void query_phy_status_page0(struct rtw_dev *rtwdev, u8 *phy_status, rtwdev 777 drivers/net/wireless/realtek/rtw88/rtw8822b.c static void query_phy_status_page1(struct rtw_dev *rtwdev, u8 *phy_status, rtwdev 806 drivers/net/wireless/realtek/rtw88/rtw8822b.c static void query_phy_status(struct rtw_dev *rtwdev, u8 *phy_status, rtwdev 815 drivers/net/wireless/realtek/rtw88/rtw8822b.c query_phy_status_page0(rtwdev, phy_status, pkt_stat); rtwdev 818 drivers/net/wireless/realtek/rtw88/rtw8822b.c query_phy_status_page1(rtwdev, phy_status, pkt_stat); rtwdev 821 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_warn(rtwdev, "unused phy status page (%d)\n", page); rtwdev 826 drivers/net/wireless/realtek/rtw88/rtw8822b.c static void rtw8822b_query_rx_desc(struct rtw_dev *rtwdev, u8 *rx_desc, rtwdev 831 drivers/net/wireless/realtek/rtw88/rtw8822b.c u32 desc_sz = rtwdev->chip->rx_pkt_desc_sz; rtwdev 860 drivers/net/wireless/realtek/rtw88/rtw8822b.c query_phy_status(rtwdev, phy_status, pkt_stat); rtwdev 863 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_rx_fill_rx_status(rtwdev, pkt_stat, hdr, rx_status, phy_status); rtwdev 867 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw8822b_set_tx_power_index_by_rate(struct rtw_dev *rtwdev, u8 path, u8 rs) rtwdev 869 drivers/net/wireless/realtek/rtw88/rtw8822b.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 882 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32(rtwdev, offset_txagc[path] + rate_idx, rtwdev 889 drivers/net/wireless/realtek/rtw88/rtw8822b.c static void rtw8822b_set_tx_power_index(struct rtw_dev *rtwdev) rtwdev 891 drivers/net/wireless/realtek/rtw88/rtw8822b.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 896 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw8822b_set_tx_power_index_by_rate(rtwdev, path, rs); rtwdev 912 drivers/net/wireless/realtek/rtw88/rtw8822b.c static void rtw8822b_set_antenna(struct rtw_dev *rtwdev, u8 antenna_tx, rtwdev 915 drivers/net/wireless/realtek/rtw88/rtw8822b.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 917 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_dbg(rtwdev, RTW_DBG_PHY, "config RF path, tx=0x%x rx=0x%x\n", rtwdev 921 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_info(rtwdev, "unsupport tx path, set to default path ab\n"); rtwdev 925 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_info(rtwdev, "unsupport rx path, set to default path ab\n"); rtwdev 930 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw8822b_config_trx_mode(rtwdev, antenna_tx, antenna_rx, false); rtwdev 933 drivers/net/wireless/realtek/rtw88/rtw8822b.c static void rtw8822b_cfg_ldo25(struct rtw_dev *rtwdev, bool enable) rtwdev 937 drivers/net/wireless/realtek/rtw88/rtw8822b.c ldo_pwr = rtw_read8(rtwdev, REG_LDO_EFUSE_CTRL + 3); rtwdev 939 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8(rtwdev, REG_LDO_EFUSE_CTRL + 3, ldo_pwr); rtwdev 942 drivers/net/wireless/realtek/rtw88/rtw8822b.c static void rtw8822b_false_alarm_statistics(struct rtw_dev *rtwdev) rtwdev 944 drivers/net/wireless/realtek/rtw88/rtw8822b.c struct rtw_dm_info *dm_info = &rtwdev->dm_info; rtwdev 950 drivers/net/wireless/realtek/rtw88/rtw8822b.c cck_enable = rtw_read32(rtwdev, 0x808) & BIT(28); rtwdev 951 drivers/net/wireless/realtek/rtw88/rtw8822b.c cck_fa_cnt = rtw_read16(rtwdev, 0xa5c); rtwdev 952 drivers/net/wireless/realtek/rtw88/rtw8822b.c ofdm_fa_cnt = rtw_read16(rtwdev, 0xf48); rtwdev 959 drivers/net/wireless/realtek/rtw88/rtw8822b.c crc32_cnt = rtw_read32(rtwdev, 0xf04); rtwdev 962 drivers/net/wireless/realtek/rtw88/rtw8822b.c crc32_cnt = rtw_read32(rtwdev, 0xf14); rtwdev 965 drivers/net/wireless/realtek/rtw88/rtw8822b.c crc32_cnt = rtw_read32(rtwdev, 0xf10); rtwdev 968 drivers/net/wireless/realtek/rtw88/rtw8822b.c crc32_cnt = rtw_read32(rtwdev, 0xf0c); rtwdev 972 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_set(rtwdev, 0x9a4, BIT(17)); rtwdev 973 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_clr(rtwdev, 0x9a4, BIT(17)); rtwdev 974 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_clr(rtwdev, 0xa2c, BIT(15)); rtwdev 975 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_set(rtwdev, 0xa2c, BIT(15)); rtwdev 976 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_set(rtwdev, 0xb58, BIT(0)); rtwdev 977 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_clr(rtwdev, 0xb58, BIT(0)); rtwdev 980 drivers/net/wireless/realtek/rtw88/rtw8822b.c static void rtw8822b_do_iqk(struct rtw_dev *rtwdev) rtwdev 988 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_fw_do_iqk(rtwdev, ¶); rtwdev 991 drivers/net/wireless/realtek/rtw88/rtw8822b.c rf_reg = rtw_read_rf(rtwdev, RF_PATH_A, RF_DTXLOK, RFREG_MASK); rtwdev 996 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write_rf(rtwdev, RF_PATH_A, RF_DTXLOK, RFREG_MASK, 0x0); rtwdev 998 drivers/net/wireless/realtek/rtw88/rtw8822b.c reload = !!rtw_read32_mask(rtwdev, REG_IQKFAILMSK, BIT(16)); rtwdev 999 drivers/net/wireless/realtek/rtw88/rtw8822b.c iqk_fail_mask = rtw_read32_mask(rtwdev, REG_IQKFAILMSK, GENMASK(7, 0)); rtwdev 1000 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_dbg(rtwdev, RTW_DBG_PHY, rtwdev 1005 drivers/net/wireless/realtek/rtw88/rtw8822b.c static void rtw8822b_phy_calibration(struct rtw_dev *rtwdev) rtwdev 1007 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw8822b_do_iqk(rtwdev); rtwdev 1010 drivers/net/wireless/realtek/rtw88/rtw8822b.c static void rtw8822b_coex_cfg_init(struct rtw_dev *rtwdev) rtwdev 1013 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_set(rtwdev, REG_BCN_CTRL, BIT_EN_BCN_FUNCTION); rtwdev 1017 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_set(rtwdev, REG_BT_TDMA_TIME, 0x05); rtwdev 1020 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8(rtwdev, REG_BT_STAT_CTRL, 0x1); rtwdev 1023 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_set(rtwdev, REG_GPIO_MUXCFG, BIT_BT_PTA_EN); rtwdev 1024 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32_set(rtwdev, REG_GPIO_MUXCFG, BIT_BT_AOD_GPIO3); rtwdev 1027 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_set(rtwdev, REG_QUEUE_CTRL, BIT_PTA_WL_TX_EN); rtwdev 1029 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_clr(rtwdev, REG_QUEUE_CTRL, BIT_PTA_EDCCA_EN); rtwdev 1031 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_set(rtwdev, REG_BT_COEX_V2, BIT_GNT_BT_POLARITY); rtwdev 1034 drivers/net/wireless/realtek/rtw88/rtw8822b.c static void rtw8822b_coex_cfg_ant_switch(struct rtw_dev *rtwdev, rtwdev 1037 drivers/net/wireless/realtek/rtw88/rtw8822b.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 1058 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_mask(rtwdev, REG_LED_CFG + 2, BIT_DPDT_SEL_EN >> 16, 0x0); rtwdev 1060 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_mask(rtwdev, REG_LED_CFG + 3, BIT_DPDT_WL_SEL >> 24, 0x1); rtwdev 1062 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_mask(rtwdev, REG_RFE_CTRL8, BIT_MASK_RFE_SEL89, 0x77); rtwdev 1076 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_mask(rtwdev, REG_RFE_INV8, BIT_MASK_RFE_INV89, regval); rtwdev 1080 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_mask(rtwdev, REG_LED_CFG + 2, BIT_DPDT_SEL_EN >> 16, 0x0); rtwdev 1082 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_mask(rtwdev, REG_LED_CFG + 3, BIT_DPDT_WL_SEL >> 24, 0x1); rtwdev 1084 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_mask(rtwdev, REG_RFE_CTRL8, BIT_MASK_RFE_SEL89, 0x66); rtwdev 1087 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_mask(rtwdev, REG_RFE_INV8, BIT_MASK_RFE_INV89, regval); rtwdev 1091 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_mask(rtwdev, REG_LED_CFG + 2, BIT_DPDT_SEL_EN >> 16, 0x0); rtwdev 1093 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_mask(rtwdev, REG_LED_CFG + 3, BIT_DPDT_WL_SEL >> 24, 0x1); rtwdev 1094 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_mask(rtwdev, REG_RFE_CTRL8, BIT_MASK_RFE_SEL89, 0x88); rtwdev 1098 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_mask(rtwdev, REG_LED_CFG + 2, BIT_DPDT_SEL_EN >> 16, 0x1); rtwdev 1101 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_mask(rtwdev, REG_PAD_CTRL1, BIT_SW_DPDT_SEL_DATA, regval); rtwdev 1105 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_mask(rtwdev, REG_LED_CFG + 2, BIT_DPDT_SEL_EN >> 16, 0x0); rtwdev 1107 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_mask(rtwdev, REG_LED_CFG + 3, BIT_DPDT_WL_SEL >> 24, 0x1); rtwdev 1111 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_mask(rtwdev, REG_LED_CFG + 2, BIT_DPDT_SEL_EN >> 16, 0x0); rtwdev 1113 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_mask(rtwdev, REG_LED_CFG + 3, BIT_DPDT_WL_SEL >> 24, 0x0); rtwdev 1118 drivers/net/wireless/realtek/rtw88/rtw8822b.c static void rtw8822b_coex_cfg_gnt_fix(struct rtw_dev *rtwdev) rtwdev 1122 drivers/net/wireless/realtek/rtw88/rtw8822b.c static void rtw8822b_coex_cfg_gnt_debug(struct rtw_dev *rtwdev) rtwdev 1124 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_mask(rtwdev, REG_PAD_CTRL1 + 2, BIT_BTGP_SPI_EN >> 16, 0); rtwdev 1125 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_mask(rtwdev, REG_PAD_CTRL1 + 3, BIT_BTGP_JTAG_EN >> 24, 0); rtwdev 1126 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_mask(rtwdev, REG_GPIO_MUXCFG + 2, BIT_FSPI_EN >> 16, 0); rtwdev 1127 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_mask(rtwdev, REG_PAD_CTRL1 + 1, BIT_LED1DIS >> 8, 0); rtwdev 1128 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_mask(rtwdev, REG_SYS_SDIO_CTRL + 3, BIT_DBG_GNT_WL_BT >> 24, 0); rtwdev 1131 drivers/net/wireless/realtek/rtw88/rtw8822b.c static void rtw8822b_coex_cfg_rfe_type(struct rtw_dev *rtwdev) rtwdev 1133 drivers/net/wireless/realtek/rtw88/rtw8822b.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 1135 drivers/net/wireless/realtek/rtw88/rtw8822b.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 1138 drivers/net/wireless/realtek/rtw88/rtw8822b.c coex_rfe->rfe_module_type = rtwdev->efuse.rfe_option; rtwdev 1150 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_coex_write_scbd(rtwdev, COEX_SCBD_EXTFEM, true); rtwdev 1153 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_coex_write_scbd(rtwdev, COEX_SCBD_EXTFEM, false); rtwdev 1165 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8(rtwdev, REG_RFE_CTRL_E, 0xff); rtwdev 1166 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_mask(rtwdev, REG_RFESEL_CTRL + 1, 0x3, 0x0); rtwdev 1167 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_mask(rtwdev, REG_RFE_INV16, BIT_RFE_BUF_EN, 0x0); rtwdev 1170 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_coex_write_indirect_reg(rtwdev, LTE_COEX_CTRL, BIT_LTE_COEX_EN, 0); rtwdev 1173 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_coex_write_indirect_reg(rtwdev, LTE_WL_TRX_CTRL, MASKLWORD, 0xffff); rtwdev 1176 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_coex_write_indirect_reg(rtwdev, LTE_BT_TRX_CTRL, MASKLWORD, 0xffff); rtwdev 1179 drivers/net/wireless/realtek/rtw88/rtw8822b.c static void rtw8822b_coex_cfg_wl_tx_power(struct rtw_dev *rtwdev, u8 wl_pwr) rtwdev 1181 drivers/net/wireless/realtek/rtw88/rtw8822b.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 1198 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write8_mask(rtwdev, reg_addr[i], 0xff, pwr); rtwdev 1201 drivers/net/wireless/realtek/rtw88/rtw8822b.c static void rtw8822b_coex_cfg_wl_rx_gain(struct rtw_dev *rtwdev, bool low_gain) rtwdev 1203 drivers/net/wireless/realtek/rtw88/rtw8822b.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 1239 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32(rtwdev, REG_RX_GAIN_EN, wl_rx_low_gain_on[i]); rtwdev 1242 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write_rf(rtwdev, RF_PATH_A, RF_RCKD, 0x2, 0x1); rtwdev 1243 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write_rf(rtwdev, RF_PATH_A, RF_RCK, 0x3f, 0x3f); rtwdev 1244 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write_rf(rtwdev, RF_PATH_B, RF_RCKD, 0x2, 0x1); rtwdev 1245 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write_rf(rtwdev, RF_PATH_B, RF_RCK, 0x3f, 0x3f); rtwdev 1248 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write32(rtwdev, 0x81c, wl_rx_low_gain_off[i]); rtwdev 1251 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write_rf(rtwdev, RF_PATH_A, RF_RCK, 0x3f, 0x4); rtwdev 1252 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write_rf(rtwdev, RF_PATH_A, RF_RCKD, 0x2, 0x0); rtwdev 1253 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write_rf(rtwdev, RF_PATH_B, RF_RCK, 0x3f, 0x4); rtwdev 1254 drivers/net/wireless/realtek/rtw88/rtw8822b.c rtw_write_rf(rtwdev, RF_PATH_B, RF_RCKD, 0x2, 0x0); rtwdev 101 drivers/net/wireless/realtek/rtw88/rtw8822b.h _rtw_write32s_mask(struct rtw_dev *rtwdev, u32 addr, u32 mask, u32 data) rtwdev 104 drivers/net/wireless/realtek/rtw88/rtw8822b.h rtw_write32_mask(rtwdev, addr, mask, data); rtwdev 105 drivers/net/wireless/realtek/rtw88/rtw8822b.h rtw_write32_mask(rtwdev, addr + 0x200, mask, data); rtwdev 108 drivers/net/wireless/realtek/rtw88/rtw8822b.h #define rtw_write32s_mask(rtwdev, addr, mask, data) \ rtwdev 112 drivers/net/wireless/realtek/rtw88/rtw8822b.h _rtw_write32s_mask(rtwdev, addr, mask, data); \ rtwdev 18 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_config_trx_mode(struct rtw_dev *rtwdev, u8 tx_path, rtwdev 27 drivers/net/wireless/realtek/rtw88/rtw8822c.c static int rtw8822c_read_efuse(struct rtw_dev *rtwdev, u8 *log_map) rtwdev 29 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 47 drivers/net/wireless/realtek/rtw88/rtw8822c.c switch (rtw_hci_type(rtwdev)) { rtwdev 59 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_header_file_init(struct rtw_dev *rtwdev, bool pre) rtwdev 61 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_set(rtwdev, REG_3WIRE, BIT_3WIRE_TX_EN | BIT_3WIRE_RX_EN); rtwdev 62 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_set(rtwdev, REG_3WIRE, BIT_3WIRE_PI_ON); rtwdev 63 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_set(rtwdev, REG_3WIRE2, BIT_3WIRE_TX_EN | BIT_3WIRE_RX_EN); rtwdev 64 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_set(rtwdev, REG_3WIRE2, BIT_3WIRE_PI_ON); rtwdev 67 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_clr(rtwdev, REG_ENCCK, BIT_CCK_OFDM_BLK_EN); rtwdev 69 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_set(rtwdev, REG_ENCCK, BIT_CCK_OFDM_BLK_EN); rtwdev 72 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dac_backup_reg(struct rtw_dev *rtwdev, rtwdev 88 drivers/net/wireless/realtek/rtw88/rtw8822c.c backup[i].val = rtw_read32(rtwdev, addrs[i]); rtwdev 94 drivers/net/wireless/realtek/rtw88/rtw8822c.c val = rtw_read_rf(rtwdev, path, reg, RFREG_MASK); rtwdev 101 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dac_restore_reg(struct rtw_dev *rtwdev, rtwdev 109 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_restore_reg(rtwdev, backup, DACK_REG_8822C); rtwdev 115 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, path, reg, RFREG_MASK, val); rtwdev 120 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_rf_minmax_cmp(struct rtw_dev *rtwdev, u32 value, rtwdev 158 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void __rtw8822c_dac_iq_sort(struct rtw_dev *rtwdev, u32 *v1, u32 *v2) rtwdev 171 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dac_iq_sort(struct rtw_dev *rtwdev, u32 *iv, u32 *qv) rtwdev 177 drivers/net/wireless/realtek/rtw88/rtw8822c.c __rtw8822c_dac_iq_sort(rtwdev, &iv[j], &iv[j + 1]); rtwdev 178 drivers/net/wireless/realtek/rtw88/rtw8822c.c __rtw8822c_dac_iq_sort(rtwdev, &qv[j], &qv[j + 1]); rtwdev 183 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dac_iq_offset(struct rtw_dev *rtwdev, u32 *vec, u32 *val) rtwdev 247 drivers/net/wireless/realtek/rtw88/rtw8822c.c static bool rtw8822c_dac_iq_check(struct rtw_dev *rtwdev, u32 value) rtwdev 254 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_dbg(rtwdev, RTW_DBG_RFK, "[DACK] Error overflow\n"); rtwdev 260 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dac_cal_iq_sample(struct rtw_dev *rtwdev, u32 *iv, u32 *qv) rtwdev 267 drivers/net/wireless/realtek/rtw88/rtw8822c.c temp = rtw_read32_mask(rtwdev, 0x2dbc, 0x3fffff); rtwdev 271 drivers/net/wireless/realtek/rtw88/rtw8822c.c if (rtw8822c_dac_iq_check(rtwdev, iv[i]) && rtwdev 272 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_iq_check(rtwdev, qv[i])) rtwdev 277 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dac_cal_iq_search(struct rtw_dev *rtwdev, rtwdev 292 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_rf_minmax_cmp(rtwdev, iv[i], &i_min, &i_max); rtwdev 293 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_rf_minmax_cmp(rtwdev, qv[i], &q_min, &q_max); rtwdev 310 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_dbg(rtwdev, RTW_DBG_RFK, rtwdev 313 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_dbg(rtwdev, RTW_DBG_RFK, rtwdev 317 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_iq_sort(rtwdev, iv, qv); rtwdev 320 drivers/net/wireless/realtek/rtw88/rtw8822c.c temp = rtw_read32_mask(rtwdev, 0x2dbc, 0x3fffff); rtwdev 323 drivers/net/wireless/realtek/rtw88/rtw8822c.c temp = rtw_read32_mask(rtwdev, 0x2dbc, 0x3fffff); rtwdev 331 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_iq_offset(rtwdev, iv, i_value); rtwdev 332 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_iq_offset(rtwdev, qv, q_value); rtwdev 335 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dac_cal_rf_mode(struct rtw_dev *rtwdev, rtwdev 341 drivers/net/wireless/realtek/rtw88/rtw8822c.c rf_a = rtw_read_rf(rtwdev, RF_PATH_A, 0x0, RFREG_MASK); rtwdev 342 drivers/net/wireless/realtek/rtw88/rtw8822c.c rf_b = rtw_read_rf(rtwdev, RF_PATH_B, 0x0, RFREG_MASK); rtwdev 344 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_dbg(rtwdev, RTW_DBG_RFK, "[DACK] RF path-A=0x%05x\n", rf_a); rtwdev 345 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_dbg(rtwdev, RTW_DBG_RFK, "[DACK] RF path-B=0x%05x\n", rf_b); rtwdev 347 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_cal_iq_sample(rtwdev, iv, qv); rtwdev 348 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_cal_iq_search(rtwdev, iv, qv, i_value, q_value); rtwdev 351 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dac_bb_setting(struct rtw_dev *rtwdev) rtwdev 353 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x1d58, 0xff8, 0x1ff); rtwdev 354 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x1a00, 0x3, 0x2); rtwdev 355 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x1a14, 0x300, 0x3); rtwdev 356 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, 0x1d70, 0x7e7e7e7e); rtwdev 357 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x180c, 0x3, 0x0); rtwdev 358 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x410c, 0x3, 0x0); rtwdev 359 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, 0x1b00, 0x00000008); rtwdev 360 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, 0x1bcc, 0x3f); rtwdev 361 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, 0x1b00, 0x0000000a); rtwdev 362 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, 0x1bcc, 0x3f); rtwdev 363 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x1e24, BIT(31), 0x0); rtwdev 364 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x1e28, 0xf, 0x3); rtwdev 367 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dac_cal_adc(struct rtw_dev *rtwdev, rtwdev 370 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_dm_info *dm_info = &rtwdev->dm_info; rtwdev 376 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_dbg(rtwdev, RTW_DBG_RFK, "[DACK] ADCK path(%d)\n", path); rtwdev 392 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, base_addr + 0x30, BIT(30), 0x0); rtwdev 394 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0x30, 0x30db8041); rtwdev 395 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0x60, 0xf0040ff0); rtwdev 396 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0x0c, 0xdff00220); rtwdev 397 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0x10, 0x02dd08c4); rtwdev 398 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0x0c, 0x10000260); rtwdev 399 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, RF_PATH_A, 0x0, RFREG_MASK, 0x10000); rtwdev 400 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, RF_PATH_B, 0x0, RFREG_MASK, 0x10000); rtwdev 402 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_dbg(rtwdev, RTW_DBG_RFK, "[DACK] ADCK count=%d\n", i); rtwdev 403 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, 0x1c3c, path_sel + 0x8003); rtwdev 404 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, 0x1c24, 0x00010002); rtwdev 405 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_cal_rf_mode(rtwdev, &ic, &qc); rtwdev 406 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_dbg(rtwdev, RTW_DBG_RFK, rtwdev 419 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0x68, temp); rtwdev 421 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_dbg(rtwdev, RTW_DBG_RFK, "[DACK] ADCK 0x%08x=0x08%x\n", rtwdev 424 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, 0x1c3c, path_sel + 0x8103); rtwdev 425 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_cal_rf_mode(rtwdev, &ic, &qc); rtwdev 426 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_dbg(rtwdev, RTW_DBG_RFK, rtwdev 437 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, 0x1c3c, 0x00000003); rtwdev 438 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0x0c, 0x10000260); rtwdev 439 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0x10, 0x02d508c4); rtwdev 442 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, path, 0x8f, BIT(13), 0x1); rtwdev 445 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dac_cal_step1(struct rtw_dev *rtwdev, u8 path) rtwdev 447 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_dm_info *dm_info = &rtwdev->dm_info; rtwdev 454 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0x68, dm_info->dack_adck[path]); rtwdev 455 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0x0c, 0xdff00220); rtwdev 457 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0x60, 0xf0040ff0); rtwdev 458 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, 0x1c38, 0xffffffff); rtwdev 460 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0x10, 0x02d508c5); rtwdev 461 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, 0x9b4, 0xdb66db00); rtwdev 462 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0xb0, 0x0a11fb88); rtwdev 463 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0xbc, 0x0008ff81); rtwdev 464 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0xc0, 0x0003d208); rtwdev 465 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0xcc, 0x0a11fb88); rtwdev 466 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0xd8, 0x0008ff81); rtwdev 467 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0xdc, 0x0003d208); rtwdev 468 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0xb8, 0x60000000); rtwdev 470 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0xbc, 0x000aff8d); rtwdev 472 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0xb0, 0x0a11fb89); rtwdev 473 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0xcc, 0x0a11fb89); rtwdev 475 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0xb8, 0x62000000); rtwdev 476 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0xd4, 0x62000000); rtwdev 478 drivers/net/wireless/realtek/rtw88/rtw8822c.c if (!check_hw_ready(rtwdev, read_addr + 0x08, 0x7fff80, 0xffff) || rtwdev 479 drivers/net/wireless/realtek/rtw88/rtw8822c.c !check_hw_ready(rtwdev, read_addr + 0x34, 0x7fff80, 0xffff)) rtwdev 480 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_err(rtwdev, "failed to wait for dack ready\n"); rtwdev 481 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0xb8, 0x02000000); rtwdev 483 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0xbc, 0x0008ff87); rtwdev 484 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, 0x9b4, 0xdb6db600); rtwdev 485 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0x10, 0x02d508c5); rtwdev 486 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0xbc, 0x0008ff87); rtwdev 487 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0x60, 0xf0000000); rtwdev 490 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dac_cal_step2(struct rtw_dev *rtwdev, rtwdev 497 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, base_addr + 0xbc, 0xf0000000, 0x0); rtwdev 498 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, base_addr + 0xc0, 0xf, 0x8); rtwdev 499 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, base_addr + 0xd8, 0xf0000000, 0x0); rtwdev 500 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, base_addr + 0xdc, 0xf, 0x8); rtwdev 502 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, 0x1b00, 0x00000008); rtwdev 503 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, 0x1bcc, 0x03f); rtwdev 504 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0x0c, 0xdff00220); rtwdev 505 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0x10, 0x02d508c5); rtwdev 506 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, 0x1c3c, 0x00088103); rtwdev 508 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_cal_rf_mode(rtwdev, &ic_in, &qc_in); rtwdev 535 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_dbg(rtwdev, RTW_DBG_RFK, "[DACK] before i=0x%x, q=0x%x\n", ic_in, qc_in); rtwdev 536 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_dbg(rtwdev, RTW_DBG_RFK, "[DACK] after i=0x%x, q=0x%x\n", ic, qc); rtwdev 539 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dac_cal_step3(struct rtw_dev *rtwdev, u8 path, rtwdev 554 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0x0c, 0xdff00220); rtwdev 555 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0x10, 0x02d508c5); rtwdev 556 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, 0x9b4, 0xdb66db00); rtwdev 557 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0xb0, 0x0a11fb88); rtwdev 558 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0xbc, 0xc008ff81); rtwdev 559 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0xc0, 0x0003d208); rtwdev 560 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, base_addr + 0xbc, 0xf0000000, ic & 0xf); rtwdev 561 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, base_addr + 0xc0, 0xf, (ic & 0xf0) >> 4); rtwdev 562 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0xcc, 0x0a11fb88); rtwdev 563 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0xd8, 0xe008ff81); rtwdev 564 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0xdc, 0x0003d208); rtwdev 565 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, base_addr + 0xd8, 0xf0000000, qc & 0xf); rtwdev 566 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, base_addr + 0xdc, 0xf, (qc & 0xf0) >> 4); rtwdev 567 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0xb8, 0x60000000); rtwdev 569 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, base_addr + 0xbc, 0xe, 0x6); rtwdev 571 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0xb0, 0x0a11fb89); rtwdev 572 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0xcc, 0x0a11fb89); rtwdev 574 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0xb8, 0x62000000); rtwdev 575 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0xd4, 0x62000000); rtwdev 577 drivers/net/wireless/realtek/rtw88/rtw8822c.c if (!check_hw_ready(rtwdev, read_addr + 0x24, 0x07f80000, ic) || rtwdev 578 drivers/net/wireless/realtek/rtw88/rtw8822c.c !check_hw_ready(rtwdev, read_addr + 0x50, 0x07f80000, qc)) rtwdev 579 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_err(rtwdev, "failed to write IQ vector to hardware\n"); rtwdev 580 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0xb8, 0x02000000); rtwdev 582 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, base_addr + 0xbc, 0xe, 0x3); rtwdev 583 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, 0x9b4, 0xdb6db600); rtwdev 587 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0x68, temp); rtwdev 588 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0x10, 0x02d508c5); rtwdev 589 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0x60, 0xf0000000); rtwdev 590 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_cal_rf_mode(rtwdev, &ic, &qc); rtwdev 612 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_dbg(rtwdev, RTW_DBG_RFK, rtwdev 616 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dac_cal_step4(struct rtw_dev *rtwdev, u8 path) rtwdev 620 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0x68, 0x0); rtwdev 621 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, base_addr + 0x10, 0x02d508c4); rtwdev 622 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, base_addr + 0xbc, 0x1, 0x0); rtwdev 623 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, base_addr + 0x30, BIT(30), 0x1); rtwdev 626 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dac_cal_backup_vec(struct rtw_dev *rtwdev, rtwdev 629 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_dm_info *dm_info = &rtwdev->dm_info; rtwdev 637 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, w_addr, 0xf0000000, i); rtwdev 638 drivers/net/wireless/realtek/rtw88/rtw8822c.c val = (u16)rtw_read32_mask(rtwdev, r_addr, 0x7fc0000); rtwdev 643 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dac_cal_backup_path(struct rtw_dev *rtwdev, u8 path) rtwdev 655 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_cal_backup_vec(rtwdev, path, 0, w_addr, r_addr); rtwdev 660 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_cal_backup_vec(rtwdev, path, 1, w_addr, r_addr); rtwdev 663 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dac_cal_backup_dck(struct rtw_dev *rtwdev) rtwdev 665 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_dm_info *dm_info = &rtwdev->dm_info; rtwdev 668 drivers/net/wireless/realtek/rtw88/rtw8822c.c val = (u8)rtw_read32_mask(rtwdev, REG_DCKA_I_0, 0xf0000000); rtwdev 670 drivers/net/wireless/realtek/rtw88/rtw8822c.c val = (u8)rtw_read32_mask(rtwdev, REG_DCKA_I_1, 0xf); rtwdev 672 drivers/net/wireless/realtek/rtw88/rtw8822c.c val = (u8)rtw_read32_mask(rtwdev, REG_DCKA_Q_0, 0xf0000000); rtwdev 674 drivers/net/wireless/realtek/rtw88/rtw8822c.c val = (u8)rtw_read32_mask(rtwdev, REG_DCKA_Q_1, 0xf); rtwdev 677 drivers/net/wireless/realtek/rtw88/rtw8822c.c val = (u8)rtw_read32_mask(rtwdev, REG_DCKB_I_0, 0xf0000000); rtwdev 679 drivers/net/wireless/realtek/rtw88/rtw8822c.c val = (u8)rtw_read32_mask(rtwdev, REG_DCKB_I_1, 0xf); rtwdev 681 drivers/net/wireless/realtek/rtw88/rtw8822c.c val = (u8)rtw_read32_mask(rtwdev, REG_DCKB_Q_0, 0xf0000000); rtwdev 683 drivers/net/wireless/realtek/rtw88/rtw8822c.c val = (u8)rtw_read32_mask(rtwdev, REG_DCKB_Q_1, 0xf); rtwdev 687 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dac_cal_backup(struct rtw_dev *rtwdev) rtwdev 691 drivers/net/wireless/realtek/rtw88/rtw8822c.c temp[0] = rtw_read32(rtwdev, 0x1860); rtwdev 692 drivers/net/wireless/realtek/rtw88/rtw8822c.c temp[1] = rtw_read32(rtwdev, 0x4160); rtwdev 693 drivers/net/wireless/realtek/rtw88/rtw8822c.c temp[2] = rtw_read32(rtwdev, 0x9b4); rtwdev 696 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, 0x9b4, 0xdb66db00); rtwdev 699 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_clr(rtwdev, 0x1830, BIT(30)); rtwdev 700 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x1860, 0xfc000000, 0x3c); rtwdev 701 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_cal_backup_path(rtwdev, RF_PATH_A); rtwdev 704 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_clr(rtwdev, 0x4130, BIT(30)); rtwdev 705 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x4160, 0xfc000000, 0x3c); rtwdev 706 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_cal_backup_path(rtwdev, RF_PATH_B); rtwdev 708 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_cal_backup_dck(rtwdev); rtwdev 709 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_set(rtwdev, 0x1830, BIT(30)); rtwdev 710 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_set(rtwdev, 0x4130, BIT(30)); rtwdev 712 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, 0x1860, temp[0]); rtwdev 713 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, 0x4160, temp[1]); rtwdev 714 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, 0x9b4, temp[2]); rtwdev 717 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dac_cal_restore_dck(struct rtw_dev *rtwdev) rtwdev 719 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_dm_info *dm_info = &rtwdev->dm_info; rtwdev 722 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_set(rtwdev, REG_DCKA_I_0, BIT(19)); rtwdev 724 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DCKA_I_0, 0xf0000000, val); rtwdev 726 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DCKA_I_1, 0xf, val); rtwdev 728 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_set(rtwdev, REG_DCKA_Q_0, BIT(19)); rtwdev 730 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DCKA_Q_0, 0xf0000000, val); rtwdev 732 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DCKA_Q_1, 0xf, val); rtwdev 734 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_set(rtwdev, REG_DCKB_I_0, BIT(19)); rtwdev 736 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DCKB_I_0, 0xf0000000, val); rtwdev 738 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DCKB_I_1, 0xf, val); rtwdev 740 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_set(rtwdev, REG_DCKB_Q_0, BIT(19)); rtwdev 742 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DCKB_Q_0, 0xf0000000, val); rtwdev 744 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DCKB_Q_1, 0xf, val); rtwdev 747 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dac_cal_restore_prepare(struct rtw_dev *rtwdev) rtwdev 749 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, 0x9b4, 0xdb66db00); rtwdev 751 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x18b0, BIT(27), 0x0); rtwdev 752 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x18cc, BIT(27), 0x0); rtwdev 753 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x41b0, BIT(27), 0x0); rtwdev 754 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x41cc, BIT(27), 0x0); rtwdev 756 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x1830, BIT(30), 0x0); rtwdev 757 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x1860, 0xfc000000, 0x3c); rtwdev 758 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x18b4, BIT(0), 0x1); rtwdev 759 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x18d0, BIT(0), 0x1); rtwdev 761 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x4130, BIT(30), 0x0); rtwdev 762 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x4160, 0xfc000000, 0x3c); rtwdev 763 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x41b4, BIT(0), 0x1); rtwdev 764 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x41d0, BIT(0), 0x1); rtwdev 766 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x18b0, 0xf00, 0x0); rtwdev 767 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x18c0, BIT(14), 0x0); rtwdev 768 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x18cc, 0xf00, 0x0); rtwdev 769 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x18dc, BIT(14), 0x0); rtwdev 771 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x18b0, BIT(0), 0x0); rtwdev 772 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x18cc, BIT(0), 0x0); rtwdev 773 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x18b0, BIT(0), 0x1); rtwdev 774 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x18cc, BIT(0), 0x1); rtwdev 776 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_cal_restore_dck(rtwdev); rtwdev 778 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x18c0, 0x38000, 0x7); rtwdev 779 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x18dc, 0x38000, 0x7); rtwdev 780 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x41c0, 0x38000, 0x7); rtwdev 781 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x41dc, 0x38000, 0x7); rtwdev 783 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x18b8, BIT(26) | BIT(25), 0x1); rtwdev 784 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x18d4, BIT(26) | BIT(25), 0x1); rtwdev 786 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x41b0, 0xf00, 0x0); rtwdev 787 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x41c0, BIT(14), 0x0); rtwdev 788 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x41cc, 0xf00, 0x0); rtwdev 789 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x41dc, BIT(14), 0x0); rtwdev 791 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x41b0, BIT(0), 0x0); rtwdev 792 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x41cc, BIT(0), 0x0); rtwdev 793 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x41b0, BIT(0), 0x1); rtwdev 794 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x41cc, BIT(0), 0x1); rtwdev 796 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x41b8, BIT(26) | BIT(25), 0x1); rtwdev 797 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x41d4, BIT(26) | BIT(25), 0x1); rtwdev 800 drivers/net/wireless/realtek/rtw88/rtw8822c.c static bool rtw8822c_dac_cal_restore_wait(struct rtw_dev *rtwdev, rtwdev 806 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, toggle_addr, BIT(26) | BIT(25), 0x0); rtwdev 807 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, toggle_addr, BIT(26) | BIT(25), 0x2); rtwdev 809 drivers/net/wireless/realtek/rtw88/rtw8822c.c if (rtw_read32_mask(rtwdev, target_addr, 0xf) == 0x6) rtwdev 817 drivers/net/wireless/realtek/rtw88/rtw8822c.c static bool rtw8822c_dac_cal_restore_path(struct rtw_dev *rtwdev, u8 path) rtwdev 819 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_dm_info *dm_info = &rtwdev->dm_info; rtwdev 831 drivers/net/wireless/realtek/rtw88/rtw8822c.c if (!rtw8822c_dac_cal_restore_wait(rtwdev, r_i, w_i + 0x8)) rtwdev 835 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, w_i + 0x4, BIT(2), 0x0); rtwdev 837 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, w_i + 0x4, 0xff8, value); rtwdev 838 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, w_i, 0xf0000000, i); rtwdev 839 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, w_i + 0x4, BIT(2), 0x1); rtwdev 842 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, w_i + 0x4, BIT(2), 0x0); rtwdev 844 drivers/net/wireless/realtek/rtw88/rtw8822c.c if (!rtw8822c_dac_cal_restore_wait(rtwdev, r_q, w_q + 0x8)) rtwdev 848 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, w_q + 0x4, BIT(2), 0x0); rtwdev 850 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, w_q + 0x4, 0xff8, value); rtwdev 851 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, w_q, 0xf0000000, i); rtwdev 852 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, w_q + 0x4, BIT(2), 0x1); rtwdev 854 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, w_q + 0x4, BIT(2), 0x0); rtwdev 856 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, w_i + 0x8, BIT(26) | BIT(25), 0x0); rtwdev 857 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, w_q + 0x8, BIT(26) | BIT(25), 0x0); rtwdev 858 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, w_i + 0x4, BIT(0), 0x0); rtwdev 859 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, w_q + 0x4, BIT(0), 0x0); rtwdev 864 drivers/net/wireless/realtek/rtw88/rtw8822c.c static bool __rtw8822c_dac_cal_restore(struct rtw_dev *rtwdev) rtwdev 866 drivers/net/wireless/realtek/rtw88/rtw8822c.c if (!rtw8822c_dac_cal_restore_path(rtwdev, RF_PATH_A)) rtwdev 869 drivers/net/wireless/realtek/rtw88/rtw8822c.c if (!rtw8822c_dac_cal_restore_path(rtwdev, RF_PATH_B)) rtwdev 875 drivers/net/wireless/realtek/rtw88/rtw8822c.c static bool rtw8822c_dac_cal_restore(struct rtw_dev *rtwdev) rtwdev 877 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_dm_info *dm_info = &rtwdev->dm_info; rtwdev 887 drivers/net/wireless/realtek/rtw88/rtw8822c.c temp[0] = rtw_read32(rtwdev, 0x1860); rtwdev 888 drivers/net/wireless/realtek/rtw88/rtw8822c.c temp[1] = rtw_read32(rtwdev, 0x4160); rtwdev 889 drivers/net/wireless/realtek/rtw88/rtw8822c.c temp[2] = rtw_read32(rtwdev, 0x9b4); rtwdev 891 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_cal_restore_prepare(rtwdev); rtwdev 892 drivers/net/wireless/realtek/rtw88/rtw8822c.c if (!check_hw_ready(rtwdev, 0x2808, 0x7fff80, 0xffff) || rtwdev 893 drivers/net/wireless/realtek/rtw88/rtw8822c.c !check_hw_ready(rtwdev, 0x2834, 0x7fff80, 0xffff) || rtwdev 894 drivers/net/wireless/realtek/rtw88/rtw8822c.c !check_hw_ready(rtwdev, 0x4508, 0x7fff80, 0xffff) || rtwdev 895 drivers/net/wireless/realtek/rtw88/rtw8822c.c !check_hw_ready(rtwdev, 0x4534, 0x7fff80, 0xffff)) rtwdev 898 drivers/net/wireless/realtek/rtw88/rtw8822c.c if (!__rtw8822c_dac_cal_restore(rtwdev)) { rtwdev 899 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_err(rtwdev, "failed to restore dack vectors\n"); rtwdev 903 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x1830, BIT(30), 0x1); rtwdev 904 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x4130, BIT(30), 0x1); rtwdev 905 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, 0x1860, temp[0]); rtwdev 906 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, 0x4160, temp[1]); rtwdev 907 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x18b0, BIT(27), 0x1); rtwdev 908 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x18cc, BIT(27), 0x1); rtwdev 909 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x41b0, BIT(27), 0x1); rtwdev 910 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x41cc, BIT(27), 0x1); rtwdev 911 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, 0x9b4, temp[2]); rtwdev 916 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_rf_dac_cal(struct rtw_dev *rtwdev) rtwdev 925 drivers/net/wireless/realtek/rtw88/rtw8822c.c if (rtw8822c_dac_cal_restore(rtwdev)) rtwdev 930 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_backup_reg(rtwdev, backup, backup_rf); rtwdev 932 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_bb_setting(rtwdev); rtwdev 935 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_cal_adc(rtwdev, RF_PATH_A, &adc_ic_a, &adc_qc_a); rtwdev 937 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_cal_step1(rtwdev, RF_PATH_A); rtwdev 938 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_cal_step2(rtwdev, RF_PATH_A, &ic, &qc); rtwdev 942 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_cal_step3(rtwdev, RF_PATH_A, adc_ic_a, adc_qc_a, rtwdev 948 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_cal_step4(rtwdev, RF_PATH_A); rtwdev 951 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_cal_adc(rtwdev, RF_PATH_B, &adc_ic_b, &adc_qc_b); rtwdev 953 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_cal_step1(rtwdev, RF_PATH_B); rtwdev 954 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_cal_step2(rtwdev, RF_PATH_B, &ic, &qc); rtwdev 958 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_cal_step3(rtwdev, RF_PATH_B, adc_ic_b, adc_qc_b, rtwdev 964 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_cal_step4(rtwdev, RF_PATH_B); rtwdev 966 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, 0x1b00, 0x00000008); rtwdev 967 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x4130, BIT(30), 0x1); rtwdev 968 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, 0x1bcc, 0x0); rtwdev 969 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, 0x1b00, 0x0000000a); rtwdev 970 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, 0x1bcc, 0x0); rtwdev 972 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_restore_reg(rtwdev, backup, backup_rf); rtwdev 975 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dac_cal_backup(rtwdev); rtwdev 977 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_dbg(rtwdev, RTW_DBG_RFK, "[DACK] path A: ic=0x%x, qc=0x%x\n", ic_a, qc_a); rtwdev 978 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_dbg(rtwdev, RTW_DBG_RFK, "[DACK] path B: ic=0x%x, qc=0x%x\n", ic_b, qc_b); rtwdev 979 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_dbg(rtwdev, RTW_DBG_RFK, "[DACK] path A: i=0x%x, q=0x%x\n", i_a, q_a); rtwdev 980 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_dbg(rtwdev, RTW_DBG_RFK, "[DACK] path B: i=0x%x, q=0x%x\n", i_b, q_b); rtwdev 983 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_rf_x2_check(struct rtw_dev *rtwdev) rtwdev 988 drivers/net/wireless/realtek/rtw88/rtw8822c.c x2k_busy = rtw_read_rf(rtwdev, RF_PATH_A, 0xb8, BIT(15)); rtwdev 990 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, RF_PATH_A, 0xb8, RFREG_MASK, 0xC4440); rtwdev 991 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, RF_PATH_A, 0xba, RFREG_MASK, 0x6840D); rtwdev 992 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, RF_PATH_A, 0xb8, RFREG_MASK, 0x80440); rtwdev 997 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_rf_init(struct rtw_dev *rtwdev) rtwdev 999 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_rf_dac_cal(rtwdev); rtwdev 1000 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_rf_x2_check(rtwdev); rtwdev 1003 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_phy_set_param(struct rtw_dev *rtwdev) rtwdev 1005 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_dm_info *dm_info = &rtwdev->dm_info; rtwdev 1006 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 1015 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8_set(rtwdev, REG_SYS_FUNC_EN, rtwdev 1017 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8_set(rtwdev, REG_RF_CTRL, rtwdev 1019 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_set(rtwdev, REG_WLRF1, BIT_WLRF1_BBRF_EN); rtwdev 1022 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DIS_DPD, DIS_DPD_MASK, DIS_DPD_RATEALL); rtwdev 1025 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_header_file_init(rtwdev, true); rtwdev 1027 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_phy_load_tables(rtwdev); rtwdev 1029 drivers/net/wireless/realtek/rtw88/rtw8822c.c crystal_cap = rtwdev->efuse.crystal_cap & 0x7f; rtwdev 1030 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_ANAPAR_XTAL_0, 0xfffc00, rtwdev 1034 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_header_file_init(rtwdev, false); rtwdev 1037 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_config_trx_mode(rtwdev, hal->antenna_tx, hal->antenna_rx, rtwdev 1039 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_phy_init(rtwdev); rtwdev 1041 drivers/net/wireless/realtek/rtw88/rtw8822c.c cck_gi_u_bnd_msb = (u8)rtw_read32_mask(rtwdev, 0x1a98, 0xc000); rtwdev 1042 drivers/net/wireless/realtek/rtw88/rtw8822c.c cck_gi_u_bnd_lsb = (u8)rtw_read32_mask(rtwdev, 0x1aa8, 0xf0000); rtwdev 1043 drivers/net/wireless/realtek/rtw88/rtw8822c.c cck_gi_l_bnd_msb = (u8)rtw_read32_mask(rtwdev, 0x1a98, 0xc0); rtwdev 1044 drivers/net/wireless/realtek/rtw88/rtw8822c.c cck_gi_l_bnd_lsb = (u8)rtw_read32_mask(rtwdev, 0x1a70, 0x0f000000); rtwdev 1049 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_rf_init(rtwdev); rtwdev 1140 drivers/net/wireless/realtek/rtw88/rtw8822c.c static int rtw8822c_mac_init(struct rtw_dev *rtwdev) rtwdev 1148 drivers/net/wireless/realtek/rtw88/rtw8822c.c value8 = rtw_read8(rtwdev, REG_FWHW_TXQ_CTRL); rtwdev 1150 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_FWHW_TXQ_CTRL, value8); rtwdev 1151 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_FWHW_TXQ_CTRL + 1, WLAN_TXQ_RPT_EN); rtwdev 1153 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write16(rtwdev, REG_SPEC_SIFS, WLAN_SIFS_DUR_TUNE); rtwdev 1154 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_SIFS, WLAN_SIFS_CFG); rtwdev 1155 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write16(rtwdev, REG_RESP_SIFS_CCK, rtwdev 1157 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write16(rtwdev, REG_RESP_SIFS_OFDM, rtwdev 1160 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_DARFRC, WLAN_DATA_RATE_FB_CNT_1_4); rtwdev 1161 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_DARFRCH, WLAN_DATA_RATE_FB_CNT_5_8); rtwdev 1162 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_RARFRCH, WLAN_RTS_RATE_FB_CNT_5_8); rtwdev 1163 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_ARFR0, WLAN_DATA_RATE_FB_RATE0); rtwdev 1164 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_ARFRH0, WLAN_DATA_RATE_FB_RATE0_H); rtwdev 1165 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_ARFR1_V1, WLAN_RTS_RATE_FB_RATE1); rtwdev 1166 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_ARFRH1_V1, WLAN_RTS_RATE_FB_RATE1_H); rtwdev 1167 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_ARFR4, WLAN_RTS_RATE_FB_RATE4); rtwdev 1168 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_ARFRH4, WLAN_RTS_RATE_FB_RATE4_H); rtwdev 1169 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_ARFR5, WLAN_RTS_RATE_FB_RATE5); rtwdev 1170 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_ARFRH5, WLAN_RTS_RATE_FB_RATE5_H); rtwdev 1172 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_AMPDU_MAX_TIME_V1, WLAN_AMPDU_MAX_TIME); rtwdev 1173 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8_set(rtwdev, REG_TX_HANG_CTRL, BIT_EN_EOF_V1); rtwdev 1175 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_PRECNT_CTRL, (u8)(pre_txcnt & 0xFF)); rtwdev 1176 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_PRECNT_CTRL + 1, (u8)(pre_txcnt >> 8)); rtwdev 1180 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_PROT_MODE_CTRL, value32); rtwdev 1181 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write16(rtwdev, REG_BAR_MODE_CTRL + 2, rtwdev 1183 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_FAST_EDCA_VOVI_SETTING, FAST_EDCA_VO_TH); rtwdev 1184 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_FAST_EDCA_VOVI_SETTING + 2, FAST_EDCA_VI_TH); rtwdev 1185 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_FAST_EDCA_BEBK_SETTING, FAST_EDCA_BE_TH); rtwdev 1186 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_FAST_EDCA_BEBK_SETTING + 2, FAST_EDCA_BK_TH); rtwdev 1188 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8_clr(rtwdev, REG_LIFETIME_EN, BIT_BA_PARSER_EN); rtwdev 1189 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_clr(rtwdev, REG_RRSR, BITS_RRSR_RSC); rtwdev 1192 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_EDCA_VO_PARAM, WLAN_EDCA_VO_PARAM); rtwdev 1193 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_EDCA_VI_PARAM, WLAN_EDCA_VI_PARAM); rtwdev 1194 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_EDCA_BE_PARAM, WLAN_EDCA_BE_PARAM); rtwdev 1195 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_EDCA_BK_PARAM, WLAN_EDCA_BK_PARAM); rtwdev 1196 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_PIFS, WLAN_PIFS_TIME); rtwdev 1197 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8_clr(rtwdev, REG_TX_PTCL_CTRL + 1, BIT_SIFS_BK_EN >> 8); rtwdev 1198 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8_set(rtwdev, REG_RD_CTRL + 1, rtwdev 1203 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_clr(rtwdev, REG_AFE_CTRL1, BIT_MAC_CLK_SEL); rtwdev 1204 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_USTIME_TSF, MAC_CLK_SPEED); rtwdev 1205 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_USTIME_EDCA, MAC_CLK_SPEED); rtwdev 1207 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8_set(rtwdev, REG_MISC_CTRL, rtwdev 1209 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8_clr(rtwdev, REG_TIMER0_SRC_SEL, BIT_TSFT_SEL_TIMER0); rtwdev 1210 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write16(rtwdev, REG_TXPAUSE, 0x0000); rtwdev 1211 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_SLOT, WLAN_SLOT_TIME); rtwdev 1212 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_RD_NAV_NXT, WLAN_NAV_CFG); rtwdev 1213 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write16(rtwdev, REG_RXTSF_OFFSET_CCK, WLAN_RX_TSF_CFG); rtwdev 1215 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8_set(rtwdev, REG_BCN_CTRL, BIT_EN_BCN_FUNCTION); rtwdev 1217 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_TBTT_PROHIBIT, WLAN_TBTT_TIME); rtwdev 1218 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_DRVERLYINT, WLAN_DRV_EARLY_INT); rtwdev 1219 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_BCN_CTRL_CLINT0, WLAN_BCN_CTRL_CLT0); rtwdev 1220 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_BCNDMATIM, WLAN_BCN_DMA_TIME); rtwdev 1221 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_BCN_MAX_ERR, WLAN_BCN_MAX_ERR); rtwdev 1224 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_BBPSF_CTRL + 2, WLAN_RESP_TXRATE); rtwdev 1225 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_ACKTO, WLAN_ACK_TO); rtwdev 1226 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_ACKTO_CCK, WLAN_ACK_TO_CCK); rtwdev 1227 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write16(rtwdev, REG_EIFS, WLAN_EIFS_DUR_TUNE); rtwdev 1228 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_NAV_CTRL + 2, WLAN_NAV_MAX); rtwdev 1229 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_WMAC_TRXPTCL_CTL_H + 2, WLAN_BAR_ACK_TYPE); rtwdev 1230 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_RXFLTMAP0, WLAN_RX_FILTER0); rtwdev 1231 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write16(rtwdev, REG_RXFLTMAP2, WLAN_RX_FILTER2); rtwdev 1232 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_RCR, WLAN_RCR_CFG); rtwdev 1233 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_RX_PKT_LIMIT, WLAN_RXPKT_MAX_SZ_512); rtwdev 1234 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_TCR + 2, WLAN_TX_FUNC_CFG2); rtwdev 1235 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_TCR + 1, WLAN_TX_FUNC_CFG1); rtwdev 1236 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_set(rtwdev, REG_GENERAL_OPTION, BIT_DUMMY_FCS_READY_MASK_EN); rtwdev 1237 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_WMAC_OPTION_FUNCTION + 8, WLAN_MAC_OPT_FUNC2); rtwdev 1238 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_WMAC_OPTION_FUNCTION_1, WLAN_MAC_OPT_NORM_FUNC1); rtwdev 1241 drivers/net/wireless/realtek/rtw88/rtw8822c.c value16 = rtw_read16(rtwdev, REG_RXPSF_CTRL + 2) & 0xF00F; rtwdev 1244 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write16(rtwdev, REG_RXPSF_CTRL + 2, value16); rtwdev 1250 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write16(rtwdev, REG_RXPSF_CTRL, value16); rtwdev 1251 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_RXPSF_TYPE_CTRL, 0xFFFFFFFF); rtwdev 1253 drivers/net/wireless/realtek/rtw88/rtw8822c.c value16 = rtw_read16(rtwdev, REG_RXPSF_CTRL); rtwdev 1257 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write16(rtwdev, REG_RXPSF_CTRL, value16); rtwdev 1260 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_INT_MIG, WLAN_MAC_INT_MIG_CFG); rtwdev 1265 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_set_channel_rf(struct rtw_dev *rtwdev, u8 channel, u8 bw) rtwdev 1282 drivers/net/wireless/realtek/rtw88/rtw8822c.c rf_reg18 = rtw_read_rf(rtwdev, RF_PATH_A, 0x18, RFREG_MASK); rtwdev 1313 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTWE2, 0x04, 0x01); rtwdev 1314 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTWA, 0x1f, 0x12); rtwdev 1315 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTWD0, 0xfffff, rf_rxbb); rtwdev 1316 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTWE2, 0x04, 0x00); rtwdev 1318 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, RF_PATH_B, RF_LUTWE2, 0x04, 0x01); rtwdev 1319 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, RF_PATH_B, RF_LUTWA, 0x1f, 0x12); rtwdev 1320 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, RF_PATH_B, RF_LUTWD0, 0xfffff, rf_rxbb); rtwdev 1321 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, RF_PATH_B, RF_LUTWE2, 0x04, 0x00); rtwdev 1323 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, RF_PATH_A, RF_CFGCH, RFREG_MASK, rf_reg18); rtwdev 1324 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, RF_PATH_B, RF_CFGCH, RFREG_MASK, rf_reg18); rtwdev 1327 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_toggle_igi(struct rtw_dev *rtwdev) rtwdev 1331 drivers/net/wireless/realtek/rtw88/rtw8822c.c igi = rtw_read32_mask(rtwdev, REG_RXIGI, 0x7f); rtwdev 1332 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXIGI, 0x7f, igi - 2); rtwdev 1333 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXIGI, 0x7f00, igi - 2); rtwdev 1334 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXIGI, 0x7f, igi); rtwdev 1335 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXIGI, 0x7f00, igi); rtwdev 1338 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_set_channel_bb(struct rtw_dev *rtwdev, u8 channel, u8 bw, rtwdev 1342 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_clr(rtwdev, REG_BGCTRL, BITS_RX_IQ_WEIGHT); rtwdev 1343 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXCCKSEL, 0xf0000000, 0x8); rtwdev 1344 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_set(rtwdev, REG_TXF4, BIT(20)); rtwdev 1345 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_clr(rtwdev, REG_CCK_CHECK, BIT_CHECK_CCK_EN); rtwdev 1346 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_clr(rtwdev, REG_CCKTXONLY, BIT_BB_CCK_CHECK_EN); rtwdev 1347 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_CCAMSK, 0x3F000000, 0xF); rtwdev 1351 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXAGCCTL0, BITS_RXAGC_CCK, rtwdev 1353 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXAGCCTL, BITS_RXAGC_CCK, rtwdev 1355 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXAGCCTL0, BITS_RXAGC_OFDM, rtwdev 1357 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXAGCCTL, BITS_RXAGC_OFDM, rtwdev 1361 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXAGCCTL0, BITS_RXAGC_CCK, rtwdev 1363 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXAGCCTL, BITS_RXAGC_CCK, rtwdev 1365 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXAGCCTL0, BITS_RXAGC_OFDM, rtwdev 1367 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXAGCCTL, BITS_RXAGC_OFDM, rtwdev 1372 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_SCOTRK, 0xfff, 0x969); rtwdev 1374 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_SCOTRK, 0xfff, 0x96a); rtwdev 1376 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_SCOTRK, 0xfff, 0x9aa); rtwdev 1378 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXF0, MASKHWORD, 0x3da0); rtwdev 1379 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXF1, MASKDWORD, rtwdev 1381 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXF2, MASKLWORD, 0x6aa3); rtwdev 1382 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXF3, MASKHWORD, 0xaa7b); rtwdev 1383 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXF4, MASKLWORD, 0xf3d7); rtwdev 1384 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXF5, MASKDWORD, 0x0); rtwdev 1385 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXF6, MASKDWORD, rtwdev 1387 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXF7, MASKDWORD, 0xffff); rtwdev 1389 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXF0, MASKHWORD, 0x5284); rtwdev 1390 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXF1, MASKDWORD, rtwdev 1392 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXF2, MASKLWORD, 0x0a88); rtwdev 1393 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXF3, MASKHWORD, 0xacc4); rtwdev 1394 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXF4, MASKLWORD, 0xc8b2); rtwdev 1395 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXF5, MASKDWORD, rtwdev 1397 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXF6, MASKDWORD, rtwdev 1399 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXF7, MASKDWORD, rtwdev 1403 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXDFIR0, 0x70, 0x3); rtwdev 1405 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXDFIR0, 0x70, 0x1); rtwdev 1407 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_set(rtwdev, REG_CCKTXONLY, BIT_BB_CCK_CHECK_EN); rtwdev 1408 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_set(rtwdev, REG_CCK_CHECK, BIT_CHECK_CCK_EN); rtwdev 1409 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_set(rtwdev, REG_BGCTRL, BITS_RX_IQ_WEIGHT); rtwdev 1410 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_clr(rtwdev, REG_TXF4, BIT(20)); rtwdev 1411 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXCCKSEL, 0xf0000000, 0x0); rtwdev 1412 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_CCAMSK, 0x3F000000, 0x22); rtwdev 1413 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXDFIR0, 0x70, 0x3); rtwdev 1415 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXAGCCTL0, BITS_RXAGC_OFDM, rtwdev 1417 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXAGCCTL, BITS_RXAGC_OFDM, rtwdev 1420 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXAGCCTL0, BITS_RXAGC_OFDM, rtwdev 1422 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXAGCCTL, BITS_RXAGC_OFDM, rtwdev 1425 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXAGCCTL0, BITS_RXAGC_OFDM, rtwdev 1427 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXAGCCTL, BITS_RXAGC_OFDM, rtwdev 1432 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_SCOTRK, 0xfff, 0x494); rtwdev 1434 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_SCOTRK, 0xfff, 0x493); rtwdev 1436 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_SCOTRK, 0xfff, 0x453); rtwdev 1438 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_SCOTRK, 0xfff, 0x452); rtwdev 1440 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_SCOTRK, 0xfff, 0x412); rtwdev 1442 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_SCOTRK, 0xfff, 0x411); rtwdev 1447 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DFIRBW, 0x3FF0, 0x19B); rtwdev 1448 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXBWCTL, 0xf, 0x0); rtwdev 1449 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXBWCTL, 0xffc0, 0x0); rtwdev 1450 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXCLK, 0x700, 0x7); rtwdev 1451 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXCLK, 0x700000, 0x6); rtwdev 1452 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_CCK_SOURCE, BIT_NBI_EN, 0x0); rtwdev 1453 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_SBD, BITS_SUBTUNE, 0x1); rtwdev 1454 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_PT_CHSMO, BIT_PT_OPT, 0x0); rtwdev 1457 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_CCKSB, BIT(4), rtwdev 1459 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXBWCTL, 0xf, 0x5); rtwdev 1460 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXBWCTL, 0xc0, 0x0); rtwdev 1461 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXBWCTL, 0xff00, rtwdev 1463 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_CCK_SOURCE, BIT_NBI_EN, 0x1); rtwdev 1464 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_SBD, BITS_SUBTUNE, 0x1); rtwdev 1465 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_PT_CHSMO, BIT_PT_OPT, 0x1); rtwdev 1468 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXBWCTL, 0xf, 0xa); rtwdev 1469 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXBWCTL, 0xc0, 0x0); rtwdev 1470 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXBWCTL, 0xff00, rtwdev 1472 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_SBD, BITS_SUBTUNE, 0x6); rtwdev 1473 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_PT_CHSMO, BIT_PT_OPT, 0x1); rtwdev 1476 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DFIRBW, 0x3FF0, 0x2AB); rtwdev 1477 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXBWCTL, 0xf, 0x0); rtwdev 1478 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXBWCTL, 0xffc0, 0x1); rtwdev 1479 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXCLK, 0x700, 0x4); rtwdev 1480 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXCLK, 0x700000, 0x4); rtwdev 1481 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_CCK_SOURCE, BIT_NBI_EN, 0x0); rtwdev 1482 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_SBD, BITS_SUBTUNE, 0x1); rtwdev 1483 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_PT_CHSMO, BIT_PT_OPT, 0x0); rtwdev 1486 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DFIRBW, 0x3FF0, 0x2AB); rtwdev 1487 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXBWCTL, 0xf, 0x0); rtwdev 1488 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXBWCTL, 0xffc0, 0x2); rtwdev 1489 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXCLK, 0x700, 0x6); rtwdev 1490 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXCLK, 0x700000, 0x5); rtwdev 1491 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_CCK_SOURCE, BIT_NBI_EN, 0x0); rtwdev 1492 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_SBD, BITS_SUBTUNE, 0x1); rtwdev 1493 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_PT_CHSMO, BIT_PT_OPT, 0x0); rtwdev 1498 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_set_channel(struct rtw_dev *rtwdev, u8 channel, u8 bw, rtwdev 1501 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_set_channel_bb(rtwdev, channel, bw, primary_chan_idx); rtwdev 1502 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_set_channel_mac(rtwdev, channel, bw, primary_chan_idx); rtwdev 1503 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_set_channel_rf(rtwdev, channel, bw); rtwdev 1504 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_toggle_igi(rtwdev); rtwdev 1507 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_config_cck_rx_path(struct rtw_dev *rtwdev, u8 rx_path) rtwdev 1510 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_CCANRX, 0x00060000, 0x0); rtwdev 1511 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_CCANRX, 0x00600000, 0x0); rtwdev 1513 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_CCANRX, 0x00600000, 0x1); rtwdev 1514 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_CCANRX, 0x00060000, 0x1); rtwdev 1518 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXCCKSEL, 0x0f000000, 0x0); rtwdev 1520 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXCCKSEL, 0x0f000000, 0x5); rtwdev 1522 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXCCKSEL, 0x0f000000, 0x1); rtwdev 1525 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_config_ofdm_rx_path(struct rtw_dev *rtwdev, u8 rx_path) rtwdev 1528 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXFNCTL, 0x300, 0x0); rtwdev 1529 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXFNCTL, 0x600000, 0x0); rtwdev 1530 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_AGCSWSH, BIT(17), 0x0); rtwdev 1531 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_ANTWTPD, BIT(20), 0x0); rtwdev 1532 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_MRCM, BIT(24), 0x0); rtwdev 1534 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXFNCTL, 0x300, 0x1); rtwdev 1535 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXFNCTL, 0x600000, 0x1); rtwdev 1536 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_AGCSWSH, BIT(17), 0x1); rtwdev 1537 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_ANTWTPD, BIT(20), 0x1); rtwdev 1538 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_MRCM, BIT(24), 0x1); rtwdev 1541 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x824, 0x0f000000, rx_path); rtwdev 1542 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x824, 0x000f0000, rx_path); rtwdev 1545 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_config_rx_path(struct rtw_dev *rtwdev, u8 rx_path) rtwdev 1547 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_config_cck_rx_path(rtwdev, rx_path); rtwdev 1548 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_config_ofdm_rx_path(rtwdev, rx_path); rtwdev 1551 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_config_cck_tx_path(struct rtw_dev *rtwdev, u8 tx_path, rtwdev 1555 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXCCKSEL, 0xf0000000, 0x8); rtwdev 1557 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXCCKSEL, 0xf0000000, 0x4); rtwdev 1560 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXCCKSEL, 0xf0000000, 0xc); rtwdev 1562 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXCCKSEL, 0xf0000000, 0x8); rtwdev 1566 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_config_ofdm_tx_path(struct rtw_dev *rtwdev, u8 tx_path, rtwdev 1570 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_ANTMAP0, 0xff, 0x11); rtwdev 1571 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXLGMAP, 0xff, 0x0); rtwdev 1573 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_ANTMAP0, 0xff, 0x12); rtwdev 1574 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXLGMAP, 0xff, 0x0); rtwdev 1577 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_ANTMAP0, 0xff, 0x33); rtwdev 1578 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXLGMAP, 0xffff, 0x0404); rtwdev 1580 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_ANTMAP0, 0xff, 0x31); rtwdev 1581 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_TXLGMAP, 0xffff, 0x0400); rtwdev 1586 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_config_tx_path(struct rtw_dev *rtwdev, u8 tx_path, rtwdev 1589 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_config_cck_tx_path(rtwdev, tx_path, is_tx2_path); rtwdev 1590 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_config_ofdm_tx_path(rtwdev, tx_path, is_tx2_path); rtwdev 1593 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_config_trx_mode(struct rtw_dev *rtwdev, u8 tx_path, rtwdev 1597 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_ORITXCODE, MASK20BITS, 0x33312); rtwdev 1599 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_ORITXCODE, MASK20BITS, 0x11111); rtwdev 1601 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_ORITXCODE2, MASK20BITS, 0x33312); rtwdev 1603 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_ORITXCODE2, MASK20BITS, 0x11111); rtwdev 1605 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_config_rx_path(rtwdev, rx_path); rtwdev 1606 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_config_tx_path(rtwdev, tx_path, is_tx2_path); rtwdev 1608 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_toggle_igi(rtwdev); rtwdev 1611 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void query_phy_status_page0(struct rtw_dev *rtwdev, u8 *phy_status, rtwdev 1614 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_dm_info *dm_info = &rtwdev->dm_info; rtwdev 1647 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void query_phy_status_page1(struct rtw_dev *rtwdev, u8 *phy_status, rtwdev 1674 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void query_phy_status(struct rtw_dev *rtwdev, u8 *phy_status, rtwdev 1683 drivers/net/wireless/realtek/rtw88/rtw8822c.c query_phy_status_page0(rtwdev, phy_status, pkt_stat); rtwdev 1686 drivers/net/wireless/realtek/rtw88/rtw8822c.c query_phy_status_page1(rtwdev, phy_status, pkt_stat); rtwdev 1689 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_warn(rtwdev, "unused phy status page (%d)\n", page); rtwdev 1694 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_query_rx_desc(struct rtw_dev *rtwdev, u8 *rx_desc, rtwdev 1699 drivers/net/wireless/realtek/rtw88/rtw8822c.c u32 desc_sz = rtwdev->chip->rx_pkt_desc_sz; rtwdev 1728 drivers/net/wireless/realtek/rtw88/rtw8822c.c query_phy_status(rtwdev, phy_status, pkt_stat); rtwdev 1731 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_rx_fill_rx_status(rtwdev, pkt_stat, hdr, rx_status, phy_status); rtwdev 1735 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_set_write_tx_power_ref(struct rtw_dev *rtwdev, u8 *tx_pwr_ref_cck, rtwdev 1738 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 1744 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x1c90, BIT(15), 0); rtwdev 1745 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, txref_cck[path], 0x7f0000, rtwdev 1749 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x1c90, BIT(15), 0); rtwdev 1750 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, txref_ofdm[path], 0x1fc00, rtwdev 1755 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_set_tx_power_diff(struct rtw_dev *rtwdev, u8 rate, rtwdev 1772 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x1c90, BIT(15), 0x0); rtwdev 1773 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, offset_txagc + rate_idx, MASKDWORD, rtwdev 1777 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_set_tx_power_index(struct rtw_dev *rtwdev) rtwdev 1779 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_hal *hal = &rtwdev->hal; rtwdev 1789 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_set_write_tx_power_ref(rtwdev, pwr_ref_cck, pwr_ref_ofdm); rtwdev 1804 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_set_tx_power_diff(rtwdev, rate - 3, rtwdev 1810 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_cfg_ldo25(struct rtw_dev *rtwdev, bool enable) rtwdev 1814 drivers/net/wireless/realtek/rtw88/rtw8822c.c ldo_pwr = rtw_read8(rtwdev, REG_ANAPARLDO_POW_MAC); rtwdev 1816 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_ANAPARLDO_POW_MAC, ldo_pwr); rtwdev 1819 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_false_alarm_statistics(struct rtw_dev *rtwdev) rtwdev 1821 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_dm_info *dm_info = &rtwdev->dm_info; rtwdev 1830 drivers/net/wireless/realtek/rtw88/rtw8822c.c cck_enable = rtw_read32(rtwdev, REG_ENCCK) & BIT_CCK_BLK_EN; rtwdev 1831 drivers/net/wireless/realtek/rtw88/rtw8822c.c cck_fa_cnt = rtw_read16(rtwdev, REG_CCK_FACNT); rtwdev 1833 drivers/net/wireless/realtek/rtw88/rtw8822c.c ofdm_fa_cnt1 = rtw_read32(rtwdev, REG_OFDM_FACNT1); rtwdev 1834 drivers/net/wireless/realtek/rtw88/rtw8822c.c ofdm_fa_cnt2 = rtw_read32(rtwdev, REG_OFDM_FACNT2); rtwdev 1835 drivers/net/wireless/realtek/rtw88/rtw8822c.c ofdm_fa_cnt3 = rtw_read32(rtwdev, REG_OFDM_FACNT3); rtwdev 1836 drivers/net/wireless/realtek/rtw88/rtw8822c.c ofdm_fa_cnt4 = rtw_read32(rtwdev, REG_OFDM_FACNT4); rtwdev 1837 drivers/net/wireless/realtek/rtw88/rtw8822c.c ofdm_fa_cnt5 = rtw_read32(rtwdev, REG_OFDM_FACNT5); rtwdev 1856 drivers/net/wireless/realtek/rtw88/rtw8822c.c crc32_cnt = rtw_read32(rtwdev, 0x2c04); rtwdev 1859 drivers/net/wireless/realtek/rtw88/rtw8822c.c crc32_cnt = rtw_read32(rtwdev, 0x2c14); rtwdev 1862 drivers/net/wireless/realtek/rtw88/rtw8822c.c crc32_cnt = rtw_read32(rtwdev, 0x2c10); rtwdev 1865 drivers/net/wireless/realtek/rtw88/rtw8822c.c crc32_cnt = rtw_read32(rtwdev, 0x2c0c); rtwdev 1869 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_CCANRX, BIT_CCK_FA_RST, 0); rtwdev 1870 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_CCANRX, BIT_CCK_FA_RST, 2); rtwdev 1871 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_CCANRX, BIT_OFDM_FA_RST, 0); rtwdev 1872 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_CCANRX, BIT_OFDM_FA_RST, 2); rtwdev 1875 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_clr(rtwdev, REG_RX_BREAK, BIT_COM_RX_GCK_EN); rtwdev 1876 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_set(rtwdev, REG_CNT_CTRL, BIT_ALL_CNT_RST); rtwdev 1877 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_clr(rtwdev, REG_CNT_CTRL, BIT_ALL_CNT_RST); rtwdev 1878 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_set(rtwdev, REG_RX_BREAK, BIT_COM_RX_GCK_EN); rtwdev 1881 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_do_iqk(struct rtw_dev *rtwdev) rtwdev 1888 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_fw_do_iqk(rtwdev, ¶); rtwdev 1891 drivers/net/wireless/realtek/rtw88/rtw8822c.c iqk_chk = rtw_read8(rtwdev, REG_RPT_CIP); rtwdev 1896 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_IQKSTAT, 0x0); rtwdev 1898 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_dbg(rtwdev, RTW_DBG_RFK, "iqk counter=%d\n", counter); rtwdev 1902 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_coex_cfg_init(struct rtw_dev *rtwdev) rtwdev 1905 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8_set(rtwdev, REG_BCN_CTRL, BIT_EN_BCN_FUNCTION); rtwdev 1909 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8_set(rtwdev, REG_BT_TDMA_TIME, 0x05); rtwdev 1912 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_BT_STAT_CTRL, 0x1); rtwdev 1915 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_set(rtwdev, REG_GPIO_MUXCFG, BIT_BT_PTA_EN); rtwdev 1916 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_set(rtwdev, REG_GPIO_MUXCFG, BIT_BT_AOD_GPIO3); rtwdev 1919 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8_set(rtwdev, REG_QUEUE_CTRL, BIT_PTA_WL_TX_EN); rtwdev 1921 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8_clr(rtwdev, REG_QUEUE_CTRL, BIT_PTA_EDCCA_EN); rtwdev 1923 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8_set(rtwdev, REG_BT_COEX_V2, BIT_GNT_BT_POLARITY); rtwdev 1925 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8_clr(rtwdev, REG_DUMMY_PAGE4_V1, BIT_BTCCA_CTRL); rtwdev 1928 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, RF_PATH_B, 0x1, 0xfffff, 0x40000); rtwdev 1931 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_coex_cfg_gnt_fix(struct rtw_dev *rtwdev) rtwdev 1933 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 1935 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 1952 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, RF_PATH_B, 0x1, 0xfffff, rf_0x1); rtwdev 1965 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8_mask(rtwdev, 0x1c32, BIT(6), 1); rtwdev 1966 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8_mask(rtwdev, 0x1c39, BIT(4), 0); rtwdev 1967 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8_mask(rtwdev, 0x1c3b, BIT(4), 1); rtwdev 1968 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8_mask(rtwdev, 0x4160, BIT(3), 1); rtwdev 1976 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8_mask(rtwdev, 0x1860, BIT(3), 0); rtwdev 1977 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8_mask(rtwdev, 0x1ca7, BIT(3), 1); rtwdev 1979 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8_mask(rtwdev, 0x1860, BIT(3), 1); rtwdev 1983 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8_mask(rtwdev, 0x1860, BIT(3), 0); rtwdev 1985 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8_mask(rtwdev, 0x1ca7, BIT(3), 0); rtwdev 1989 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_coex_cfg_gnt_debug(struct rtw_dev *rtwdev) rtwdev 1991 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8_mask(rtwdev, 0x66, BIT(4), 0); rtwdev 1992 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8_mask(rtwdev, 0x67, BIT(0), 0); rtwdev 1993 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8_mask(rtwdev, 0x42, BIT(3), 0); rtwdev 1994 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8_mask(rtwdev, 0x65, BIT(7), 0); rtwdev 1995 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8_mask(rtwdev, 0x73, BIT(3), 0); rtwdev 1998 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_coex_cfg_rfe_type(struct rtw_dev *rtwdev) rtwdev 2000 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 2002 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 2004 drivers/net/wireless/realtek/rtw88/rtw8822c.c coex_rfe->rfe_module_type = rtwdev->efuse.rfe_option; rtwdev 2016 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_coex_write_indirect_reg(rtwdev, 0x38, BIT_LTE_COEX_EN, 0x0); rtwdev 2017 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_coex_write_indirect_reg(rtwdev, 0xa0, MASKLWORD, 0xffff); rtwdev 2018 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_coex_write_indirect_reg(rtwdev, 0xa4, MASKLWORD, 0xffff); rtwdev 2021 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_coex_cfg_wl_tx_power(struct rtw_dev *rtwdev, u8 wl_pwr) rtwdev 2023 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 2032 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_coex_cfg_wl_rx_gain(struct rtw_dev *rtwdev, bool low_gain) rtwdev 2034 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_coex *coex = &rtwdev->coex; rtwdev 2044 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, RF_PATH_A, 0xde, 0xfffff, 0x22); rtwdev 2045 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, RF_PATH_A, 0x1d, 0xfffff, 0x36); rtwdev 2046 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, RF_PATH_B, 0xde, 0xfffff, 0x22); rtwdev 2047 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, RF_PATH_B, 0x1d, 0xfffff, 0x36); rtwdev 2050 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, RF_PATH_A, 0xde, 0xfffff, 0x20); rtwdev 2051 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, RF_PATH_A, 0x1d, 0xfffff, 0x0); rtwdev 2052 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, RF_PATH_B, 0x1d, 0xfffff, 0x0); rtwdev 2062 drivers/net/wireless/realtek/rtw88/rtw8822c.c void rtw8822c_parse_tbl_dpk(struct rtw_dev *rtwdev, rtwdev 2071 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, p->addr, p->bitmask, p->data); rtwdev 2074 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dpk_set_gnt_wl(struct rtw_dev *rtwdev, bool is_before_k) rtwdev 2076 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; rtwdev 2079 drivers/net/wireless/realtek/rtw88/rtw8822c.c dpk_info->gnt_control = rtw_read32(rtwdev, 0x70); rtwdev 2080 drivers/net/wireless/realtek/rtw88/rtw8822c.c dpk_info->gnt_value = rtw_coex_read_indirect_reg(rtwdev, 0x38); rtwdev 2081 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x70, BIT(26), 0x1); rtwdev 2082 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_coex_write_indirect_reg(rtwdev, 0x38, MASKBYTE1, 0x77); rtwdev 2084 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_coex_write_indirect_reg(rtwdev, 0x38, MASKDWORD, rtwdev 2086 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, 0x70, dpk_info->gnt_control); rtwdev 2091 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_restore_registers(struct rtw_dev *rtwdev, u32 reg_num, rtwdev 2094 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_restore_reg(rtwdev, bckp, reg_num); rtwdev 2095 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0xc); rtwdev 2096 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXSRAM_CTL, BIT_DPD_CLK, 0x4); rtwdev 2100 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_backup_registers(struct rtw_dev *rtwdev, u32 *reg, rtwdev 2108 drivers/net/wireless/realtek/rtw88/rtw8822c.c bckp[i].val = rtw_read32(rtwdev, reg[i]); rtwdev 2112 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dpk_backup_rf_registers(struct rtw_dev *rtwdev, rtwdev 2119 drivers/net/wireless/realtek/rtw88/rtw8822c.c rf_reg_bak[i][RF_PATH_A] = rtw_read_rf(rtwdev, RF_PATH_A, rtwdev 2121 drivers/net/wireless/realtek/rtw88/rtw8822c.c rf_reg_bak[i][RF_PATH_B] = rtw_read_rf(rtwdev, RF_PATH_B, rtwdev 2126 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dpk_reload_rf_registers(struct rtw_dev *rtwdev, rtwdev 2133 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, RF_PATH_A, rf_reg[i], RFREG_MASK, rtwdev 2135 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, RF_PATH_B, rf_reg[i], RFREG_MASK, rtwdev 2140 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dpk_information(struct rtw_dev *rtwdev) rtwdev 2142 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; rtwdev 2146 drivers/net/wireless/realtek/rtw88/rtw8822c.c reg = rtw_read_rf(rtwdev, RF_PATH_A, 0x18, RFREG_MASK); rtwdev 2154 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dpk_rxbb_dc_cal(struct rtw_dev *rtwdev, u8 path) rtwdev 2156 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, path, 0x92, RFREG_MASK, 0x84800); rtwdev 2158 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, path, 0x92, RFREG_MASK, 0x84801); rtwdev 2160 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, path, 0x92, RFREG_MASK, 0x84800); rtwdev 2163 drivers/net/wireless/realtek/rtw88/rtw8822c.c static u8 rtw8822c_dpk_dc_corr_check(struct rtw_dev *rtwdev, u8 path) rtwdev 2168 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_RXSRAM_CTL, 0x000900f0); rtwdev 2169 drivers/net/wireless/realtek/rtw88/rtw8822c.c dc_i = (u16)rtw_read32_mask(rtwdev, REG_STAT_RPT, GENMASK(27, 16)); rtwdev 2170 drivers/net/wireless/realtek/rtw88/rtw8822c.c dc_q = (u16)rtw_read32_mask(rtwdev, REG_STAT_RPT, GENMASK(11, 0)); rtwdev 2177 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_RXSRAM_CTL, 0x000000f0); rtwdev 2178 drivers/net/wireless/realtek/rtw88/rtw8822c.c corr_idx = (u8)rtw_read32_mask(rtwdev, REG_STAT_RPT, GENMASK(7, 0)); rtwdev 2179 drivers/net/wireless/realtek/rtw88/rtw8822c.c corr_val = (u8)rtw_read32_mask(rtwdev, REG_STAT_RPT, GENMASK(15, 8)); rtwdev 2188 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dpk_tx_pause(struct rtw_dev *rtwdev) rtwdev 2193 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, 0x522, 0xff); rtwdev 2194 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x1e70, 0xf, 0x2); rtwdev 2197 drivers/net/wireless/realtek/rtw88/rtw8822c.c reg_a = (u8)rtw_read_rf(rtwdev, RF_PATH_A, 0x00, 0xf0000); rtwdev 2198 drivers/net/wireless/realtek/rtw88/rtw8822c.c reg_b = (u8)rtw_read_rf(rtwdev, RF_PATH_B, 0x00, 0xf0000); rtwdev 2204 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dpk_mac_bb_setting(struct rtw_dev *rtwdev) rtwdev 2206 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_tx_pause(rtwdev); rtwdev 2207 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_load_table(rtwdev, &rtw8822c_dpk_mac_bb_tbl); rtwdev 2210 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dpk_afe_setting(struct rtw_dev *rtwdev, bool is_do_dpk) rtwdev 2213 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_load_table(rtwdev, &rtw8822c_dpk_afe_is_dpk_tbl); rtwdev 2215 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_load_table(rtwdev, &rtw8822c_dpk_afe_no_dpk_tbl); rtwdev 2218 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dpk_pre_setting(struct rtw_dev *rtwdev) rtwdev 2222 drivers/net/wireless/realtek/rtw88/rtw8822c.c for (path = 0; path < rtwdev->hal.rf_path_num; path++) { rtwdev 2223 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, path, RF_RXAGC_OFFSET, RFREG_MASK, 0x0); rtwdev 2224 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_NCTL0, 0x8 | (path << 1)); rtwdev 2225 drivers/net/wireless/realtek/rtw88/rtw8822c.c if (rtwdev->dm_info.dpk_info.dpk_band == RTW_BAND_2G) rtwdev 2226 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_DPD_LUT3, 0x1f100000); rtwdev 2228 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_DPD_LUT3, 0x1f0d0000); rtwdev 2229 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DPD_LUT0, BIT_GLOSS_DB, 0x4); rtwdev 2230 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_IQK_CTL1, BIT_TX_CFIR, 0x3); rtwdev 2232 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0xc); rtwdev 2233 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_DPD_CTL11, 0x3b23170b); rtwdev 2234 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_DPD_CTL12, 0x775f5347); rtwdev 2237 drivers/net/wireless/realtek/rtw88/rtw8822c.c static u32 rtw8822c_dpk_rf_setting(struct rtw_dev *rtwdev, u8 path) rtwdev 2241 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, path, RF_MODE_TRXAGC, RFREG_MASK, 0x50017); rtwdev 2242 drivers/net/wireless/realtek/rtw88/rtw8822c.c ori_txbb = rtw_read_rf(rtwdev, path, RF_TX_GAIN, RFREG_MASK); rtwdev 2244 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, path, RF_DEBUG, BIT_DE_TX_GAIN, 0x1); rtwdev 2245 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, path, RF_DEBUG, BIT_DE_PWR_TRIM, 0x1); rtwdev 2246 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, path, RF_TX_GAIN_OFFSET, BIT_TX_OFFSET_VAL, 0x0); rtwdev 2247 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, path, RF_TX_GAIN, RFREG_MASK, ori_txbb); rtwdev 2249 drivers/net/wireless/realtek/rtw88/rtw8822c.c if (rtwdev->dm_info.dpk_info.dpk_band == RTW_BAND_2G) { rtwdev 2250 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, path, RF_TX_GAIN_OFFSET, BIT_LB_ATT, 0x1); rtwdev 2251 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, path, RF_RXG_GAIN, BIT_RXG_GAIN, 0x0); rtwdev 2253 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, path, RF_TXA_LB_SW, BIT_TXA_LB_ATT, 0x0); rtwdev 2254 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, path, RF_TXA_LB_SW, BIT_LB_ATT, 0x6); rtwdev 2255 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, path, RF_TXA_LB_SW, BIT_LB_SW, 0x1); rtwdev 2256 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, path, RF_RXA_MIX_GAIN, BIT_RXA_MIX_GAIN, 0); rtwdev 2259 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, path, RF_MODE_TRXAGC, BIT_RXAGC, 0xf); rtwdev 2260 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, path, RF_DEBUG, BIT_DE_TRXBW, 0x1); rtwdev 2261 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, path, RF_BW_TRXBB, BIT_BW_RXBB, 0x0); rtwdev 2263 drivers/net/wireless/realtek/rtw88/rtw8822c.c if (rtwdev->dm_info.dpk_info.dpk_bw == DPK_CHANNEL_WIDTH_80) rtwdev 2264 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, path, RF_BW_TRXBB, BIT_BW_TXBB, 0x2); rtwdev 2266 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, path, RF_BW_TRXBB, BIT_BW_TXBB, 0x1); rtwdev 2268 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, path, RF_EXT_TIA_BW, BIT(1), 0x1); rtwdev 2275 drivers/net/wireless/realtek/rtw88/rtw8822c.c static u16 rtw8822c_dpk_get_cmd(struct rtw_dev *rtwdev, u8 action, u8 path) rtwdev 2278 drivers/net/wireless/realtek/rtw88/rtw8822c.c u8 bw = rtwdev->dm_info.dpk_info.dpk_bw == DPK_CHANNEL_WIDTH_80 ? 2 : 0; rtwdev 2300 drivers/net/wireless/realtek/rtw88/rtw8822c.c static u8 rtw8822c_dpk_one_shot(struct rtw_dev *rtwdev, u8 path, u8 action) rtwdev 2305 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_set_gnt_wl(rtwdev, true); rtwdev 2308 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DPD_CTL0, BIT(12), 0x1); rtwdev 2309 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DPD_CTL0, BIT(12), 0x0); rtwdev 2310 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXSRAM_CTL, BIT_RPT_SEL, 0x0); rtwdev 2312 drivers/net/wireless/realtek/rtw88/rtw8822c.c if (!check_hw_ready(rtwdev, REG_STAT_RPT, BIT(31), 0x1)) { rtwdev 2314 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_dbg(rtwdev, RTW_DBG_RFK, "[DPK] one-shot over 20ms\n"); rtwdev 2317 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, rtwdev 2319 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_R_CONFIG, BIT_IQ_SWITCH, 0x9); rtwdev 2321 drivers/net/wireless/realtek/rtw88/rtw8822c.c dpk_cmd = rtw8822c_dpk_get_cmd(rtwdev, action, path); rtwdev 2322 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_NCTL0, dpk_cmd); rtwdev 2323 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_NCTL0, dpk_cmd + 1); rtwdev 2325 drivers/net/wireless/realtek/rtw88/rtw8822c.c if (!check_hw_ready(rtwdev, 0x2d9c, 0xff, 0x55)) { rtwdev 2327 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_dbg(rtwdev, RTW_DBG_RFK, "[DPK] one-shot over 20ms\n"); rtwdev 2329 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, rtwdev 2331 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_R_CONFIG, BIT_IQ_SWITCH, 0x0); rtwdev 2334 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_set_gnt_wl(rtwdev, false); rtwdev 2336 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, 0x1b10, 0x0); rtwdev 2341 drivers/net/wireless/realtek/rtw88/rtw8822c.c static u16 rtw8822c_dpk_dgain_read(struct rtw_dev *rtwdev, u8 path) rtwdev 2345 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0xc); rtwdev 2346 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXSRAM_CTL, 0x00ff0000, 0x0); rtwdev 2348 drivers/net/wireless/realtek/rtw88/rtw8822c.c dgain = (u16)rtw_read32_mask(rtwdev, REG_STAT_RPT, GENMASK(27, 16)); rtwdev 2353 drivers/net/wireless/realtek/rtw88/rtw8822c.c static u8 rtw8822c_dpk_thermal_read(struct rtw_dev *rtwdev, u8 path) rtwdev 2355 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, path, RF_T_METER, BIT(19), 0x1); rtwdev 2356 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, path, RF_T_METER, BIT(19), 0x0); rtwdev 2357 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, path, RF_T_METER, BIT(19), 0x1); rtwdev 2360 drivers/net/wireless/realtek/rtw88/rtw8822c.c return (u8)rtw_read_rf(rtwdev, path, RF_T_METER, 0x0007e); rtwdev 2363 drivers/net/wireless/realtek/rtw88/rtw8822c.c static u32 rtw8822c_dpk_pas_read(struct rtw_dev *rtwdev, u8 path) rtwdev 2367 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_NCTL0, 0x8 | (path << 1)); rtwdev 2368 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x1b48, BIT(14), 0x0); rtwdev 2369 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_RXSRAM_CTL, 0x00060001); rtwdev 2370 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, 0x1b4c, 0x00000000); rtwdev 2371 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, 0x1b4c, 0x00080000); rtwdev 2373 drivers/net/wireless/realtek/rtw88/rtw8822c.c q_val = rtw_read32_mask(rtwdev, REG_STAT_RPT, MASKHWORD); rtwdev 2374 drivers/net/wireless/realtek/rtw88/rtw8822c.c i_val = rtw_read32_mask(rtwdev, REG_STAT_RPT, MASKLWORD); rtwdev 2381 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, 0x1b4c, 0x00000000); rtwdev 2412 drivers/net/wireless/realtek/rtw88/rtw8822c.c static u8 rtw8822c_dpk_gainloss_result(struct rtw_dev *rtwdev, u8 path) rtwdev 2416 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0x8 | (path << 1)); rtwdev 2417 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x1b48, BIT(14), 0x1); rtwdev 2418 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_RXSRAM_CTL, 0x00060000); rtwdev 2420 drivers/net/wireless/realtek/rtw88/rtw8822c.c result = (u8)rtw_read32_mask(rtwdev, REG_STAT_RPT, 0x000000f0); rtwdev 2422 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x1b48, BIT(14), 0x0); rtwdev 2427 drivers/net/wireless/realtek/rtw88/rtw8822c.c static u8 rtw8822c_dpk_agc_gain_chk(struct rtw_dev *rtwdev, u8 path, rtwdev 2433 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_one_shot(rtwdev, path, RTW_DPK_DAGC); rtwdev 2434 drivers/net/wireless/realtek/rtw88/rtw8822c.c dgain = rtw8822c_dpk_dgain_read(rtwdev, path); rtwdev 2444 drivers/net/wireless/realtek/rtw88/rtw8822c.c static u8 rtw8822c_dpk_agc_loss_chk(struct rtw_dev *rtwdev, u8 path) rtwdev 2448 drivers/net/wireless/realtek/rtw88/rtw8822c.c loss = rtw8822c_dpk_pas_read(rtwdev, path); rtwdev 2471 drivers/net/wireless/realtek/rtw88/rtw8822c.c static u8 rtw8822c_gain_check_state(struct rtw_dev *rtwdev, rtwdev 2476 drivers/net/wireless/realtek/rtw88/rtw8822c.c data->txbb = (u8)rtw_read_rf(rtwdev, data->path, RF_TX_GAIN, rtwdev 2478 drivers/net/wireless/realtek/rtw88/rtw8822c.c data->pga = (u8)rtw_read_rf(rtwdev, data->path, RF_MODE_TRXAGC, rtwdev 2486 drivers/net/wireless/realtek/rtw88/rtw8822c.c state = rtw8822c_dpk_agc_gain_chk(rtwdev, data->path, rtwdev 2501 drivers/net/wireless/realtek/rtw88/rtw8822c.c static u8 rtw8822c_gain_large_state(struct rtw_dev *rtwdev, rtwdev 2507 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, data->path, RF_MODE_TRXAGC, BIT_RXAGC, 0xc); rtwdev 2509 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, data->path, RF_MODE_TRXAGC, BIT_RXAGC, 0x0); rtwdev 2516 drivers/net/wireless/realtek/rtw88/rtw8822c.c static u8 rtw8822c_gain_less_state(struct rtw_dev *rtwdev, rtwdev 2522 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, data->path, RF_MODE_TRXAGC, BIT_RXAGC, 0xc); rtwdev 2524 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, data->path, RF_MODE_TRXAGC, BIT_RXAGC, 0xf); rtwdev 2531 drivers/net/wireless/realtek/rtw88/rtw8822c.c static u8 rtw8822c_gl_state(struct rtw_dev *rtwdev, rtwdev 2544 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, data->path, RF_TX_GAIN, BIT_GAIN_TXBB, data->txbb); rtwdev 2550 drivers/net/wireless/realtek/rtw88/rtw8822c.c static u8 rtw8822c_gl_large_state(struct rtw_dev *rtwdev, rtwdev 2553 drivers/net/wireless/realtek/rtw88/rtw8822c.c return rtw8822c_gl_state(rtwdev, data, 1); rtwdev 2556 drivers/net/wireless/realtek/rtw88/rtw8822c.c static u8 rtw8822c_gl_less_state(struct rtw_dev *rtwdev, rtwdev 2559 drivers/net/wireless/realtek/rtw88/rtw8822c.c return rtw8822c_gl_state(rtwdev, data, 0); rtwdev 2562 drivers/net/wireless/realtek/rtw88/rtw8822c.c static u8 rtw8822c_loss_check_state(struct rtw_dev *rtwdev, rtwdev 2568 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_one_shot(rtwdev, path, RTW_DPK_GAIN_LOSS); rtwdev 2569 drivers/net/wireless/realtek/rtw88/rtw8822c.c state = rtw8822c_dpk_agc_loss_chk(rtwdev, path); rtwdev 2574 drivers/net/wireless/realtek/rtw88/rtw8822c.c static u8 (*dpk_state[])(struct rtw_dev *rtwdev, rtwdev 2580 drivers/net/wireless/realtek/rtw88/rtw8822c.c static u8 rtw8822c_dpk_pas_agc(struct rtw_dev *rtwdev, u8 path, rtwdev 2584 drivers/net/wireless/realtek/rtw88/rtw8822c.c u8 (*func)(struct rtw_dev *rtwdev, struct rtw8822c_dpk_data *data); rtwdev 2593 drivers/net/wireless/realtek/rtw88/rtw8822c.c state = func(rtwdev, &data); rtwdev 2601 drivers/net/wireless/realtek/rtw88/rtw8822c.c static bool rtw8822c_dpk_coef_iq_check(struct rtw_dev *rtwdev, rtwdev 2611 drivers/net/wireless/realtek/rtw88/rtw8822c.c static u32 rtw8822c_dpk_coef_transfer(struct rtw_dev *rtwdev) rtwdev 2616 drivers/net/wireless/realtek/rtw88/rtw8822c.c reg = rtw_read32(rtwdev, REG_STAT_RPT); rtwdev 2618 drivers/net/wireless/realtek/rtw88/rtw8822c.c coef_i = (u16)rtw_read32_mask(rtwdev, REG_STAT_RPT, MASKHWORD) & 0x1fff; rtwdev 2619 drivers/net/wireless/realtek/rtw88/rtw8822c.c coef_q = (u16)rtw_read32_mask(rtwdev, REG_STAT_RPT, MASKLWORD) & 0x1fff; rtwdev 2635 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dpk_coef_tbl_apply(struct rtw_dev *rtwdev, u8 path) rtwdev 2637 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; rtwdev 2641 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_RXSRAM_CTL, rtwdev 2643 drivers/net/wireless/realtek/rtw88/rtw8822c.c dpk_info->coef[path][i] = rtw8822c_dpk_coef_transfer(rtwdev); rtwdev 2647 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dpk_get_coef(struct rtw_dev *rtwdev, u8 path) rtwdev 2649 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_NCTL0, 0x0000000c); rtwdev 2652 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DPD_CTL0, BIT(24), 0x0); rtwdev 2653 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_DPD_CTL0_S0, 0x30000080); rtwdev 2655 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DPD_CTL0, BIT(24), 0x1); rtwdev 2656 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_DPD_CTL0_S1, 0x30000080); rtwdev 2659 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_coef_tbl_apply(rtwdev, path); rtwdev 2662 drivers/net/wireless/realtek/rtw88/rtw8822c.c static u8 rtw8822c_dpk_coef_read(struct rtw_dev *rtwdev, u8 path) rtwdev 2664 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; rtwdev 2672 drivers/net/wireless/realtek/rtw88/rtw8822c.c if (rtw8822c_dpk_coef_iq_check(rtwdev, coef_i, coef_q)) { rtwdev 2680 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dpk_coef_write(struct rtw_dev *rtwdev, u8 path, u8 result) rtwdev 2682 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; rtwdev 2687 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_NCTL0, 0x0000000c); rtwdev 2688 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_RXSRAM_CTL, 0x000000f0); rtwdev 2699 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, reg[path] + addr * 4, coef); rtwdev 2703 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dpk_fill_result(struct rtw_dev *rtwdev, u32 dpk_txagc, rtwdev 2706 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; rtwdev 2708 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0x8 | (path << 1)); rtwdev 2711 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_DPD_AGC, (u8)(dpk_txagc - 6)); rtwdev 2713 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_DPD_AGC, 0x00); rtwdev 2716 drivers/net/wireless/realtek/rtw88/rtw8822c.c dpk_info->dpk_txagc[path] = rtw_read8(rtwdev, REG_DPD_AGC); rtwdev 2718 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_coef_write(rtwdev, path, result); rtwdev 2721 drivers/net/wireless/realtek/rtw88/rtw8822c.c static u32 rtw8822c_dpk_gainloss(struct rtw_dev *rtwdev, u8 path) rtwdev 2723 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; rtwdev 2726 drivers/net/wireless/realtek/rtw88/rtw8822c.c ori_txbb = rtw8822c_dpk_rf_setting(rtwdev, path); rtwdev 2727 drivers/net/wireless/realtek/rtw88/rtw8822c.c ori_txagc = (u8)rtw_read_rf(rtwdev, path, RF_MODE_TRXAGC, BIT_TXAGC); rtwdev 2729 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_rxbb_dc_cal(rtwdev, path); rtwdev 2730 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_one_shot(rtwdev, path, RTW_DPK_DAGC); rtwdev 2731 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_dgain_read(rtwdev, path); rtwdev 2733 drivers/net/wireless/realtek/rtw88/rtw8822c.c if (rtw8822c_dpk_dc_corr_check(rtwdev, path)) { rtwdev 2734 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_rxbb_dc_cal(rtwdev, path); rtwdev 2735 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_one_shot(rtwdev, path, RTW_DPK_DAGC); rtwdev 2736 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_dc_corr_check(rtwdev, path); rtwdev 2739 drivers/net/wireless/realtek/rtw88/rtw8822c.c t1 = rtw8822c_dpk_thermal_read(rtwdev, path); rtwdev 2740 drivers/net/wireless/realtek/rtw88/rtw8822c.c tx_bb = rtw8822c_dpk_pas_agc(rtwdev, path, false, true); rtwdev 2741 drivers/net/wireless/realtek/rtw88/rtw8822c.c tx_agc_search = rtw8822c_dpk_gainloss_result(rtwdev, path); rtwdev 2748 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, path, RF_TX_GAIN, BIT_GAIN_TXBB, tx_bb); rtwdev 2752 drivers/net/wireless/realtek/rtw88/rtw8822c.c t2 = rtw8822c_dpk_thermal_read(rtwdev, path); rtwdev 2759 drivers/net/wireless/realtek/rtw88/rtw8822c.c static u8 rtw8822c_dpk_by_path(struct rtw_dev *rtwdev, u32 tx_agc, u8 path) rtwdev 2763 drivers/net/wireless/realtek/rtw88/rtw8822c.c result = rtw8822c_dpk_one_shot(rtwdev, path, RTW_DPK_DO_DPK); rtwdev 2765 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0x8 | (path << 1)); rtwdev 2767 drivers/net/wireless/realtek/rtw88/rtw8822c.c result = result | (u8)rtw_read32_mask(rtwdev, REG_DPD_CTL1_S0, BIT(26)); rtwdev 2769 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write_rf(rtwdev, path, RF_MODE_TRXAGC, RFREG_MASK, 0x33e14); rtwdev 2771 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_get_coef(rtwdev, path); rtwdev 2776 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dpk_cal_gs(struct rtw_dev *rtwdev, u8 path) rtwdev 2778 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; rtwdev 2781 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0x8 | (path << 1)); rtwdev 2782 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_IQK_CTL1, BIT_BYPASS_DPD, 0x0); rtwdev 2783 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_IQK_CTL1, BIT_TX_CFIR, 0x0); rtwdev 2784 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_R_CONFIG, BIT_IQ_SWITCH, 0x9); rtwdev 2785 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_R_CONFIG, BIT_INNER_LB, 0x1); rtwdev 2786 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0xc); rtwdev 2787 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXSRAM_CTL, BIT_DPD_CLK, 0xf); rtwdev 2790 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DPD_CTL0_S0, BIT_GS_PWSF, rtwdev 2792 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DPD_CTL1_S0, BIT_DPD_EN, 0x1); rtwdev 2794 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DPD_CTL0_S1, BIT_GS_PWSF, rtwdev 2796 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DPD_CTL1_S1, BIT_DPD_EN, 0x1); rtwdev 2800 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_DPD_CTL16, 0x80001310); rtwdev 2801 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_DPD_CTL16, 0x00001310); rtwdev 2802 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_DPD_CTL16, 0x810000db); rtwdev 2803 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_DPD_CTL16, 0x010000db); rtwdev 2804 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_DPD_CTL16, 0x0000b428); rtwdev 2805 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_DPD_CTL15, rtwdev 2808 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_DPD_CTL16, 0x8200190c); rtwdev 2809 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_DPD_CTL16, 0x0200190c); rtwdev 2810 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_DPD_CTL16, 0x8301ee14); rtwdev 2811 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_DPD_CTL16, 0x0301ee14); rtwdev 2812 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_DPD_CTL16, 0x0000b428); rtwdev 2813 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_DPD_CTL15, rtwdev 2817 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DPD_CTL0, MASKBYTE3, 0x8 | path); rtwdev 2819 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_one_shot(rtwdev, path, RTW_DPK_CAL_PWR); rtwdev 2821 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DPD_CTL15, MASKBYTE3, 0x0); rtwdev 2822 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0x8 | (path << 1)); rtwdev 2823 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_R_CONFIG, BIT_IQ_SWITCH, 0x0); rtwdev 2824 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_R_CONFIG, BIT_INNER_LB, 0x0); rtwdev 2825 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0xc); rtwdev 2828 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DPD_CTL0_S0, BIT_GS_PWSF, 0x5b); rtwdev 2830 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DPD_CTL0_S1, BIT_GS_PWSF, 0x5b); rtwdev 2832 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_RXSRAM_CTL, BIT_RPT_SEL, 0x0); rtwdev 2834 drivers/net/wireless/realtek/rtw88/rtw8822c.c tmp_gs = (u16)rtw_read32_mask(rtwdev, REG_STAT_RPT, BIT_RPT_DGAIN); rtwdev 2839 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DPD_CTL0_S0, BIT_GS_PWSF, tmp_gs); rtwdev 2841 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DPD_CTL0_S1, BIT_GS_PWSF, tmp_gs); rtwdev 2846 drivers/net/wireless/realtek/rtw88/rtw8822c.c void rtw8822c_dpk_cal_coef1(struct rtw_dev *rtwdev) rtwdev 2848 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; rtwdev 2853 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0x0000000c); rtwdev 2854 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_RXSRAM_CTL, 0x000000f0); rtwdev 2855 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_NCTL0, 0x00001148); rtwdev 2856 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_NCTL0, 0x00001149); rtwdev 2858 drivers/net/wireless/realtek/rtw88/rtw8822c.c check_hw_ready(rtwdev, 0x2d9c, MASKBYTE0, 0x55); rtwdev 2860 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, 0x1b10, 0x0); rtwdev 2861 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0x0000000c); rtwdev 2863 drivers/net/wireless/realtek/rtw88/rtw8822c.c for (path = 0; path < rtwdev->hal.rf_path_num; path++) { rtwdev 2866 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x1b18 + offset[path], MASKHWORD, rtwdev 2868 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DPD_CTL0_S0 + offset[path], rtwdev 2870 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DPD_CTL0_S0 + offset[path], rtwdev 2872 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DPD_CTL0_S0 + offset[path], rtwdev 2874 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DPD_CTL1_S0 + offset[path], rtwdev 2879 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dpk_on(struct rtw_dev *rtwdev, u8 path) rtwdev 2881 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; rtwdev 2883 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_one_shot(rtwdev, path, RTW_DPK_DPK_ON); rtwdev 2885 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0x8 | (path << 1)); rtwdev 2886 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_IQK_CTL1, BIT_TX_CFIR, 0x0); rtwdev 2889 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_cal_gs(rtwdev, path); rtwdev 2892 drivers/net/wireless/realtek/rtw88/rtw8822c.c static bool rtw8822c_dpk_check_pass(struct rtw_dev *rtwdev, bool is_fail, rtwdev 2898 drivers/net/wireless/realtek/rtw88/rtw8822c.c if (rtw8822c_dpk_coef_read(rtwdev, path)) rtwdev 2906 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_fill_result(rtwdev, dpk_txagc, path, result); rtwdev 2911 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dpk_result_reset(struct rtw_dev *rtwdev) rtwdev 2913 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; rtwdev 2916 drivers/net/wireless/realtek/rtw88/rtw8822c.c for (path = 0; path < rtwdev->hal.rf_path_num; path++) { rtwdev 2918 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, rtwdev 2920 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x1b58, 0x0000007f, 0x0); rtwdev 2926 drivers/net/wireless/realtek/rtw88/rtw8822c.c dpk_info->thermal_dpk[path] = rtw8822c_dpk_thermal_read(rtwdev, rtwdev 2931 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dpk_calibrate(struct rtw_dev *rtwdev, u8 path) rtwdev 2933 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; rtwdev 2937 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_dbg(rtwdev, RTW_DBG_RFK, "[DPK] s%d dpk start\n", path); rtwdev 2939 drivers/net/wireless/realtek/rtw88/rtw8822c.c dpk_txagc = rtw8822c_dpk_gainloss(rtwdev, path); rtwdev 2941 drivers/net/wireless/realtek/rtw88/rtw8822c.c dpk_fail = rtw8822c_dpk_by_path(rtwdev, dpk_txagc, path); rtwdev 2943 drivers/net/wireless/realtek/rtw88/rtw8822c.c if (!rtw8822c_dpk_check_pass(rtwdev, dpk_fail, dpk_txagc, path)) rtwdev 2944 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_err(rtwdev, "failed to do dpk calibration\n"); rtwdev 2946 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_dbg(rtwdev, RTW_DBG_RFK, "[DPK] s%d dpk finish\n", path); rtwdev 2952 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dpk_path_select(struct rtw_dev *rtwdev) rtwdev 2954 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_calibrate(rtwdev, RF_PATH_A); rtwdev 2955 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_calibrate(rtwdev, RF_PATH_B); rtwdev 2956 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_on(rtwdev, RF_PATH_A); rtwdev 2957 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_on(rtwdev, RF_PATH_B); rtwdev 2958 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_cal_coef1(rtwdev); rtwdev 2961 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dpk_enable_disable(struct rtw_dev *rtwdev) rtwdev 2963 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; rtwdev 2966 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0xc); rtwdev 2968 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DPD_CTL1_S0, BIT_DPD_EN, rtwdev 2970 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DPD_CTL1_S1, BIT_DPD_EN, rtwdev 2974 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DPD_CTL1_S0, mask, 0x0); rtwdev 2975 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_DPD_CTL0_S0, dpk_info->dpk_gs[RF_PATH_A]); rtwdev 2978 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DPD_CTL1_S1, mask, 0x0); rtwdev 2979 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_DPD_CTL0_S1, dpk_info->dpk_gs[RF_PATH_B]); rtwdev 2983 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_dpk_reload_data(struct rtw_dev *rtwdev) rtwdev 2985 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; rtwdev 2993 drivers/net/wireless/realtek/rtw88/rtw8822c.c for (path = 0; path < rtwdev->hal.rf_path_num; path++) { rtwdev 2994 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, rtwdev 2997 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_DPD_LUT3, 0x1f100000); rtwdev 2999 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32(rtwdev, REG_DPD_LUT3, 0x1f0d0000); rtwdev 3001 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write8(rtwdev, REG_DPD_AGC, dpk_info->dpk_txagc[path]); rtwdev 3003 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_coef_write(rtwdev, path, rtwdev 3006 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_one_shot(rtwdev, path, RTW_DPK_DPK_ON); rtwdev 3008 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0xc); rtwdev 3011 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DPD_CTL0_S0, BIT_GS_PWSF, rtwdev 3014 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_DPD_CTL0_S1, BIT_GS_PWSF, rtwdev 3017 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_cal_coef1(rtwdev); rtwdev 3020 drivers/net/wireless/realtek/rtw88/rtw8822c.c static bool rtw8822c_dpk_reload(struct rtw_dev *rtwdev) rtwdev 3022 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; rtwdev 3027 drivers/net/wireless/realtek/rtw88/rtw8822c.c channel = (u8)(rtw_read_rf(rtwdev, RF_PATH_A, 0x18, RFREG_MASK) & 0xff); rtwdev 3030 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_dbg(rtwdev, RTW_DBG_RFK, rtwdev 3032 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_reload_data(rtwdev); rtwdev 3039 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_do_dpk(struct rtw_dev *rtwdev) rtwdev 3041 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; rtwdev 3053 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_dbg(rtwdev, RTW_DBG_RFK, "[DPK] Skip DPK due to DPD PWR off\n"); rtwdev 3055 drivers/net/wireless/realtek/rtw88/rtw8822c.c } else if (rtw8822c_dpk_reload(rtwdev)) { rtwdev 3062 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_information(rtwdev); rtwdev 3064 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_backup_registers(rtwdev, bb_reg, DPK_BB_REG_NUM, bckp); rtwdev 3065 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_backup_rf_registers(rtwdev, rf_reg, rf_reg_backup); rtwdev 3067 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_mac_bb_setting(rtwdev); rtwdev 3068 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_afe_setting(rtwdev, true); rtwdev 3069 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_pre_setting(rtwdev); rtwdev 3070 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_result_reset(rtwdev); rtwdev 3071 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_path_select(rtwdev); rtwdev 3072 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_afe_setting(rtwdev, false); rtwdev 3073 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_enable_disable(rtwdev); rtwdev 3075 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_reload_rf_registers(rtwdev, rf_reg, rf_reg_backup); rtwdev 3076 drivers/net/wireless/realtek/rtw88/rtw8822c.c for (path = 0; path < rtwdev->hal.rf_path_num; path++) rtwdev 3077 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_rxbb_dc_cal(rtwdev, path); rtwdev 3078 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_dpk_restore_registers(rtwdev, DPK_BB_REG_NUM, bckp); rtwdev 3081 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_phy_calibration(struct rtw_dev *rtwdev) rtwdev 3083 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_do_iqk(rtwdev); rtwdev 3084 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_do_dpk(rtwdev); rtwdev 3087 drivers/net/wireless/realtek/rtw88/rtw8822c.c void rtw8822c_dpk_track(struct rtw_dev *rtwdev) rtwdev 3089 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_dpk_info *dpk_info = &rtwdev->dm_info.dpk_info; rtwdev 3098 drivers/net/wireless/realtek/rtw88/rtw8822c.c thermal_value[path] = rtw8822c_dpk_thermal_read(rtwdev, path); rtwdev 3110 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, rtwdev 3112 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, 0x1b58, GENMASK(6, 0), rtwdev 3136 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_phy_cck_pd_set_reg(struct rtw_dev *rtwdev, rtwdev 3144 drivers/net/wireless/realtek/rtw88/rtw8822c.c pd = rtw_read32_mask(rtwdev, rtwdev 3147 drivers/net/wireless/realtek/rtw88/rtw8822c.c cs = rtw_read32_mask(rtwdev, rtwdev 3158 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, rtwdev 3162 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw_write32_mask(rtwdev, rtwdev 3168 drivers/net/wireless/realtek/rtw88/rtw8822c.c static void rtw8822c_phy_cck_pd_set(struct rtw_dev *rtwdev, u8 new_lvl) rtwdev 3170 drivers/net/wireless/realtek/rtw88/rtw8822c.c struct rtw_dm_info *dm_info = &rtwdev->dm_info; rtwdev 3176 drivers/net/wireless/realtek/rtw88/rtw8822c.c nrx = (u8)rtw_read32_mask(rtwdev, 0x1a2c, 0x60000); rtwdev 3177 drivers/net/wireless/realtek/rtw88/rtw8822c.c bw = (u8)rtw_read32_mask(rtwdev, 0x9b0, 0xc); rtwdev 3187 drivers/net/wireless/realtek/rtw88/rtw8822c.c rtw8822c_phy_cck_pd_set_reg(rtwdev, rtwdev 118 drivers/net/wireless/realtek/rtw88/rtw8822c.h void rtw8822c_parse_tbl_dpk(struct rtw_dev *rtwdev, rtwdev 9 drivers/net/wireless/realtek/rtw88/rx.c void rtw_rx_stats(struct rtw_dev *rtwdev, struct ieee80211_vif *vif, rtwdev 22 drivers/net/wireless/realtek/rtw88/rx.c rtwdev->stats.rx_unicast += skb->len; rtwdev 23 drivers/net/wireless/realtek/rtw88/rx.c rtwdev->stats.rx_cnt++; rtwdev 29 drivers/net/wireless/realtek/rtw88/rx.c rtw_leave_lps_irqsafe(rtwdev, rtwvif); rtwdev 36 drivers/net/wireless/realtek/rtw88/rx.c struct rtw_dev *rtwdev; rtwdev 48 drivers/net/wireless/realtek/rtw88/rx.c struct rtw_dev *rtwdev = iter_data->rtwdev; rtwdev 56 drivers/net/wireless/realtek/rtw88/rx.c sta = ieee80211_find_sta_by_ifaddr(rtwdev->hw, hdr->addr2, rtwdev 68 drivers/net/wireless/realtek/rtw88/rx.c static void rtw_rx_addr_match(struct rtw_dev *rtwdev, rtwdev 78 drivers/net/wireless/realtek/rtw88/rx.c data.rtwdev = rtwdev; rtwdev 83 drivers/net/wireless/realtek/rtw88/rx.c rtw_iterate_vifs_atomic(rtwdev, rtw_rx_addr_match_iter, &data); rtwdev 86 drivers/net/wireless/realtek/rtw88/rx.c void rtw_rx_fill_rx_status(struct rtw_dev *rtwdev, rtwdev 92 drivers/net/wireless/realtek/rtw88/rx.c struct ieee80211_hw *hw = rtwdev->hw; rtwdev 150 drivers/net/wireless/realtek/rtw88/rx.c for (path = 0; path < rtwdev->hal.rf_path_num; path++) { rtwdev 155 drivers/net/wireless/realtek/rtw88/rx.c rtw_rx_addr_match(rtwdev, pkt_stat, hdr); rtwdev 33 drivers/net/wireless/realtek/rtw88/rx.h void rtw_rx_stats(struct rtw_dev *rtwdev, struct ieee80211_vif *vif, rtwdev 35 drivers/net/wireless/realtek/rtw88/rx.h void rtw_rx_fill_rx_status(struct rtw_dev *rtwdev, rtwdev 22 drivers/net/wireless/realtek/rtw88/sec.c void rtw_sec_write_cam(struct rtw_dev *rtwdev, rtwdev 73 drivers/net/wireless/realtek/rtw88/sec.c rtw_write32(rtwdev, RTW_SEC_WRITE_REG, content); rtwdev 74 drivers/net/wireless/realtek/rtw88/sec.c rtw_write32(rtwdev, RTW_SEC_CMD_REG, command); rtwdev 78 drivers/net/wireless/realtek/rtw88/sec.c void rtw_sec_clear_cam(struct rtw_dev *rtwdev, rtwdev 95 drivers/net/wireless/realtek/rtw88/sec.c rtw_write32(rtwdev, RTW_SEC_WRITE_REG, 0); rtwdev 96 drivers/net/wireless/realtek/rtw88/sec.c rtw_write32(rtwdev, RTW_SEC_CMD_REG, command); rtwdev 99 drivers/net/wireless/realtek/rtw88/sec.c void rtw_sec_enable_sec_engine(struct rtw_dev *rtwdev) rtwdev 101 drivers/net/wireless/realtek/rtw88/sec.c struct rtw_sec_desc *sec = &rtwdev->sec; rtwdev 108 drivers/net/wireless/realtek/rtw88/sec.c ctrl_reg = rtw_read16(rtwdev, REG_CR); rtwdev 110 drivers/net/wireless/realtek/rtw88/sec.c rtw_write16(rtwdev, REG_CR, ctrl_reg); rtwdev 112 drivers/net/wireless/realtek/rtw88/sec.c sec_config = rtw_read16(rtwdev, RTW_SEC_CONFIG); rtwdev 119 drivers/net/wireless/realtek/rtw88/sec.c rtw_write16(rtwdev, RTW_SEC_CONFIG, sec_config); rtwdev 29 drivers/net/wireless/realtek/rtw88/sec.h void rtw_sec_write_cam(struct rtw_dev *rtwdev, rtwdev 34 drivers/net/wireless/realtek/rtw88/sec.h void rtw_sec_clear_cam(struct rtw_dev *rtwdev, rtwdev 37 drivers/net/wireless/realtek/rtw88/sec.h void rtw_sec_enable_sec_engine(struct rtw_dev *rtwdev); rtwdev 11 drivers/net/wireless/realtek/rtw88/tx.c void rtw_tx_stats(struct rtw_dev *rtwdev, struct ieee80211_vif *vif, rtwdev 24 drivers/net/wireless/realtek/rtw88/tx.c rtwdev->stats.tx_unicast += skb->len; rtwdev 25 drivers/net/wireless/realtek/rtw88/tx.c rtwdev->stats.tx_cnt++; rtwdev 31 drivers/net/wireless/realtek/rtw88/tx.c rtw_leave_lps_irqsafe(rtwdev, rtwvif); rtwdev 80 drivers/net/wireless/realtek/rtw88/tx.c static u8 get_highest_ht_tx_rate(struct rtw_dev *rtwdev, rtwdev 85 drivers/net/wireless/realtek/rtw88/tx.c if (rtwdev->hal.rf_type == RF_2T2R && sta->ht_cap.mcs.rx_mask[1] != 0) rtwdev 93 drivers/net/wireless/realtek/rtw88/tx.c static u8 get_highest_vht_tx_rate(struct rtw_dev *rtwdev, rtwdev 96 drivers/net/wireless/realtek/rtw88/tx.c struct rtw_efuse *efuse = &rtwdev->efuse; rtwdev 134 drivers/net/wireless/realtek/rtw88/tx.c static void rtw_tx_report_enable(struct rtw_dev *rtwdev, rtwdev 137 drivers/net/wireless/realtek/rtw88/tx.c struct rtw_tx_report *tx_report = &rtwdev->tx_report; rtwdev 149 drivers/net/wireless/realtek/rtw88/tx.c struct rtw_dev *rtwdev = from_timer(rtwdev, t, tx_report.purge_timer); rtwdev 150 drivers/net/wireless/realtek/rtw88/tx.c struct rtw_tx_report *tx_report = &rtwdev->tx_report; rtwdev 163 drivers/net/wireless/realtek/rtw88/tx.c void rtw_tx_report_enqueue(struct rtw_dev *rtwdev, struct sk_buff *skb, u8 sn) rtwdev 165 drivers/net/wireless/realtek/rtw88/tx.c struct rtw_tx_report *tx_report = &rtwdev->tx_report; rtwdev 181 drivers/net/wireless/realtek/rtw88/tx.c static void rtw_tx_report_tx_status(struct rtw_dev *rtwdev, rtwdev 193 drivers/net/wireless/realtek/rtw88/tx.c ieee80211_tx_status_irqsafe(rtwdev->hw, skb); rtwdev 196 drivers/net/wireless/realtek/rtw88/tx.c void rtw_tx_report_handle(struct rtw_dev *rtwdev, struct sk_buff *skb) rtwdev 198 drivers/net/wireless/realtek/rtw88/tx.c struct rtw_tx_report *tx_report = &rtwdev->tx_report; rtwdev 215 drivers/net/wireless/realtek/rtw88/tx.c rtw_tx_report_tx_status(rtwdev, cur, st == 0); rtwdev 222 drivers/net/wireless/realtek/rtw88/tx.c static void rtw_tx_mgmt_pkt_info_update(struct rtw_dev *rtwdev, rtwdev 232 drivers/net/wireless/realtek/rtw88/tx.c static void rtw_tx_data_pkt_info_update(struct rtw_dev *rtwdev, rtwdev 264 drivers/net/wireless/realtek/rtw88/tx.c rate = get_highest_vht_tx_rate(rtwdev, sta); rtwdev 266 drivers/net/wireless/realtek/rtw88/tx.c rate = get_highest_ht_tx_rate(rtwdev, sta); rtwdev 291 drivers/net/wireless/realtek/rtw88/tx.c void rtw_tx_pkt_info_update(struct rtw_dev *rtwdev, rtwdev 296 drivers/net/wireless/realtek/rtw88/tx.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 311 drivers/net/wireless/realtek/rtw88/tx.c rtw_tx_mgmt_pkt_info_update(rtwdev, pkt_info, control, skb); rtwdev 313 drivers/net/wireless/realtek/rtw88/tx.c rtw_tx_data_pkt_info_update(rtwdev, pkt_info, control, skb); rtwdev 336 drivers/net/wireless/realtek/rtw88/tx.c rtw_tx_report_enable(rtwdev, pkt_info); rtwdev 346 drivers/net/wireless/realtek/rtw88/tx.c rtw_tx_stats(rtwdev, vif, skb); rtwdev 349 drivers/net/wireless/realtek/rtw88/tx.c void rtw_rsvd_page_pkt_info_update(struct rtw_dev *rtwdev, rtwdev 353 drivers/net/wireless/realtek/rtw88/tx.c struct rtw_chip_info *chip = rtwdev->chip; rtwdev 78 drivers/net/wireless/realtek/rtw88/tx.h void rtw_tx_pkt_info_update(struct rtw_dev *rtwdev, rtwdev 83 drivers/net/wireless/realtek/rtw88/tx.h void rtw_tx_report_enqueue(struct rtw_dev *rtwdev, struct sk_buff *skb, u8 sn); rtwdev 84 drivers/net/wireless/realtek/rtw88/tx.h void rtw_tx_report_handle(struct rtw_dev *rtwdev, struct sk_buff *skb); rtwdev 85 drivers/net/wireless/realtek/rtw88/tx.h void rtw_rsvd_page_pkt_info_update(struct rtw_dev *rtwdev, rtwdev 9 drivers/net/wireless/realtek/rtw88/util.c bool check_hw_ready(struct rtw_dev *rtwdev, u32 addr, u32 mask, u32 target) rtwdev 14 drivers/net/wireless/realtek/rtw88/util.c if (rtw_read32_mask(rtwdev, addr, mask) == target) rtwdev 23 drivers/net/wireless/realtek/rtw88/util.c bool ltecoex_read_reg(struct rtw_dev *rtwdev, u16 offset, u32 *val) rtwdev 25 drivers/net/wireless/realtek/rtw88/util.c if (!check_hw_ready(rtwdev, LTECOEX_ACCESS_CTRL, LTECOEX_READY, 1)) rtwdev 28 drivers/net/wireless/realtek/rtw88/util.c rtw_write32(rtwdev, LTECOEX_ACCESS_CTRL, 0x800F0000 | offset); rtwdev 29 drivers/net/wireless/realtek/rtw88/util.c *val = rtw_read32(rtwdev, LTECOEX_READ_DATA); rtwdev 34 drivers/net/wireless/realtek/rtw88/util.c bool ltecoex_reg_write(struct rtw_dev *rtwdev, u16 offset, u32 value) rtwdev 36 drivers/net/wireless/realtek/rtw88/util.c if (!check_hw_ready(rtwdev, LTECOEX_ACCESS_CTRL, LTECOEX_READY, 1)) rtwdev 39 drivers/net/wireless/realtek/rtw88/util.c rtw_write32(rtwdev, LTECOEX_WRITE_DATA, value); rtwdev 40 drivers/net/wireless/realtek/rtw88/util.c rtw_write32(rtwdev, LTECOEX_ACCESS_CTRL, 0xC00F0000 | offset); rtwdev 45 drivers/net/wireless/realtek/rtw88/util.c void rtw_restore_reg(struct rtw_dev *rtwdev, rtwdev 60 drivers/net/wireless/realtek/rtw88/util.c rtw_write8(rtwdev, reg, (u8)val); rtwdev 63 drivers/net/wireless/realtek/rtw88/util.c rtw_write16(rtwdev, reg, (u16)val); rtwdev 66 drivers/net/wireless/realtek/rtw88/util.c rtw_write32(rtwdev, reg, (u32)val); rtwdev 10 drivers/net/wireless/realtek/rtw88/util.h #define rtw_iterate_vifs(rtwdev, iterator, data) \ rtwdev 11 drivers/net/wireless/realtek/rtw88/util.h ieee80211_iterate_active_interfaces(rtwdev->hw, \ rtwdev 13 drivers/net/wireless/realtek/rtw88/util.h #define rtw_iterate_vifs_atomic(rtwdev, iterator, data) \ rtwdev 14 drivers/net/wireless/realtek/rtw88/util.h ieee80211_iterate_active_interfaces_atomic(rtwdev->hw, \ rtwdev 16 drivers/net/wireless/realtek/rtw88/util.h #define rtw_iterate_stas_atomic(rtwdev, iterator, data) \ rtwdev 17 drivers/net/wireless/realtek/rtw88/util.h ieee80211_iterate_stations_atomic(rtwdev->hw, iterator, data)