16c92544dSBjoern A. Zeeb /* SPDX-License-Identifier: ISC */ 26c92544dSBjoern A. Zeeb /* Copyright (C) 2020 MediaTek Inc. */ 36c92544dSBjoern A. Zeeb 46c92544dSBjoern A. Zeeb #ifndef __MT7921_MCU_H 56c92544dSBjoern A. Zeeb #define __MT7921_MCU_H 66c92544dSBjoern A. Zeeb 76c92544dSBjoern A. Zeeb #include "../mt76_connac_mcu.h" 86c92544dSBjoern A. Zeeb 96c92544dSBjoern A. Zeeb struct mt7921_mcu_tx_done_event { 106c92544dSBjoern A. Zeeb u8 pid; 116c92544dSBjoern A. Zeeb u8 status; 126c92544dSBjoern A. Zeeb __le16 seq; 136c92544dSBjoern A. Zeeb 146c92544dSBjoern A. Zeeb u8 wlan_idx; 156c92544dSBjoern A. Zeeb u8 tx_cnt; 166c92544dSBjoern A. Zeeb __le16 tx_rate; 176c92544dSBjoern A. Zeeb 186c92544dSBjoern A. Zeeb u8 flag; 196c92544dSBjoern A. Zeeb u8 tid; 206c92544dSBjoern A. Zeeb u8 rsp_rate; 216c92544dSBjoern A. Zeeb u8 mcs; 226c92544dSBjoern A. Zeeb 236c92544dSBjoern A. Zeeb u8 bw; 246c92544dSBjoern A. Zeeb u8 tx_pwr; 256c92544dSBjoern A. Zeeb u8 reason; 266c92544dSBjoern A. Zeeb u8 rsv0[1]; 276c92544dSBjoern A. Zeeb 286c92544dSBjoern A. Zeeb __le32 delay; 296c92544dSBjoern A. Zeeb __le32 timestamp; 306c92544dSBjoern A. Zeeb __le32 applied_flag; 316c92544dSBjoern A. Zeeb u8 txs[28]; 326c92544dSBjoern A. Zeeb 336c92544dSBjoern A. Zeeb u8 rsv1[32]; 346c92544dSBjoern A. Zeeb } __packed; 356c92544dSBjoern A. Zeeb 366c92544dSBjoern A. Zeeb /* ext event table */ 376c92544dSBjoern A. Zeeb enum { 386c92544dSBjoern A. Zeeb MCU_EXT_EVENT_RATE_REPORT = 0x87, 396c92544dSBjoern A. Zeeb }; 406c92544dSBjoern A. Zeeb 416c92544dSBjoern A. Zeeb struct mt7921_mcu_eeprom_info { 426c92544dSBjoern A. Zeeb __le32 addr; 436c92544dSBjoern A. Zeeb __le32 valid; 446c92544dSBjoern A. Zeeb u8 data[MT7921_EEPROM_BLOCK_SIZE]; 456c92544dSBjoern A. Zeeb } __packed; 466c92544dSBjoern A. Zeeb 476c92544dSBjoern A. Zeeb #define MT_RA_RATE_NSS GENMASK(8, 6) 486c92544dSBjoern A. Zeeb #define MT_RA_RATE_MCS GENMASK(3, 0) 496c92544dSBjoern A. Zeeb #define MT_RA_RATE_TX_MODE GENMASK(12, 9) 506c92544dSBjoern A. Zeeb #define MT_RA_RATE_DCM_EN BIT(4) 516c92544dSBjoern A. Zeeb #define MT_RA_RATE_BW GENMASK(14, 13) 526c92544dSBjoern A. Zeeb 536c92544dSBjoern A. Zeeb enum { 546c92544dSBjoern A. Zeeb MT_EBF = BIT(0), /* explicit beamforming */ 556c92544dSBjoern A. Zeeb MT_IBF = BIT(1) /* implicit beamforming */ 566c92544dSBjoern A. Zeeb }; 576c92544dSBjoern A. Zeeb 586c92544dSBjoern A. Zeeb struct mt7921_mcu_ant_id_config { 596c92544dSBjoern A. Zeeb u8 ant_id[4]; 606c92544dSBjoern A. Zeeb } __packed; 616c92544dSBjoern A. Zeeb 626c92544dSBjoern A. Zeeb struct mt7921_txpwr_req { 636c92544dSBjoern A. Zeeb u8 ver; 646c92544dSBjoern A. Zeeb u8 action; 656c92544dSBjoern A. Zeeb __le16 len; 666c92544dSBjoern A. Zeeb u8 dbdc_idx; 676c92544dSBjoern A. Zeeb u8 rsv[3]; 686c92544dSBjoern A. Zeeb } __packed; 696c92544dSBjoern A. Zeeb 706c92544dSBjoern A. Zeeb struct mt7921_txpwr_event { 716c92544dSBjoern A. Zeeb u8 ver; 726c92544dSBjoern A. Zeeb u8 action; 736c92544dSBjoern A. Zeeb __le16 len; 746c92544dSBjoern A. Zeeb struct mt7921_txpwr txpwr; 756c92544dSBjoern A. Zeeb } __packed; 766c92544dSBjoern A. Zeeb 77*8ba4d145SBjoern A. Zeeb struct mt7921_wf_rf_pin_ctrl_event { 78*8ba4d145SBjoern A. Zeeb u8 result; 79*8ba4d145SBjoern A. Zeeb u8 value; 80*8ba4d145SBjoern A. Zeeb } __packed; 81*8ba4d145SBjoern A. Zeeb 826c92544dSBjoern A. Zeeb enum { 836c92544dSBjoern A. Zeeb TM_SWITCH_MODE, 846c92544dSBjoern A. Zeeb TM_SET_AT_CMD, 856c92544dSBjoern A. Zeeb TM_QUERY_AT_CMD, 866c92544dSBjoern A. Zeeb }; 876c92544dSBjoern A. Zeeb 886c92544dSBjoern A. Zeeb enum { 896c92544dSBjoern A. Zeeb MT7921_TM_NORMAL, 906c92544dSBjoern A. Zeeb MT7921_TM_TESTMODE, 916c92544dSBjoern A. Zeeb MT7921_TM_ICAP, 926c92544dSBjoern A. Zeeb MT7921_TM_ICAP_OVERLAP, 936c92544dSBjoern A. Zeeb MT7921_TM_WIFISPECTRUM, 946c92544dSBjoern A. Zeeb }; 956c92544dSBjoern A. Zeeb 966c92544dSBjoern A. Zeeb struct mt7921_rftest_cmd { 976c92544dSBjoern A. Zeeb u8 action; 986c92544dSBjoern A. Zeeb u8 rsv[3]; 996c92544dSBjoern A. Zeeb __le32 param0; 1006c92544dSBjoern A. Zeeb __le32 param1; 1016c92544dSBjoern A. Zeeb } __packed; 1026c92544dSBjoern A. Zeeb 1036c92544dSBjoern A. Zeeb struct mt7921_rftest_evt { 1046c92544dSBjoern A. Zeeb __le32 param0; 1056c92544dSBjoern A. Zeeb __le32 param1; 1066c92544dSBjoern A. Zeeb } __packed; 107*8ba4d145SBjoern A. Zeeb 108*8ba4d145SBjoern A. Zeeb struct mt7921_clc_info_tlv { 109*8ba4d145SBjoern A. Zeeb __le16 tag; 110*8ba4d145SBjoern A. Zeeb __le16 len; 111*8ba4d145SBjoern A. Zeeb 112*8ba4d145SBjoern A. Zeeb u8 chan_conf; /* BIT(0) : Enable UNII-4 113*8ba4d145SBjoern A. Zeeb * BIT(1) : Enable UNII-5 114*8ba4d145SBjoern A. Zeeb * BIT(2) : Enable UNII-6 115*8ba4d145SBjoern A. Zeeb * BIT(3) : Enable UNII-7 116*8ba4d145SBjoern A. Zeeb * BIT(4) : Enable UNII-8 117*8ba4d145SBjoern A. Zeeb */ 118*8ba4d145SBjoern A. Zeeb u8 rsv[63]; 119*8ba4d145SBjoern A. Zeeb } __packed; 1206c92544dSBjoern A. Zeeb #endif 121