xref: /freebsd/sys/contrib/dev/mediatek/mt76/mt7921/mcu.h (revision 089104e0e01f080c9cd45dc5f34c4f636dea4ca7)
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
114