xref: /freebsd/sys/contrib/dev/mediatek/mt76/mt7603/mcu.h (revision 6c92544d7c9722a3fe6263134938d1f864c158c5)
1*6c92544dSBjoern A. Zeeb /* SPDX-License-Identifier: ISC */
2*6c92544dSBjoern A. Zeeb 
3*6c92544dSBjoern A. Zeeb #ifndef __MT7603_MCU_H
4*6c92544dSBjoern A. Zeeb #define __MT7603_MCU_H
5*6c92544dSBjoern A. Zeeb 
6*6c92544dSBjoern A. Zeeb struct mt7603_mcu_txd {
7*6c92544dSBjoern A. Zeeb 	__le16 len;
8*6c92544dSBjoern A. Zeeb 	__le16 pq_id;
9*6c92544dSBjoern A. Zeeb 
10*6c92544dSBjoern A. Zeeb 	u8 cid;
11*6c92544dSBjoern A. Zeeb 	u8 pkt_type;
12*6c92544dSBjoern A. Zeeb 	u8 set_query;
13*6c92544dSBjoern A. Zeeb 	u8 seq;
14*6c92544dSBjoern A. Zeeb 
15*6c92544dSBjoern A. Zeeb 	u8 uc_d2b0_rev;
16*6c92544dSBjoern A. Zeeb 	u8 ext_cid;
17*6c92544dSBjoern A. Zeeb 	u8 uc_d2b2_rev;
18*6c92544dSBjoern A. Zeeb 	u8 ext_cid_ack;
19*6c92544dSBjoern A. Zeeb 
20*6c92544dSBjoern A. Zeeb 	u32 au4_d3_to_d7_rev[5];
21*6c92544dSBjoern A. Zeeb } __packed __aligned(4);
22*6c92544dSBjoern A. Zeeb 
23*6c92544dSBjoern A. Zeeb struct mt7603_mcu_rxd {
24*6c92544dSBjoern A. Zeeb 	__le16 len;
25*6c92544dSBjoern A. Zeeb 	__le16 pkt_type_id;
26*6c92544dSBjoern A. Zeeb 
27*6c92544dSBjoern A. Zeeb 	u8 eid;
28*6c92544dSBjoern A. Zeeb 	u8 seq;
29*6c92544dSBjoern A. Zeeb 	__le16 __rsv;
30*6c92544dSBjoern A. Zeeb 
31*6c92544dSBjoern A. Zeeb 	u8 ext_eid;
32*6c92544dSBjoern A. Zeeb 	u8 __rsv1[3];
33*6c92544dSBjoern A. Zeeb };
34*6c92544dSBjoern A. Zeeb 
35*6c92544dSBjoern A. Zeeb #define MCU_PKT_ID		0xa0
36*6c92544dSBjoern A. Zeeb #define MCU_PORT_QUEUE		0x8000
37*6c92544dSBjoern A. Zeeb #define MCU_PORT_QUEUE_FW	0xc000
38*6c92544dSBjoern A. Zeeb 
39*6c92544dSBjoern A. Zeeb #define MCU_FIRMWARE_ADDRESS	0x100000
40*6c92544dSBjoern A. Zeeb 
41*6c92544dSBjoern A. Zeeb enum {
42*6c92544dSBjoern A. Zeeb 	MCU_Q_QUERY,
43*6c92544dSBjoern A. Zeeb 	MCU_Q_SET,
44*6c92544dSBjoern A. Zeeb 	MCU_Q_RESERVED,
45*6c92544dSBjoern A. Zeeb 	MCU_Q_NA
46*6c92544dSBjoern A. Zeeb };
47*6c92544dSBjoern A. Zeeb 
48*6c92544dSBjoern A. Zeeb enum {
49*6c92544dSBjoern A. Zeeb 	MCU_CMD_TARGET_ADDRESS_LEN_REQ = 0x01,
50*6c92544dSBjoern A. Zeeb 	MCU_CMD_FW_START_REQ = 0x02,
51*6c92544dSBjoern A. Zeeb 	MCU_CMD_INIT_ACCESS_REG = 0x3,
52*6c92544dSBjoern A. Zeeb 	MCU_CMD_PATCH_START_REQ = 0x05,
53*6c92544dSBjoern A. Zeeb 	MCU_CMD_PATCH_FINISH_REQ = 0x07,
54*6c92544dSBjoern A. Zeeb 	MCU_CMD_PATCH_SEM_CONTROL = 0x10,
55*6c92544dSBjoern A. Zeeb 	MCU_CMD_HIF_LOOPBACK = 0x20,
56*6c92544dSBjoern A. Zeeb 	MCU_CMD_CH_PRIVILEGE = 0x20,
57*6c92544dSBjoern A. Zeeb 	MCU_CMD_ACCESS_REG = 0xC2,
58*6c92544dSBjoern A. Zeeb 	MCU_CMD_EXT_CID = 0xED,
59*6c92544dSBjoern A. Zeeb 	MCU_CMD_FW_SCATTER = 0xEE,
60*6c92544dSBjoern A. Zeeb 	MCU_CMD_RESTART_DL_REQ = 0xEF,
61*6c92544dSBjoern A. Zeeb };
62*6c92544dSBjoern A. Zeeb 
63*6c92544dSBjoern A. Zeeb enum {
64*6c92544dSBjoern A. Zeeb 	MCU_EXT_CMD_RF_REG_ACCESS = 0x02,
65*6c92544dSBjoern A. Zeeb 	MCU_EXT_CMD_RF_TEST = 0x04,
66*6c92544dSBjoern A. Zeeb 	MCU_EXT_CMD_RADIO_ON_OFF_CTRL = 0x05,
67*6c92544dSBjoern A. Zeeb 	MCU_EXT_CMD_WIFI_RX_DISABLE = 0x06,
68*6c92544dSBjoern A. Zeeb 	MCU_EXT_CMD_PM_STATE_CTRL = 0x07,
69*6c92544dSBjoern A. Zeeb 	MCU_EXT_CMD_CHANNEL_SWITCH = 0x08,
70*6c92544dSBjoern A. Zeeb 	MCU_EXT_CMD_NIC_CAPABILITY = 0x09,
71*6c92544dSBjoern A. Zeeb 	MCU_EXT_CMD_PWR_SAVING = 0x0A,
72*6c92544dSBjoern A. Zeeb 	MCU_EXT_CMD_MULTIPLE_REG_ACCESS = 0x0E,
73*6c92544dSBjoern A. Zeeb 	MCU_EXT_CMD_AP_PWR_SAVING_CAPABILITY = 0xF,
74*6c92544dSBjoern A. Zeeb 	MCU_EXT_CMD_SEC_ADDREMOVE_KEY = 0x10,
75*6c92544dSBjoern A. Zeeb 	MCU_EXT_CMD_SET_TX_POWER_CTRL = 0x11,
76*6c92544dSBjoern A. Zeeb 	MCU_EXT_CMD_FW_LOG_2_HOST = 0x13,
77*6c92544dSBjoern A. Zeeb 	MCU_EXT_CMD_PS_RETRIEVE_START = 0x14,
78*6c92544dSBjoern A. Zeeb 	MCU_EXT_CMD_LED_CTRL = 0x17,
79*6c92544dSBjoern A. Zeeb 	MCU_EXT_CMD_PACKET_FILTER = 0x18,
80*6c92544dSBjoern A. Zeeb 	MCU_EXT_CMD_PWR_MGT_BIT_WIFI = 0x1B,
81*6c92544dSBjoern A. Zeeb 	MCU_EXT_CMD_EFUSE_BUFFER_MODE = 0x21,
82*6c92544dSBjoern A. Zeeb 	MCU_EXT_CMD_THERMAL_PROTECT = 0x23,
83*6c92544dSBjoern A. Zeeb 	MCU_EXT_CMD_EDCA_SET = 0x27,
84*6c92544dSBjoern A. Zeeb 	MCU_EXT_CMD_SLOT_TIME_SET = 0x28,
85*6c92544dSBjoern A. Zeeb 	MCU_EXT_CMD_CONFIG_INTERNAL_SETTING = 0x29,
86*6c92544dSBjoern A. Zeeb 	MCU_EXT_CMD_NOA_OFFLOAD_CTRL = 0x2B,
87*6c92544dSBjoern A. Zeeb 	MCU_EXT_CMD_GET_THEMAL_SENSOR = 0x2C,
88*6c92544dSBjoern A. Zeeb 	MCU_EXT_CMD_WAKEUP_OPTION = 0x2E,
89*6c92544dSBjoern A. Zeeb 	MCU_EXT_CMD_AC_QUEUE_CONTROL = 0x31,
90*6c92544dSBjoern A. Zeeb 	MCU_EXT_CMD_BCN_UPDATE = 0x33
91*6c92544dSBjoern A. Zeeb };
92*6c92544dSBjoern A. Zeeb 
93*6c92544dSBjoern A. Zeeb enum {
94*6c92544dSBjoern A. Zeeb 	MCU_EXT_EVENT_CMD_RESULT = 0x0,
95*6c92544dSBjoern A. Zeeb 	MCU_EXT_EVENT_RF_REG_ACCESS = 0x2,
96*6c92544dSBjoern A. Zeeb 	MCU_EXT_EVENT_MULTI_CR_ACCESS = 0x0E,
97*6c92544dSBjoern A. Zeeb 	MCU_EXT_EVENT_FW_LOG_2_HOST = 0x13,
98*6c92544dSBjoern A. Zeeb 	MCU_EXT_EVENT_BEACON_LOSS = 0x1A,
99*6c92544dSBjoern A. Zeeb 	MCU_EXT_EVENT_THERMAL_PROTECT = 0x22,
100*6c92544dSBjoern A. Zeeb 	MCU_EXT_EVENT_BCN_UPDATE = 0x31,
101*6c92544dSBjoern A. Zeeb };
102*6c92544dSBjoern A. Zeeb 
103*6c92544dSBjoern A. Zeeb #endif
104