developer | 0f312e8 | 2022-11-01 12:31:52 +0800 | [diff] [blame] | 1 | /* SPDX-License-Identifier: ISC */ |
| 2 | /* Copyright (C) 2020 MediaTek Inc. */ |
| 3 | |
| 4 | #ifndef __MT7921_MCU_H |
| 5 | #define __MT7921_MCU_H |
| 6 | |
| 7 | #include "../mt76_connac_mcu.h" |
| 8 | |
| 9 | struct mt7921_mcu_tx_done_event { |
| 10 | u8 pid; |
| 11 | u8 status; |
| 12 | __le16 seq; |
| 13 | |
| 14 | u8 wlan_idx; |
| 15 | u8 tx_cnt; |
| 16 | __le16 tx_rate; |
| 17 | |
| 18 | u8 flag; |
| 19 | u8 tid; |
| 20 | u8 rsp_rate; |
| 21 | u8 mcs; |
| 22 | |
| 23 | u8 bw; |
| 24 | u8 tx_pwr; |
| 25 | u8 reason; |
| 26 | u8 rsv0[1]; |
| 27 | |
| 28 | __le32 delay; |
| 29 | __le32 timestamp; |
| 30 | __le32 applied_flag; |
| 31 | u8 txs[28]; |
| 32 | |
| 33 | u8 rsv1[32]; |
| 34 | } __packed; |
| 35 | |
| 36 | /* ext event table */ |
| 37 | enum { |
| 38 | MCU_EXT_EVENT_RATE_REPORT = 0x87, |
| 39 | }; |
| 40 | |
| 41 | struct mt7921_mcu_eeprom_info { |
| 42 | __le32 addr; |
| 43 | __le32 valid; |
| 44 | u8 data[MT7921_EEPROM_BLOCK_SIZE]; |
| 45 | } __packed; |
| 46 | |
| 47 | #define MT_RA_RATE_NSS GENMASK(8, 6) |
| 48 | #define MT_RA_RATE_MCS GENMASK(3, 0) |
| 49 | #define MT_RA_RATE_TX_MODE GENMASK(12, 9) |
| 50 | #define MT_RA_RATE_DCM_EN BIT(4) |
| 51 | #define MT_RA_RATE_BW GENMASK(14, 13) |
| 52 | |
| 53 | struct mt7921_mcu_uni_event { |
| 54 | u8 cid; |
| 55 | u8 pad[3]; |
| 56 | __le32 status; /* 0: success, others: fail */ |
| 57 | } __packed; |
| 58 | |
| 59 | enum { |
| 60 | MT_EBF = BIT(0), /* explicit beamforming */ |
| 61 | MT_IBF = BIT(1) /* implicit beamforming */ |
| 62 | }; |
| 63 | |
| 64 | struct mt7921_mcu_reg_event { |
| 65 | __le32 reg; |
| 66 | __le32 val; |
| 67 | } __packed; |
| 68 | |
| 69 | struct mt7921_mcu_ant_id_config { |
| 70 | u8 ant_id[4]; |
| 71 | } __packed; |
| 72 | |
| 73 | struct mt7921_txpwr_req { |
| 74 | u8 ver; |
| 75 | u8 action; |
| 76 | __le16 len; |
| 77 | u8 dbdc_idx; |
| 78 | u8 rsv[3]; |
| 79 | } __packed; |
| 80 | |
| 81 | struct mt7921_txpwr_event { |
| 82 | u8 ver; |
| 83 | u8 action; |
| 84 | __le16 len; |
| 85 | struct mt7921_txpwr txpwr; |
| 86 | } __packed; |
| 87 | |
| 88 | enum { |
| 89 | TM_SWITCH_MODE, |
| 90 | TM_SET_AT_CMD, |
| 91 | TM_QUERY_AT_CMD, |
| 92 | }; |
| 93 | |
| 94 | enum { |
| 95 | MT7921_TM_NORMAL, |
| 96 | MT7921_TM_TESTMODE, |
| 97 | MT7921_TM_ICAP, |
| 98 | MT7921_TM_ICAP_OVERLAP, |
| 99 | MT7921_TM_WIFISPECTRUM, |
| 100 | }; |
| 101 | |
| 102 | struct mt7921_rftest_cmd { |
| 103 | u8 action; |
| 104 | u8 rsv[3]; |
| 105 | __le32 param0; |
| 106 | __le32 param1; |
| 107 | } __packed; |
| 108 | |
| 109 | struct mt7921_rftest_evt { |
| 110 | __le32 param0; |
| 111 | __le32 param1; |
| 112 | } __packed; |
| 113 | #endif |