1 /* SPDX-License-Identifier: ISC */
3 * Copyright (C) 2018 Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
6 #ifndef __MT76x02_MCU_H
7 #define __MT76x02_MCU_H
11 #define MT_MCU_RESET_CTL 0x070C
12 #define MT_MCU_INT_LEVEL 0x0718
13 #define MT_MCU_COM_REG0 0x0730
14 #define MT_MCU_COM_REG1 0x0734
15 #define MT_MCU_COM_REG2 0x0738
16 #define MT_MCU_COM_REG3 0x073C
18 #define MT_INBAND_PACKET_MAX_LEN 192
19 #define MT_MCU_MEMMAP_WLAN 0x410000
21 #define MT_MCU_PCIE_REMAP_BASE4 0x074C
23 #define MT_MCU_SEMAPHORE_00 0x07B0
24 #define MT_MCU_SEMAPHORE_01 0x07B4
25 #define MT_MCU_SEMAPHORE_02 0x07B8
26 #define MT_MCU_SEMAPHORE_03 0x07BC
28 #define MT_MCU_ILM_ADDR 0x80000
37 CMD_READ_MODIFY_WRITE
= 9,
40 CMD_RANDOM_WRITE
= 12,
42 CMD_POWER_SAVING_OP
= 20,
46 CMD_CARRIER_DETECT_OP
= 28,
47 CMD_RADOR_DETECT_OP
= 29,
48 CMD_SWITCH_CHANNEL_OP
= 30,
49 CMD_CALIBRATION_OP
= 31,
57 RADIO_OFF_AUTO_WAKEUP
= 0x32,
58 RADIO_OFF_ADVANCE
= 0x33,
59 RADIO_ON_ADVANCE
= 0x34,
65 USB2_SW_DISCONNECT
= 2,
66 USB3_SW_DISCONNECT
= 3,
71 struct mt76x02_fw_header
{
80 struct mt76x02_patch_header
{
84 char patch_version
[4];
88 static inline struct sk_buff
*
89 mt76x02_mcu_msg_alloc(const void *data
, int len
)
91 return mt76_mcu_msg_alloc(data
, 0, len
, 0);
94 int mt76x02_mcu_cleanup(struct mt76x02_dev
*dev
);
95 int mt76x02_mcu_calibrate(struct mt76x02_dev
*dev
, int type
, u32 param
);
96 int mt76x02_mcu_msg_send(struct mt76_dev
*mdev
, int cmd
, const void *data
,
97 int len
, bool wait_resp
);
98 int mt76x02_mcu_function_select(struct mt76x02_dev
*dev
, enum mcu_function func
,
100 int mt76x02_mcu_set_radio_state(struct mt76x02_dev
*dev
, bool on
);
101 void mt76x02_set_ethtool_fwver(struct mt76x02_dev
*dev
,
102 const struct mt76x02_fw_header
*h
);
104 #endif /* __MT76x02_MCU_H */