2 * Copyright (C) 2018 Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
4 * Permission to use, copy, modify, and/or distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 #ifndef __MT76x02_MCU_H
18 #define __MT76x02_MCU_H
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
29 #define MT_INBAND_PACKET_MAX_LEN 192
30 #define MT_MCU_MEMMAP_WLAN 0x410000
32 #define MT_MCU_PCIE_REMAP_BASE4 0x074C
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
39 #define MT_MCU_ILM_ADDR 0x80000
48 CMD_READ_MODIFY_WRITE = 9,
51 CMD_RANDOM_WRITE = 12,
53 CMD_POWER_SAVING_OP = 20,
57 CMD_CARRIER_DETECT_OP = 28,
58 CMD_RADOR_DETECT_OP = 29,
59 CMD_SWITCH_CHANNEL_OP = 30,
60 CMD_CALIBRATION_OP = 31,
68 RADIO_OFF_AUTO_WAKEUP = 0x32,
69 RADIO_OFF_ADVANCE = 0x33,
70 RADIO_ON_ADVANCE = 0x34,
76 USB2_SW_DISCONNECT = 2,
77 USB3_SW_DISCONNECT = 3,
82 struct mt76x02_fw_header {
91 struct mt76x02_patch_header {
95 char patch_version[4];
99 static inline struct sk_buff *
100 mt76x02_mcu_msg_alloc(const void *data, int len)
102 return mt76_mcu_msg_alloc(data, 0, len, 0);
105 int mt76x02_mcu_cleanup(struct mt76x02_dev *dev);
106 int mt76x02_mcu_calibrate(struct mt76x02_dev *dev, int type, u32 param);
107 int mt76x02_mcu_msg_send(struct mt76_dev *mdev, int cmd, const void *data,
108 int len, bool wait_resp);
109 int mt76x02_mcu_function_select(struct mt76x02_dev *dev, enum mcu_function func,
111 int mt76x02_mcu_set_radio_state(struct mt76x02_dev *dev, bool on);
112 void mt76x02_set_ethtool_fwver(struct mt76x02_dev *dev,
113 const struct mt76x02_fw_header *h);
115 #endif /* __MT76x02_MCU_H */