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 { 32bb6fe2b9SGustavo A. R. Silva struct mt76_connac2_mcu_rxd_hdr 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 { 40bb6fe2b9SGustavo A. R. Silva struct mt76_connac2_mcu_rxd_hdr 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 { 49bb6fe2b9SGustavo A. R. Silva struct mt76_connac2_mcu_rxd_hdr 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 { 58bb6fe2b9SGustavo A. R. Silva struct mt76_connac2_mcu_rxd_hdr rxd; 59e57b7901SRyder Lee 60*758e0cc3SStanleyYP Wang u8 rdd_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 187e3296759SRyder Lee struct mt7915_mcu_txpower_sku { 188e3296759SRyder Lee u8 format_id; 189e3296759SRyder Lee u8 limit_type; 190e3296759SRyder Lee u8 band_idx; 191e3296759SRyder Lee s8 txpower_sku[MT7915_SKU_RATE_NUM]; 192e3296759SRyder Lee } __packed; 193e3296759SRyder Lee 1947ff903bcSShayne Chen struct edca { 1957ff903bcSShayne Chen u8 queue; 1967ff903bcSShayne Chen u8 set; 1977ff903bcSShayne Chen u8 aifs; 1987ff903bcSShayne Chen u8 cw_min; 1997ff903bcSShayne Chen __le16 cw_max; 2007ff903bcSShayne Chen __le16 txop; 2017ff903bcSShayne Chen }; 2027ff903bcSShayne Chen 2037ff903bcSShayne Chen struct mt7915_mcu_tx { 2047ff903bcSShayne Chen u8 total; 2057ff903bcSShayne Chen u8 action; 2067ff903bcSShayne Chen u8 valid; 2077ff903bcSShayne Chen u8 mode; 2087ff903bcSShayne Chen 2097ff903bcSShayne Chen struct edca edca[IEEE80211_NUM_ACS]; 2107ff903bcSShayne Chen } __packed; 2117ff903bcSShayne Chen 2121966a507SMeiChia Chiu struct mt7915_mcu_muru_stats { 2131966a507SMeiChia Chiu __le32 event_id; 2141966a507SMeiChia Chiu struct { 2151966a507SMeiChia Chiu __le32 cck_cnt; 2161966a507SMeiChia Chiu __le32 ofdm_cnt; 2171966a507SMeiChia Chiu __le32 htmix_cnt; 2181966a507SMeiChia Chiu __le32 htgf_cnt; 2191966a507SMeiChia Chiu __le32 vht_su_cnt; 2201966a507SMeiChia Chiu __le32 vht_2mu_cnt; 2211966a507SMeiChia Chiu __le32 vht_3mu_cnt; 2221966a507SMeiChia Chiu __le32 vht_4mu_cnt; 2231966a507SMeiChia Chiu __le32 he_su_cnt; 2241966a507SMeiChia Chiu __le32 he_ext_su_cnt; 2251966a507SMeiChia Chiu __le32 he_2ru_cnt; 2261966a507SMeiChia Chiu __le32 he_2mu_cnt; 2271966a507SMeiChia Chiu __le32 he_3ru_cnt; 2281966a507SMeiChia Chiu __le32 he_3mu_cnt; 2291966a507SMeiChia Chiu __le32 he_4ru_cnt; 2301966a507SMeiChia Chiu __le32 he_4mu_cnt; 2311966a507SMeiChia Chiu __le32 he_5to8ru_cnt; 2321966a507SMeiChia Chiu __le32 he_9to16ru_cnt; 2331966a507SMeiChia Chiu __le32 he_gtr16ru_cnt; 2341966a507SMeiChia Chiu } dl; 2351966a507SMeiChia Chiu 2361966a507SMeiChia Chiu struct { 2371966a507SMeiChia Chiu __le32 hetrig_su_cnt; 2381966a507SMeiChia Chiu __le32 hetrig_2ru_cnt; 2391966a507SMeiChia Chiu __le32 hetrig_3ru_cnt; 2401966a507SMeiChia Chiu __le32 hetrig_4ru_cnt; 2411966a507SMeiChia Chiu __le32 hetrig_5to8ru_cnt; 2421966a507SMeiChia Chiu __le32 hetrig_9to16ru_cnt; 2431966a507SMeiChia Chiu __le32 hetrig_gtr16ru_cnt; 2441966a507SMeiChia Chiu __le32 hetrig_2mu_cnt; 2451966a507SMeiChia Chiu __le32 hetrig_3mu_cnt; 2461966a507SMeiChia Chiu __le32 hetrig_4mu_cnt; 2471966a507SMeiChia Chiu } ul; 2481966a507SMeiChia Chiu }; 2491966a507SMeiChia Chiu 2507ff903bcSShayne Chen #define WMM_AIFS_SET BIT(0) 2517ff903bcSShayne Chen #define WMM_CW_MIN_SET BIT(1) 2527ff903bcSShayne Chen #define WMM_CW_MAX_SET BIT(2) 2537ff903bcSShayne Chen #define WMM_TXOP_SET BIT(3) 2547ff903bcSShayne Chen #define WMM_PARAM_SET GENMASK(3, 0) 2557ff903bcSShayne Chen 256e57b7901SRyder Lee enum { 2579b121acdSShayne Chen MCU_FW_LOG_WM, 2589b121acdSShayne Chen MCU_FW_LOG_WA, 2599b121acdSShayne Chen MCU_FW_LOG_TO_HOST, 2609b121acdSShayne Chen }; 261c203dd62SFelix Fietkau 262f1fd2caeSFelix Fietkau enum { 263179090a5SLorenzo Bianconi MCU_TWT_AGRT_ADD, 264179090a5SLorenzo Bianconi MCU_TWT_AGRT_MODIFY, 265179090a5SLorenzo Bianconi MCU_TWT_AGRT_DELETE, 266179090a5SLorenzo Bianconi MCU_TWT_AGRT_TEARDOWN, 267179090a5SLorenzo Bianconi MCU_TWT_AGRT_GET_TSF, 268179090a5SLorenzo Bianconi }; 269179090a5SLorenzo Bianconi 270179090a5SLorenzo Bianconi enum { 271f1fd2caeSFelix Fietkau MCU_WA_PARAM_CMD_QUERY, 272f1fd2caeSFelix Fietkau MCU_WA_PARAM_CMD_SET, 273f1fd2caeSFelix Fietkau MCU_WA_PARAM_CMD_CAPABILITY, 274f1fd2caeSFelix Fietkau MCU_WA_PARAM_CMD_DEBUG, 275f1fd2caeSFelix Fietkau }; 276f1fd2caeSFelix Fietkau 277f1fd2caeSFelix Fietkau enum { 27890f5daeaSShayne Chen MCU_WA_PARAM_PDMA_RX = 0x04, 27990f5daeaSShayne Chen MCU_WA_PARAM_CPU_UTIL = 0x0b, 280f1fd2caeSFelix Fietkau MCU_WA_PARAM_RED = 0x0e, 2817576a1c4SPeter Chiu MCU_WA_PARAM_RED_SETTING = 0x40, 282f1fd2caeSFelix Fietkau }; 283f1fd2caeSFelix Fietkau 2848f058354SRyder Lee enum mcu_mmps_mode { 2858f058354SRyder Lee MCU_MMPS_STATIC, 2868f058354SRyder Lee MCU_MMPS_DYNAMIC, 2878f058354SRyder Lee MCU_MMPS_RSV, 2888f058354SRyder Lee MCU_MMPS_DISABLE, 2898f058354SRyder Lee }; 2908f058354SRyder Lee 291e57b7901SRyder Lee struct bss_info_bmc_rate { 292e57b7901SRyder Lee __le16 tag; 293e57b7901SRyder Lee __le16 len; 294e57b7901SRyder Lee __le16 bc_trans; 295e57b7901SRyder Lee __le16 mc_trans; 296e57b7901SRyder Lee u8 short_preamble; 297e57b7901SRyder Lee u8 rsv[7]; 298e57b7901SRyder Lee } __packed; 299e57b7901SRyder Lee 300e57b7901SRyder Lee struct bss_info_ra { 301e57b7901SRyder Lee __le16 tag; 302e57b7901SRyder Lee __le16 len; 303e57b7901SRyder Lee u8 op_mode; 304e57b7901SRyder Lee u8 adhoc_en; 305e57b7901SRyder Lee u8 short_preamble; 306e57b7901SRyder Lee u8 tx_streams; 307e57b7901SRyder Lee u8 rx_streams; 308e57b7901SRyder Lee u8 algo; 309e57b7901SRyder Lee u8 force_sgi; 310e57b7901SRyder Lee u8 force_gf; 311e57b7901SRyder Lee u8 ht_mode; 312e57b7901SRyder Lee u8 has_20_sta; /* Check if any sta support GF. */ 313e57b7901SRyder Lee u8 bss_width_trigger_events; 314e57b7901SRyder Lee u8 vht_nss_cap; 315e57b7901SRyder Lee u8 vht_bw_signal; /* not use */ 316e57b7901SRyder Lee u8 vht_force_sgi; /* not use */ 317e57b7901SRyder Lee u8 se_off; 318e57b7901SRyder Lee u8 antenna_idx; 319e57b7901SRyder Lee u8 train_up_rule; 320e57b7901SRyder Lee u8 rsv[3]; 321e57b7901SRyder Lee unsigned short train_up_high_thres; 322e57b7901SRyder Lee short train_up_rule_rssi; 323e57b7901SRyder Lee unsigned short low_traffic_thres; 324e57b7901SRyder Lee __le16 max_phyrate; 325e57b7901SRyder Lee __le32 phy_cap; 326e57b7901SRyder Lee __le32 interval; 327e57b7901SRyder Lee __le32 fast_interval; 328e57b7901SRyder Lee } __packed; 329e57b7901SRyder Lee 330b443e55fSRyder Lee struct bss_info_hw_amsdu { 331b443e55fSRyder Lee __le16 tag; 332b443e55fSRyder Lee __le16 len; 333b443e55fSRyder Lee __le32 cmp_bitmap_0; 334b443e55fSRyder Lee __le32 cmp_bitmap_1; 335b443e55fSRyder Lee __le16 trig_thres; 336b443e55fSRyder Lee u8 enable; 337b443e55fSRyder Lee u8 rsv; 338b443e55fSRyder Lee } __packed; 339b443e55fSRyder Lee 340b4b9f0a3SLorenzo Bianconi struct bss_info_color { 341b4b9f0a3SLorenzo Bianconi __le16 tag; 342b4b9f0a3SLorenzo Bianconi __le16 len; 343b4b9f0a3SLorenzo Bianconi u8 disable; 344b4b9f0a3SLorenzo Bianconi u8 color; 345b4b9f0a3SLorenzo Bianconi u8 rsv[2]; 346b4b9f0a3SLorenzo Bianconi } __packed; 347b4b9f0a3SLorenzo Bianconi 3486094f86fSRyder Lee struct bss_info_he { 3496094f86fSRyder Lee __le16 tag; 3506094f86fSRyder Lee __le16 len; 3516094f86fSRyder Lee u8 he_pe_duration; 3526094f86fSRyder Lee u8 vht_op_info_present; 3536094f86fSRyder Lee __le16 he_rts_thres; 3546094f86fSRyder Lee __le16 max_nss_mcs[CMD_HE_MCS_BW_NUM]; 3556094f86fSRyder Lee u8 rsv[6]; 3566094f86fSRyder Lee } __packed; 3576094f86fSRyder Lee 358e57b7901SRyder Lee struct bss_info_bcn { 359e57b7901SRyder Lee __le16 tag; 360e57b7901SRyder Lee __le16 len; 361e57b7901SRyder Lee u8 ver; 362e57b7901SRyder Lee u8 enable; 363e57b7901SRyder Lee __le16 sub_ntlv; 364e57b7901SRyder Lee } __packed __aligned(4); 365e57b7901SRyder Lee 366b4b9f0a3SLorenzo Bianconi struct bss_info_bcn_cntdwn { 367e57b7901SRyder Lee __le16 tag; 368e57b7901SRyder Lee __le16 len; 369e57b7901SRyder Lee u8 cnt; 370e57b7901SRyder Lee u8 rsv[3]; 371e57b7901SRyder Lee } __packed __aligned(4); 372e57b7901SRyder Lee 373e57b7901SRyder Lee struct bss_info_bcn_mbss { 374e57b7901SRyder Lee #define MAX_BEACON_NUM 32 375e57b7901SRyder Lee __le16 tag; 376e57b7901SRyder Lee __le16 len; 377e57b7901SRyder Lee __le32 bitmap; 378e57b7901SRyder Lee __le16 offset[MAX_BEACON_NUM]; 379e57b7901SRyder Lee u8 rsv[8]; 380e57b7901SRyder Lee } __packed __aligned(4); 381e57b7901SRyder Lee 382e57b7901SRyder Lee struct bss_info_bcn_cont { 383e57b7901SRyder Lee __le16 tag; 384e57b7901SRyder Lee __le16 len; 385e57b7901SRyder Lee __le16 tim_ofs; 386e57b7901SRyder Lee __le16 csa_ofs; 387e57b7901SRyder Lee __le16 bcc_ofs; 388e57b7901SRyder Lee __le16 pkt_len; 389e57b7901SRyder Lee } __packed __aligned(4); 390e57b7901SRyder Lee 391869f0646SMeiChia Chiu struct bss_info_inband_discovery { 392869f0646SMeiChia Chiu __le16 tag; 393869f0646SMeiChia Chiu __le16 len; 394869f0646SMeiChia Chiu u8 tx_type; 395869f0646SMeiChia Chiu u8 tx_mode; 396869f0646SMeiChia Chiu u8 tx_interval; 397869f0646SMeiChia Chiu u8 enable; 398869f0646SMeiChia Chiu __le16 rsv; 399869f0646SMeiChia Chiu __le16 prob_rsp_len; 400869f0646SMeiChia Chiu } __packed __aligned(4); 401869f0646SMeiChia Chiu 402e57b7901SRyder Lee enum { 403e57b7901SRyder Lee BSS_INFO_BCN_CSA, 404e57b7901SRyder Lee BSS_INFO_BCN_BCC, 405e57b7901SRyder Lee BSS_INFO_BCN_MBSSID, 406e57b7901SRyder Lee BSS_INFO_BCN_CONTENT, 407869f0646SMeiChia Chiu BSS_INFO_BCN_DISCOV, 408e57b7901SRyder Lee BSS_INFO_BCN_MAX 409e57b7901SRyder Lee }; 410e57b7901SRyder Lee 411e57b7901SRyder Lee enum { 41270fd1333SRyder Lee RATE_PARAM_FIXED = 3, 4138f058354SRyder Lee RATE_PARAM_MMPS_UPDATE = 5, 41470fd1333SRyder Lee RATE_PARAM_FIXED_HE_LTF = 7, 41570fd1333SRyder Lee RATE_PARAM_FIXED_MCS, 41670fd1333SRyder Lee RATE_PARAM_FIXED_GI = 11, 41770fd1333SRyder Lee RATE_PARAM_AUTO = 20, 4187a9a957bSShayne Chen RATE_PARAM_SPE_UPDATE = 22, 41970fd1333SRyder Lee }; 42070fd1333SRyder Lee 4219fac3c81SRyder Lee #define RATE_CFG_MCS GENMASK(3, 0) 4229fac3c81SRyder Lee #define RATE_CFG_NSS GENMASK(7, 4) 4239fac3c81SRyder Lee #define RATE_CFG_GI GENMASK(11, 8) 4249fac3c81SRyder Lee #define RATE_CFG_BW GENMASK(15, 12) 4259fac3c81SRyder Lee #define RATE_CFG_STBC GENMASK(19, 16) 4269fac3c81SRyder Lee #define RATE_CFG_LDPC GENMASK(23, 20) 4279fac3c81SRyder Lee #define RATE_CFG_PHY_TYPE GENMASK(27, 24) 4284d242332SRyder Lee #define RATE_CFG_HE_LTF GENMASK(31, 28) 4299fac3c81SRyder Lee 43089029a85SRyder Lee enum { 43166b181b8SRyder Lee TX_POWER_LIMIT_ENABLE, 43266b181b8SRyder Lee TX_POWER_LIMIT_TABLE = 0x4, 43366b181b8SRyder Lee TX_POWER_LIMIT_INFO = 0x7, 43466b181b8SRyder Lee TX_POWER_LIMIT_FRAME = 0x11, 43566b181b8SRyder Lee TX_POWER_LIMIT_FRAME_MIN = 0x12, 43666b181b8SRyder Lee }; 43766b181b8SRyder Lee 43866b181b8SRyder Lee enum { 4393dc00ecfSRyder Lee SPR_ENABLE = 0x1, 4403dc00ecfSRyder Lee SPR_ENABLE_SD = 0x3, 4413dc00ecfSRyder Lee SPR_ENABLE_MODE = 0x5, 4423dc00ecfSRyder Lee SPR_ENABLE_DPD = 0x23, 4433dc00ecfSRyder Lee SPR_ENABLE_TX = 0x25, 4443dc00ecfSRyder Lee SPR_SET_SRG_BITMAP = 0x80, 4453dc00ecfSRyder Lee SPR_SET_PARAM = 0xc2, 4463dc00ecfSRyder Lee SPR_SET_SIGA = 0xdc, 4473dc00ecfSRyder Lee }; 4483dc00ecfSRyder Lee 4493dc00ecfSRyder Lee enum { 45034b877d9SRyder Lee THERMAL_PROTECT_PARAMETER_CTRL, 45134b877d9SRyder Lee THERMAL_PROTECT_BASIC_INFO, 45234b877d9SRyder Lee THERMAL_PROTECT_ENABLE, 45334b877d9SRyder Lee THERMAL_PROTECT_DISABLE, 45434b877d9SRyder Lee THERMAL_PROTECT_DUTY_CONFIG, 45534b877d9SRyder Lee THERMAL_PROTECT_MECH_INFO, 45634b877d9SRyder Lee THERMAL_PROTECT_DUTY_INFO, 45734b877d9SRyder Lee THERMAL_PROTECT_STATE_ACT, 45834b877d9SRyder Lee }; 45934b877d9SRyder Lee 46034b877d9SRyder Lee enum { 461fd843822SRyder Lee MT_BF_SOUNDING_ON = 1, 462fd843822SRyder Lee MT_BF_TYPE_UPDATE = 20, 463fd843822SRyder Lee MT_BF_MODULE_UPDATE = 25 464fd843822SRyder Lee }; 465fd843822SRyder Lee 466e5a9f383SShayne Chen enum { 467e5a9f383SShayne Chen MURU_SET_ARB_OP_MODE = 14, 468e5a9f383SShayne Chen MURU_SET_PLATFORM_TYPE = 25, 469e5a9f383SShayne Chen }; 470e5a9f383SShayne Chen 471e5a9f383SShayne Chen enum { 472e5a9f383SShayne Chen MURU_PLATFORM_TYPE_PERF_LEVEL_1 = 1, 473e5a9f383SShayne Chen MURU_PLATFORM_TYPE_PERF_LEVEL_2, 474e5a9f383SShayne Chen }; 475e5a9f383SShayne Chen 4761966a507SMeiChia Chiu /* tx cmd tx statistics */ 4771966a507SMeiChia Chiu enum { 4781966a507SMeiChia Chiu MURU_SET_TXC_TX_STATS_EN = 150, 4791966a507SMeiChia Chiu MURU_GET_TXC_TX_STATS = 151, 4801966a507SMeiChia Chiu }; 4811966a507SMeiChia Chiu 482bdd2ca78SRyder Lee enum { 483bdd2ca78SRyder Lee SER_QUERY, 484bdd2ca78SRyder Lee /* recovery */ 485bdd2ca78SRyder Lee SER_SET_RECOVER_L1, 486bdd2ca78SRyder Lee SER_SET_RECOVER_L2, 487bdd2ca78SRyder Lee SER_SET_RECOVER_L3_RX_ABORT, 488bdd2ca78SRyder Lee SER_SET_RECOVER_L3_TX_ABORT, 489bdd2ca78SRyder Lee SER_SET_RECOVER_L3_TX_DISABLE, 490bdd2ca78SRyder Lee SER_SET_RECOVER_L3_BF, 491b662b71aSRyder Lee SER_SET_RECOVER_FULL, 492b662b71aSRyder Lee SER_SET_SYSTEM_ASSERT, 493bdd2ca78SRyder Lee /* action */ 494bdd2ca78SRyder Lee SER_ENABLE = 2, 495bdd2ca78SRyder Lee SER_RECOVER 496bdd2ca78SRyder Lee }; 497bdd2ca78SRyder Lee 498de869f81SMeiChia Chiu #define MT7915_MAX_BEACON_SIZE 1308 499de869f81SMeiChia Chiu #define MT7915_BEACON_UPDATE_SIZE (sizeof(struct sta_req_hdr) + \ 500de869f81SMeiChia Chiu sizeof(struct bss_info_bcn) + \ 501de869f81SMeiChia Chiu sizeof(struct bss_info_bcn_cntdwn) + \ 502de869f81SMeiChia Chiu sizeof(struct bss_info_bcn_mbss) + \ 503de869f81SMeiChia Chiu MT_TXD_SIZE + \ 504de869f81SMeiChia Chiu sizeof(struct bss_info_bcn_cont)) 50518fced20SMeiChia Chiu #define MT7915_MAX_BSS_OFFLOAD_SIZE (MT7915_MAX_BEACON_SIZE + \ 50618fced20SMeiChia Chiu MT7915_BEACON_UPDATE_SIZE) 50718fced20SMeiChia Chiu 5083e68af62SRyder Lee #define MT7915_BSS_UPDATE_MAX_SIZE (sizeof(struct sta_req_hdr) + \ 5093e68af62SRyder Lee sizeof(struct bss_info_omac) + \ 5103e68af62SRyder Lee sizeof(struct bss_info_basic) +\ 5113e68af62SRyder Lee sizeof(struct bss_info_rf_ch) +\ 5123e68af62SRyder Lee sizeof(struct bss_info_ra) + \ 513b443e55fSRyder Lee sizeof(struct bss_info_hw_amsdu) +\ 5143e68af62SRyder Lee sizeof(struct bss_info_he) + \ 5153e68af62SRyder Lee sizeof(struct bss_info_bmc_rate) +\ 516802145e2SRyder Lee sizeof(struct bss_info_ext_bss)) 5173e68af62SRyder Lee 518e57b7901SRyder Lee #endif 519