1e57b7901SRyder Lee /* SPDX-License-Identifier: ISC */ 2e57b7901SRyder Lee /* Copyright (C) 2020 MediaTek Inc. */ 3e57b7901SRyder Lee 4e57b7901SRyder Lee #ifndef __MT7915_MCU_H 5e57b7901SRyder Lee #define __MT7915_MCU_H 6e57b7901SRyder Lee 75562d5f6SLorenzo Bianconi #include "../mt76_connac_mcu.h" 85562d5f6SLorenzo Bianconi 9aadf0953SShayne Chen enum { 10aadf0953SShayne Chen MCU_ATE_SET_TRX = 0x1, 11ed3c9072SShayne Chen MCU_ATE_SET_FREQ_OFFSET = 0xa, 12c2d3b192SShayne Chen MCU_ATE_SET_SLOT_TIME = 0x13, 138efe387cSShayne Chen MCU_ATE_CLEAN_TXQUEUE = 0x1c, 14aadf0953SShayne Chen }; 15aadf0953SShayne Chen 1634b877d9SRyder Lee struct mt7915_mcu_thermal_ctrl { 1734b877d9SRyder Lee u8 ctrl_id; 1834b877d9SRyder Lee u8 band_idx; 1934b877d9SRyder Lee union { 2034b877d9SRyder Lee struct { 2134b877d9SRyder Lee u8 protect_type; /* 1: duty admit, 2: radio off */ 2234b877d9SRyder Lee u8 trigger_type; /* 0: low, 1: high */ 2334b877d9SRyder Lee } __packed type; 2434b877d9SRyder Lee struct { 2534b877d9SRyder Lee u8 duty_level; /* level 0~3 */ 2634b877d9SRyder Lee u8 duty_cycle; 2734b877d9SRyder Lee } __packed duty; 2834b877d9SRyder Lee }; 2934b877d9SRyder Lee } __packed; 3034b877d9SRyder Lee 3134b877d9SRyder Lee struct mt7915_mcu_thermal_notify { 32fc6ee71aSLorenzo Bianconi struct mt76_connac2_mcu_rxd rxd; 3334b877d9SRyder Lee 3434b877d9SRyder Lee struct mt7915_mcu_thermal_ctrl ctrl; 3534b877d9SRyder Lee __le32 temperature; 3634b877d9SRyder Lee u8 rsv[8]; 3734b877d9SRyder Lee } __packed; 3834b877d9SRyder Lee 39b6d20ce4SRyder Lee struct mt7915_mcu_csa_notify { 40fc6ee71aSLorenzo Bianconi struct mt76_connac2_mcu_rxd rxd; 41b6d20ce4SRyder Lee 42b6d20ce4SRyder Lee u8 omac_idx; 43b6d20ce4SRyder Lee u8 csa_count; 44b6d20ce4SRyder Lee u8 band_idx; 45b6d20ce4SRyder Lee u8 rsv; 46b6d20ce4SRyder Lee } __packed; 47b6d20ce4SRyder Lee 4832406ca4SRyder Lee struct mt7915_mcu_bcc_notify { 49fc6ee71aSLorenzo Bianconi struct mt76_connac2_mcu_rxd rxd; 5032406ca4SRyder Lee 5132406ca4SRyder Lee u8 band_idx; 5232406ca4SRyder Lee u8 omac_idx; 5332406ca4SRyder Lee u8 cca_count; 5432406ca4SRyder Lee u8 rsv; 5532406ca4SRyder Lee } __packed; 5632406ca4SRyder Lee 57e57b7901SRyder Lee struct mt7915_mcu_rdd_report { 58fc6ee71aSLorenzo Bianconi struct mt76_connac2_mcu_rxd rxd; 59e57b7901SRyder Lee 60b6d20ce4SRyder Lee u8 band_idx; 61e57b7901SRyder Lee u8 long_detected; 62e57b7901SRyder Lee u8 constant_prf_detected; 63e57b7901SRyder Lee u8 staggered_prf_detected; 64e57b7901SRyder Lee u8 radar_type_idx; 65e57b7901SRyder Lee u8 periodic_pulse_num; 66e57b7901SRyder Lee u8 long_pulse_num; 67e57b7901SRyder Lee u8 hw_pulse_num; 68e57b7901SRyder Lee 69e57b7901SRyder Lee u8 out_lpn; 70e57b7901SRyder Lee u8 out_spn; 71e57b7901SRyder Lee u8 out_crpn; 72e57b7901SRyder Lee u8 out_crpw; 73e57b7901SRyder Lee u8 out_crbn; 74e57b7901SRyder Lee u8 out_stgpn; 75e57b7901SRyder Lee u8 out_stgpw; 76e57b7901SRyder Lee 77e57b7901SRyder Lee u8 rsv; 78e57b7901SRyder Lee 79e57b7901SRyder Lee __le32 out_pri_const; 80e57b7901SRyder Lee __le32 out_pri_stg[3]; 81e57b7901SRyder Lee 82e57b7901SRyder Lee struct { 83e57b7901SRyder Lee __le32 start; 84e57b7901SRyder Lee __le16 pulse_width; 85e57b7901SRyder Lee __le16 pulse_power; 86e57b7901SRyder Lee u8 mdrdy_flag; 87e57b7901SRyder Lee u8 rsv[3]; 88e57b7901SRyder Lee } long_pulse[32]; 89e57b7901SRyder Lee 90e57b7901SRyder Lee struct { 91e57b7901SRyder Lee __le32 start; 92e57b7901SRyder Lee __le16 pulse_width; 93e57b7901SRyder Lee __le16 pulse_power; 94e57b7901SRyder Lee u8 mdrdy_flag; 95e57b7901SRyder Lee u8 rsv[3]; 96e57b7901SRyder Lee } periodic_pulse[32]; 97e57b7901SRyder Lee 98e57b7901SRyder Lee struct { 99e57b7901SRyder Lee __le32 start; 100e57b7901SRyder Lee __le16 pulse_width; 101e57b7901SRyder Lee __le16 pulse_power; 102e57b7901SRyder Lee u8 sc_pass; 103e57b7901SRyder Lee u8 sw_reset; 104e57b7901SRyder Lee u8 mdrdy_flag; 105e57b7901SRyder Lee u8 tx_active; 106e57b7901SRyder Lee } hw_pulse[32]; 107e57b7901SRyder Lee } __packed; 108e57b7901SRyder Lee 10939cdf080SLorenzo Bianconi struct mt7915_mcu_background_chain_ctrl { 11039cdf080SLorenzo Bianconi u8 chan; /* primary channel */ 11139cdf080SLorenzo Bianconi u8 central_chan; /* central channel */ 11239cdf080SLorenzo Bianconi u8 bw; 11339cdf080SLorenzo Bianconi u8 tx_stream; 11439cdf080SLorenzo Bianconi u8 rx_stream; 11539cdf080SLorenzo Bianconi 11639cdf080SLorenzo Bianconi u8 monitor_chan; /* monitor channel */ 11739cdf080SLorenzo Bianconi u8 monitor_central_chan;/* monitor central channel */ 11839cdf080SLorenzo Bianconi u8 monitor_bw; 11939cdf080SLorenzo Bianconi u8 monitor_tx_stream; 12039cdf080SLorenzo Bianconi u8 monitor_rx_stream; 12139cdf080SLorenzo Bianconi 12239cdf080SLorenzo Bianconi u8 scan_mode; /* 0: ScanStop 12339cdf080SLorenzo Bianconi * 1: ScanStart 12439cdf080SLorenzo Bianconi * 2: ScanRunning 12539cdf080SLorenzo Bianconi */ 12639cdf080SLorenzo Bianconi u8 band_idx; /* DBDC */ 12739cdf080SLorenzo Bianconi u8 monitor_scan_type; 12839cdf080SLorenzo Bianconi u8 band; /* 0: 2.4GHz, 1: 5GHz */ 12939cdf080SLorenzo Bianconi u8 rsv[2]; 13039cdf080SLorenzo Bianconi } __packed; 13139cdf080SLorenzo Bianconi 1323dc00ecfSRyder Lee struct mt7915_mcu_sr_ctrl { 1333dc00ecfSRyder Lee u8 action; 1343dc00ecfSRyder Lee u8 argnum; 1353dc00ecfSRyder Lee u8 band_idx; 1363dc00ecfSRyder Lee u8 status; 1373dc00ecfSRyder Lee u8 drop_ta_idx; 1383dc00ecfSRyder Lee u8 sta_idx; /* 256 sta */ 1393dc00ecfSRyder Lee u8 rsv[2]; 1403dc00ecfSRyder Lee __le32 val; 1413dc00ecfSRyder Lee } __packed; 1423dc00ecfSRyder Lee 14326f18380SShayne Chen struct mt7915_mcu_eeprom { 14426f18380SShayne Chen u8 buffer_mode; 14526f18380SShayne Chen u8 format; 14626f18380SShayne Chen __le16 len; 14726f18380SShayne Chen } __packed; 14826f18380SShayne Chen 149e57b7901SRyder Lee struct mt7915_mcu_eeprom_info { 150e57b7901SRyder Lee __le32 addr; 151e57b7901SRyder Lee __le32 valid; 152e57b7901SRyder Lee u8 data[16]; 153e57b7901SRyder Lee } __packed; 154e57b7901SRyder Lee 15511553d88SFelix Fietkau struct mt7915_mcu_phy_rx_info { 15611553d88SFelix Fietkau u8 category; 15711553d88SFelix Fietkau u8 rate; 15811553d88SFelix Fietkau u8 mode; 15911553d88SFelix Fietkau u8 nsts; 16011553d88SFelix Fietkau u8 gi; 16111553d88SFelix Fietkau u8 coding; 16211553d88SFelix Fietkau u8 stbc; 16311553d88SFelix Fietkau u8 bw; 16411553d88SFelix Fietkau }; 16511553d88SFelix Fietkau 16665430028SRyder Lee struct mt7915_mcu_mib { 16765430028SRyder Lee __le32 band; 16865430028SRyder Lee __le32 offs; 16965430028SRyder Lee __le64 data; 17065430028SRyder Lee } __packed; 17165430028SRyder Lee 17265430028SRyder Lee enum mt7915_chan_mib_offs { 173417a4534SBo Jiao /* mt7915 */ 17465430028SRyder Lee MIB_TX_TIME = 81, 17565430028SRyder Lee MIB_RX_TIME, 176417a4534SBo Jiao MIB_OBSS_AIRTIME = 86, 177b0bfa005SRyder Lee MIB_NON_WIFI_TIME, 178b0bfa005SRyder Lee MIB_TXOP_INIT_COUNT, 179b0bfa005SRyder Lee 180417a4534SBo Jiao /* mt7916 */ 181417a4534SBo Jiao MIB_TX_TIME_V2 = 6, 182417a4534SBo Jiao MIB_RX_TIME_V2 = 8, 183b0bfa005SRyder Lee MIB_OBSS_AIRTIME_V2 = 490, 184b0bfa005SRyder Lee MIB_NON_WIFI_TIME_V2 18565430028SRyder Lee }; 18665430028SRyder Lee 1877ff903bcSShayne Chen struct edca { 1887ff903bcSShayne Chen u8 queue; 1897ff903bcSShayne Chen u8 set; 1907ff903bcSShayne Chen u8 aifs; 1917ff903bcSShayne Chen u8 cw_min; 1927ff903bcSShayne Chen __le16 cw_max; 1937ff903bcSShayne Chen __le16 txop; 1947ff903bcSShayne Chen }; 1957ff903bcSShayne Chen 1967ff903bcSShayne Chen struct mt7915_mcu_tx { 1977ff903bcSShayne Chen u8 total; 1987ff903bcSShayne Chen u8 action; 1997ff903bcSShayne Chen u8 valid; 2007ff903bcSShayne Chen u8 mode; 2017ff903bcSShayne Chen 2027ff903bcSShayne Chen struct edca edca[IEEE80211_NUM_ACS]; 2037ff903bcSShayne Chen } __packed; 2047ff903bcSShayne Chen 2051966a507SMeiChia Chiu struct mt7915_mcu_muru_stats { 2061966a507SMeiChia Chiu __le32 event_id; 2071966a507SMeiChia Chiu struct { 2081966a507SMeiChia Chiu __le32 cck_cnt; 2091966a507SMeiChia Chiu __le32 ofdm_cnt; 2101966a507SMeiChia Chiu __le32 htmix_cnt; 2111966a507SMeiChia Chiu __le32 htgf_cnt; 2121966a507SMeiChia Chiu __le32 vht_su_cnt; 2131966a507SMeiChia Chiu __le32 vht_2mu_cnt; 2141966a507SMeiChia Chiu __le32 vht_3mu_cnt; 2151966a507SMeiChia Chiu __le32 vht_4mu_cnt; 2161966a507SMeiChia Chiu __le32 he_su_cnt; 2171966a507SMeiChia Chiu __le32 he_ext_su_cnt; 2181966a507SMeiChia Chiu __le32 he_2ru_cnt; 2191966a507SMeiChia Chiu __le32 he_2mu_cnt; 2201966a507SMeiChia Chiu __le32 he_3ru_cnt; 2211966a507SMeiChia Chiu __le32 he_3mu_cnt; 2221966a507SMeiChia Chiu __le32 he_4ru_cnt; 2231966a507SMeiChia Chiu __le32 he_4mu_cnt; 2241966a507SMeiChia Chiu __le32 he_5to8ru_cnt; 2251966a507SMeiChia Chiu __le32 he_9to16ru_cnt; 2261966a507SMeiChia Chiu __le32 he_gtr16ru_cnt; 2271966a507SMeiChia Chiu } dl; 2281966a507SMeiChia Chiu 2291966a507SMeiChia Chiu struct { 2301966a507SMeiChia Chiu __le32 hetrig_su_cnt; 2311966a507SMeiChia Chiu __le32 hetrig_2ru_cnt; 2321966a507SMeiChia Chiu __le32 hetrig_3ru_cnt; 2331966a507SMeiChia Chiu __le32 hetrig_4ru_cnt; 2341966a507SMeiChia Chiu __le32 hetrig_5to8ru_cnt; 2351966a507SMeiChia Chiu __le32 hetrig_9to16ru_cnt; 2361966a507SMeiChia Chiu __le32 hetrig_gtr16ru_cnt; 2371966a507SMeiChia Chiu __le32 hetrig_2mu_cnt; 2381966a507SMeiChia Chiu __le32 hetrig_3mu_cnt; 2391966a507SMeiChia Chiu __le32 hetrig_4mu_cnt; 2401966a507SMeiChia Chiu } ul; 2411966a507SMeiChia Chiu }; 2421966a507SMeiChia Chiu 2437ff903bcSShayne Chen #define WMM_AIFS_SET BIT(0) 2447ff903bcSShayne Chen #define WMM_CW_MIN_SET BIT(1) 2457ff903bcSShayne Chen #define WMM_CW_MAX_SET BIT(2) 2467ff903bcSShayne Chen #define WMM_TXOP_SET BIT(3) 2477ff903bcSShayne Chen #define WMM_PARAM_SET GENMASK(3, 0) 2487ff903bcSShayne Chen 249e57b7901SRyder Lee enum { 2509b121acdSShayne Chen MCU_FW_LOG_WM, 2519b121acdSShayne Chen MCU_FW_LOG_WA, 2529b121acdSShayne Chen MCU_FW_LOG_TO_HOST, 2539b121acdSShayne Chen }; 254c203dd62SFelix Fietkau 255f1fd2caeSFelix Fietkau enum { 256179090a5SLorenzo Bianconi MCU_TWT_AGRT_ADD, 257179090a5SLorenzo Bianconi MCU_TWT_AGRT_MODIFY, 258179090a5SLorenzo Bianconi MCU_TWT_AGRT_DELETE, 259179090a5SLorenzo Bianconi MCU_TWT_AGRT_TEARDOWN, 260179090a5SLorenzo Bianconi MCU_TWT_AGRT_GET_TSF, 261179090a5SLorenzo Bianconi }; 262179090a5SLorenzo Bianconi 263179090a5SLorenzo Bianconi enum { 264f1fd2caeSFelix Fietkau MCU_WA_PARAM_CMD_QUERY, 265f1fd2caeSFelix Fietkau MCU_WA_PARAM_CMD_SET, 266f1fd2caeSFelix Fietkau MCU_WA_PARAM_CMD_CAPABILITY, 267f1fd2caeSFelix Fietkau MCU_WA_PARAM_CMD_DEBUG, 268f1fd2caeSFelix Fietkau }; 269f1fd2caeSFelix Fietkau 270f1fd2caeSFelix Fietkau enum { 27190f5daeaSShayne Chen MCU_WA_PARAM_PDMA_RX = 0x04, 27290f5daeaSShayne Chen MCU_WA_PARAM_CPU_UTIL = 0x0b, 273f1fd2caeSFelix Fietkau MCU_WA_PARAM_RED = 0x0e, 274f1fd2caeSFelix Fietkau }; 275f1fd2caeSFelix Fietkau 2768f058354SRyder Lee enum mcu_mmps_mode { 2778f058354SRyder Lee MCU_MMPS_STATIC, 2788f058354SRyder Lee MCU_MMPS_DYNAMIC, 2798f058354SRyder Lee MCU_MMPS_RSV, 2808f058354SRyder Lee MCU_MMPS_DISABLE, 2818f058354SRyder Lee }; 2828f058354SRyder Lee 283e57b7901SRyder Lee struct bss_info_bmc_rate { 284e57b7901SRyder Lee __le16 tag; 285e57b7901SRyder Lee __le16 len; 286e57b7901SRyder Lee __le16 bc_trans; 287e57b7901SRyder Lee __le16 mc_trans; 288e57b7901SRyder Lee u8 short_preamble; 289e57b7901SRyder Lee u8 rsv[7]; 290e57b7901SRyder Lee } __packed; 291e57b7901SRyder Lee 292e57b7901SRyder Lee struct bss_info_ra { 293e57b7901SRyder Lee __le16 tag; 294e57b7901SRyder Lee __le16 len; 295e57b7901SRyder Lee u8 op_mode; 296e57b7901SRyder Lee u8 adhoc_en; 297e57b7901SRyder Lee u8 short_preamble; 298e57b7901SRyder Lee u8 tx_streams; 299e57b7901SRyder Lee u8 rx_streams; 300e57b7901SRyder Lee u8 algo; 301e57b7901SRyder Lee u8 force_sgi; 302e57b7901SRyder Lee u8 force_gf; 303e57b7901SRyder Lee u8 ht_mode; 304e57b7901SRyder Lee u8 has_20_sta; /* Check if any sta support GF. */ 305e57b7901SRyder Lee u8 bss_width_trigger_events; 306e57b7901SRyder Lee u8 vht_nss_cap; 307e57b7901SRyder Lee u8 vht_bw_signal; /* not use */ 308e57b7901SRyder Lee u8 vht_force_sgi; /* not use */ 309e57b7901SRyder Lee u8 se_off; 310e57b7901SRyder Lee u8 antenna_idx; 311e57b7901SRyder Lee u8 train_up_rule; 312e57b7901SRyder Lee u8 rsv[3]; 313e57b7901SRyder Lee unsigned short train_up_high_thres; 314e57b7901SRyder Lee short train_up_rule_rssi; 315e57b7901SRyder Lee unsigned short low_traffic_thres; 316e57b7901SRyder Lee __le16 max_phyrate; 317e57b7901SRyder Lee __le32 phy_cap; 318e57b7901SRyder Lee __le32 interval; 319e57b7901SRyder Lee __le32 fast_interval; 320e57b7901SRyder Lee } __packed; 321e57b7901SRyder Lee 322b443e55fSRyder Lee struct bss_info_hw_amsdu { 323b443e55fSRyder Lee __le16 tag; 324b443e55fSRyder Lee __le16 len; 325b443e55fSRyder Lee __le32 cmp_bitmap_0; 326b443e55fSRyder Lee __le32 cmp_bitmap_1; 327b443e55fSRyder Lee __le16 trig_thres; 328b443e55fSRyder Lee u8 enable; 329b443e55fSRyder Lee u8 rsv; 330b443e55fSRyder Lee } __packed; 331b443e55fSRyder Lee 332b4b9f0a3SLorenzo Bianconi struct bss_info_color { 333b4b9f0a3SLorenzo Bianconi __le16 tag; 334b4b9f0a3SLorenzo Bianconi __le16 len; 335b4b9f0a3SLorenzo Bianconi u8 disable; 336b4b9f0a3SLorenzo Bianconi u8 color; 337b4b9f0a3SLorenzo Bianconi u8 rsv[2]; 338b4b9f0a3SLorenzo Bianconi } __packed; 339b4b9f0a3SLorenzo Bianconi 3406094f86fSRyder Lee struct bss_info_he { 3416094f86fSRyder Lee __le16 tag; 3426094f86fSRyder Lee __le16 len; 3436094f86fSRyder Lee u8 he_pe_duration; 3446094f86fSRyder Lee u8 vht_op_info_present; 3456094f86fSRyder Lee __le16 he_rts_thres; 3466094f86fSRyder Lee __le16 max_nss_mcs[CMD_HE_MCS_BW_NUM]; 3476094f86fSRyder Lee u8 rsv[6]; 3486094f86fSRyder Lee } __packed; 3496094f86fSRyder Lee 350e57b7901SRyder Lee struct bss_info_bcn { 351e57b7901SRyder Lee __le16 tag; 352e57b7901SRyder Lee __le16 len; 353e57b7901SRyder Lee u8 ver; 354e57b7901SRyder Lee u8 enable; 355e57b7901SRyder Lee __le16 sub_ntlv; 356e57b7901SRyder Lee } __packed __aligned(4); 357e57b7901SRyder Lee 358b4b9f0a3SLorenzo Bianconi struct bss_info_bcn_cntdwn { 359e57b7901SRyder Lee __le16 tag; 360e57b7901SRyder Lee __le16 len; 361e57b7901SRyder Lee u8 cnt; 362e57b7901SRyder Lee u8 rsv[3]; 363e57b7901SRyder Lee } __packed __aligned(4); 364e57b7901SRyder Lee 365e57b7901SRyder Lee struct bss_info_bcn_mbss { 366e57b7901SRyder Lee #define MAX_BEACON_NUM 32 367e57b7901SRyder Lee __le16 tag; 368e57b7901SRyder Lee __le16 len; 369e57b7901SRyder Lee __le32 bitmap; 370e57b7901SRyder Lee __le16 offset[MAX_BEACON_NUM]; 371e57b7901SRyder Lee u8 rsv[8]; 372e57b7901SRyder Lee } __packed __aligned(4); 373e57b7901SRyder Lee 374e57b7901SRyder Lee struct bss_info_bcn_cont { 375e57b7901SRyder Lee __le16 tag; 376e57b7901SRyder Lee __le16 len; 377e57b7901SRyder Lee __le16 tim_ofs; 378e57b7901SRyder Lee __le16 csa_ofs; 379e57b7901SRyder Lee __le16 bcc_ofs; 380e57b7901SRyder Lee __le16 pkt_len; 381e57b7901SRyder Lee } __packed __aligned(4); 382e57b7901SRyder Lee 383869f0646SMeiChia Chiu struct bss_info_inband_discovery { 384869f0646SMeiChia Chiu __le16 tag; 385869f0646SMeiChia Chiu __le16 len; 386869f0646SMeiChia Chiu u8 tx_type; 387869f0646SMeiChia Chiu u8 tx_mode; 388869f0646SMeiChia Chiu u8 tx_interval; 389869f0646SMeiChia Chiu u8 enable; 390869f0646SMeiChia Chiu __le16 rsv; 391869f0646SMeiChia Chiu __le16 prob_rsp_len; 392869f0646SMeiChia Chiu } __packed __aligned(4); 393869f0646SMeiChia Chiu 394e57b7901SRyder Lee enum { 395e57b7901SRyder Lee BSS_INFO_BCN_CSA, 396e57b7901SRyder Lee BSS_INFO_BCN_BCC, 397e57b7901SRyder Lee BSS_INFO_BCN_MBSSID, 398e57b7901SRyder Lee BSS_INFO_BCN_CONTENT, 399869f0646SMeiChia Chiu BSS_INFO_BCN_DISCOV, 400e57b7901SRyder Lee BSS_INFO_BCN_MAX 401e57b7901SRyder Lee }; 402e57b7901SRyder Lee 403e57b7901SRyder Lee enum { 40470fd1333SRyder Lee RATE_PARAM_FIXED = 3, 4058f058354SRyder Lee RATE_PARAM_MMPS_UPDATE = 5, 40670fd1333SRyder Lee RATE_PARAM_FIXED_HE_LTF = 7, 40770fd1333SRyder Lee RATE_PARAM_FIXED_MCS, 40870fd1333SRyder Lee RATE_PARAM_FIXED_GI = 11, 40970fd1333SRyder Lee RATE_PARAM_AUTO = 20, 4107a9a957bSShayne Chen RATE_PARAM_SPE_UPDATE = 22, 41170fd1333SRyder Lee }; 41270fd1333SRyder Lee 4139fac3c81SRyder Lee #define RATE_CFG_MCS GENMASK(3, 0) 4149fac3c81SRyder Lee #define RATE_CFG_NSS GENMASK(7, 4) 4159fac3c81SRyder Lee #define RATE_CFG_GI GENMASK(11, 8) 4169fac3c81SRyder Lee #define RATE_CFG_BW GENMASK(15, 12) 4179fac3c81SRyder Lee #define RATE_CFG_STBC GENMASK(19, 16) 4189fac3c81SRyder Lee #define RATE_CFG_LDPC GENMASK(23, 20) 4199fac3c81SRyder Lee #define RATE_CFG_PHY_TYPE GENMASK(27, 24) 4204d242332SRyder Lee #define RATE_CFG_HE_LTF GENMASK(31, 28) 4219fac3c81SRyder Lee 42289029a85SRyder Lee enum { 423*66b181b8SRyder Lee TX_POWER_LIMIT_ENABLE, 424*66b181b8SRyder Lee TX_POWER_LIMIT_TABLE = 0x4, 425*66b181b8SRyder Lee TX_POWER_LIMIT_INFO = 0x7, 426*66b181b8SRyder Lee TX_POWER_LIMIT_FRAME = 0x11, 427*66b181b8SRyder Lee TX_POWER_LIMIT_FRAME_MIN = 0x12, 428*66b181b8SRyder Lee }; 429*66b181b8SRyder Lee 430*66b181b8SRyder Lee enum { 4313dc00ecfSRyder Lee SPR_ENABLE = 0x1, 4323dc00ecfSRyder Lee SPR_ENABLE_SD = 0x3, 4333dc00ecfSRyder Lee SPR_ENABLE_MODE = 0x5, 4343dc00ecfSRyder Lee SPR_ENABLE_DPD = 0x23, 4353dc00ecfSRyder Lee SPR_ENABLE_TX = 0x25, 4363dc00ecfSRyder Lee SPR_SET_SRG_BITMAP = 0x80, 4373dc00ecfSRyder Lee SPR_SET_PARAM = 0xc2, 4383dc00ecfSRyder Lee SPR_SET_SIGA = 0xdc, 4393dc00ecfSRyder Lee }; 4403dc00ecfSRyder Lee 4413dc00ecfSRyder Lee enum { 44234b877d9SRyder Lee THERMAL_PROTECT_PARAMETER_CTRL, 44334b877d9SRyder Lee THERMAL_PROTECT_BASIC_INFO, 44434b877d9SRyder Lee THERMAL_PROTECT_ENABLE, 44534b877d9SRyder Lee THERMAL_PROTECT_DISABLE, 44634b877d9SRyder Lee THERMAL_PROTECT_DUTY_CONFIG, 44734b877d9SRyder Lee THERMAL_PROTECT_MECH_INFO, 44834b877d9SRyder Lee THERMAL_PROTECT_DUTY_INFO, 44934b877d9SRyder Lee THERMAL_PROTECT_STATE_ACT, 45034b877d9SRyder Lee }; 45134b877d9SRyder Lee 45234b877d9SRyder Lee enum { 453fd843822SRyder Lee MT_BF_SOUNDING_ON = 1, 454fd843822SRyder Lee MT_BF_TYPE_UPDATE = 20, 455fd843822SRyder Lee MT_BF_MODULE_UPDATE = 25 456fd843822SRyder Lee }; 457fd843822SRyder Lee 458e5a9f383SShayne Chen enum { 459e5a9f383SShayne Chen MURU_SET_ARB_OP_MODE = 14, 460e5a9f383SShayne Chen MURU_SET_PLATFORM_TYPE = 25, 461e5a9f383SShayne Chen }; 462e5a9f383SShayne Chen 463e5a9f383SShayne Chen enum { 464e5a9f383SShayne Chen MURU_PLATFORM_TYPE_PERF_LEVEL_1 = 1, 465e5a9f383SShayne Chen MURU_PLATFORM_TYPE_PERF_LEVEL_2, 466e5a9f383SShayne Chen }; 467e5a9f383SShayne Chen 4681966a507SMeiChia Chiu /* tx cmd tx statistics */ 4691966a507SMeiChia Chiu enum { 4701966a507SMeiChia Chiu MURU_SET_TXC_TX_STATS_EN = 150, 4711966a507SMeiChia Chiu MURU_GET_TXC_TX_STATS = 151, 4721966a507SMeiChia Chiu }; 4731966a507SMeiChia Chiu 474bdd2ca78SRyder Lee enum { 475bdd2ca78SRyder Lee SER_QUERY, 476bdd2ca78SRyder Lee /* recovery */ 477bdd2ca78SRyder Lee SER_SET_RECOVER_L1, 478bdd2ca78SRyder Lee SER_SET_RECOVER_L2, 479bdd2ca78SRyder Lee SER_SET_RECOVER_L3_RX_ABORT, 480bdd2ca78SRyder Lee SER_SET_RECOVER_L3_TX_ABORT, 481bdd2ca78SRyder Lee SER_SET_RECOVER_L3_TX_DISABLE, 482bdd2ca78SRyder Lee SER_SET_RECOVER_L3_BF, 483b662b71aSRyder Lee SER_SET_RECOVER_FULL, 484b662b71aSRyder Lee SER_SET_SYSTEM_ASSERT, 485bdd2ca78SRyder Lee /* action */ 486bdd2ca78SRyder Lee SER_ENABLE = 2, 487bdd2ca78SRyder Lee SER_RECOVER 488bdd2ca78SRyder Lee }; 489bdd2ca78SRyder Lee 49018fced20SMeiChia Chiu #define MT7915_MAX_BEACON_SIZE 512 49118fced20SMeiChia Chiu #define MT7915_MAX_INBAND_FRAME_SIZE 256 49218fced20SMeiChia Chiu #define MT7915_MAX_BSS_OFFLOAD_SIZE (MT7915_MAX_BEACON_SIZE + \ 49318fced20SMeiChia Chiu MT7915_MAX_INBAND_FRAME_SIZE + \ 49418fced20SMeiChia Chiu MT7915_BEACON_UPDATE_SIZE) 49518fced20SMeiChia Chiu 4963e68af62SRyder Lee #define MT7915_BSS_UPDATE_MAX_SIZE (sizeof(struct sta_req_hdr) + \ 4973e68af62SRyder Lee sizeof(struct bss_info_omac) + \ 4983e68af62SRyder Lee sizeof(struct bss_info_basic) +\ 4993e68af62SRyder Lee sizeof(struct bss_info_rf_ch) +\ 5003e68af62SRyder Lee sizeof(struct bss_info_ra) + \ 501b443e55fSRyder Lee sizeof(struct bss_info_hw_amsdu) +\ 5023e68af62SRyder Lee sizeof(struct bss_info_he) + \ 5033e68af62SRyder Lee sizeof(struct bss_info_bmc_rate) +\ 504802145e2SRyder Lee sizeof(struct bss_info_ext_bss)) 5053e68af62SRyder Lee 506e57b7901SRyder Lee #define MT7915_BEACON_UPDATE_SIZE (sizeof(struct sta_req_hdr) + \ 507b4b9f0a3SLorenzo Bianconi sizeof(struct bss_info_bcn_cntdwn) + \ 508e57b7901SRyder Lee sizeof(struct bss_info_bcn_mbss) + \ 509869f0646SMeiChia Chiu sizeof(struct bss_info_bcn_cont) + \ 510869f0646SMeiChia Chiu sizeof(struct bss_info_inband_discovery)) 511e57b7901SRyder Lee 512e57b7901SRyder Lee #endif 513