1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17#ifndef __MT76x02_MCU_H
18#define __MT76x02_MCU_H
19
20#include "mt76x02.h"
21
22#define MT_MCU_RESET_CTL 0x070C
23#define MT_MCU_INT_LEVEL 0x0718
24#define MT_MCU_COM_REG0 0x0730
25#define MT_MCU_COM_REG1 0x0734
26#define MT_MCU_COM_REG2 0x0738
27#define MT_MCU_COM_REG3 0x073C
28
29#define MT_INBAND_PACKET_MAX_LEN 192
30#define MT_MCU_MEMMAP_WLAN 0x410000
31
32#define MT_MCU_PCIE_REMAP_BASE4 0x074C
33
34#define MT_MCU_SEMAPHORE_00 0x07B0
35#define MT_MCU_SEMAPHORE_01 0x07B4
36#define MT_MCU_SEMAPHORE_02 0x07B8
37#define MT_MCU_SEMAPHORE_03 0x07BC
38
39#define MT_MCU_ILM_ADDR 0x80000
40
41enum mcu_cmd {
42 CMD_FUN_SET_OP = 1,
43 CMD_LOAD_CR = 2,
44 CMD_INIT_GAIN_OP = 3,
45 CMD_DYNC_VGA_OP = 6,
46 CMD_TDLS_CH_SW = 7,
47 CMD_BURST_WRITE = 8,
48 CMD_READ_MODIFY_WRITE = 9,
49 CMD_RANDOM_READ = 10,
50 CMD_BURST_READ = 11,
51 CMD_RANDOM_WRITE = 12,
52 CMD_LED_MODE_OP = 16,
53 CMD_POWER_SAVING_OP = 20,
54 CMD_WOW_CONFIG = 21,
55 CMD_WOW_QUERY = 22,
56 CMD_WOW_FEATURE = 24,
57 CMD_CARRIER_DETECT_OP = 28,
58 CMD_RADOR_DETECT_OP = 29,
59 CMD_SWITCH_CHANNEL_OP = 30,
60 CMD_CALIBRATION_OP = 31,
61 CMD_BEACON_OP = 32,
62 CMD_ANTENNA_OP = 33,
63};
64
65enum mcu_power_mode {
66 RADIO_OFF = 0x30,
67 RADIO_ON = 0x31,
68 RADIO_OFF_AUTO_WAKEUP = 0x32,
69 RADIO_OFF_ADVANCE = 0x33,
70 RADIO_ON_ADVANCE = 0x34,
71};
72
73enum mcu_function {
74 Q_SELECT = 1,
75 BW_SETTING = 2,
76 USB2_SW_DISCONNECT = 2,
77 USB3_SW_DISCONNECT = 3,
78 LOG_FW_DEBUG_MSG = 4,
79 GET_FW_VERSION = 5,
80};
81
82struct mt76x02_fw_header {
83 __le32 ilm_len;
84 __le32 dlm_len;
85 __le16 build_ver;
86 __le16 fw_ver;
87 u8 pad[4];
88 char build_time[16];
89};
90
91struct mt76x02_patch_header {
92 char build_time[16];
93 char platform[4];
94 char hw_version[4];
95 char patch_version[4];
96 u8 pad[2];
97};
98
99static inline struct sk_buff *
100mt76x02_mcu_msg_alloc(const void *data, int len)
101{
102 return mt76_mcu_msg_alloc(data, 0, len, 0);
103}
104
105int mt76x02_mcu_cleanup(struct mt76x02_dev *dev);
106int mt76x02_mcu_calibrate(struct mt76x02_dev *dev, int type, u32 param);
107int mt76x02_mcu_msg_send(struct mt76_dev *mdev, int cmd, const void *data,
108 int len, bool wait_resp);
109int mt76x02_mcu_function_select(struct mt76x02_dev *dev, enum mcu_function func,
110 u32 val);
111int mt76x02_mcu_set_radio_state(struct mt76x02_dev *dev, bool on);
112void mt76x02_set_ethtool_fwver(struct mt76x02_dev *dev,
113 const struct mt76x02_fw_header *h);
114
115#endif
116