mirror of
https://github.com/outbackdingo/mt76.git
synced 2026-10-24 13:26:48 +00:00
wifi: mt76: mt7925: add MT7928 FWDL support
Add CBMCU and PHY RAM firmware download flow for MT7928. The CBMCU firmware is loaded in sections before the main WM firmware. Register MT7928 firmware file names and is_mt7928() chip check. Signed-off-by: FC Wei <[email protected]> Signed-off-by: Xiong <[email protected]> Signed-off-by: Emery Hsin <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Felix Fietkau <[email protected]>
This commit is contained in:
committed by
Felix Fietkau
parent
59d1e9ecf1
commit
65bfecfbdb
@@ -35,6 +35,12 @@
|
||||
#define PATCH_SEC_ENC_SCRAMBLE_INFO_MASK GENMASK(15, 0)
|
||||
#define PATCH_SEC_ENC_AES_KEY_MASK GENMASK(7, 0)
|
||||
|
||||
#define SEC_TYPE_SUBSYS_MASK GENMASK(23, 16)
|
||||
#define SEC_TYPE_SUBSYS_CBMCU BIT(16)
|
||||
|
||||
#define SEC_TYPE_SUBSYS_SEC_MASK GENMASK(15, 0)
|
||||
#define SEC_TYPE_SUBSYS_SEC_IMG_SIGN 0x05
|
||||
|
||||
enum {
|
||||
FW_TYPE_DEFAULT = 0,
|
||||
FW_TYPE_CLC = 2,
|
||||
@@ -193,6 +199,25 @@ struct mt76_connac2_fw_region {
|
||||
u8 rsv1[14];
|
||||
} __packed;
|
||||
|
||||
struct mt76_connac3_multi_header_v2_sec_raw_format {
|
||||
__le32 type;
|
||||
__le32 offset;
|
||||
__le32 size;
|
||||
u8 spec[52];
|
||||
} __packed;
|
||||
|
||||
struct mt76_connac3_multi_header_v2_raw_format {
|
||||
u8 pack_time[20];
|
||||
u8 chip_id_eco_ver[8];
|
||||
__le32 patch_ver;
|
||||
u8 global_desc_head[4];
|
||||
__le32 global_subsys;
|
||||
u8 rsv2[4];
|
||||
__le32 sec_num;
|
||||
u8 rsv3[48];
|
||||
struct mt76_connac3_multi_header_v2_sec_raw_format sects[];
|
||||
} __packed;
|
||||
|
||||
struct tlv {
|
||||
__le16 tag;
|
||||
__le16 len;
|
||||
@@ -1105,6 +1130,13 @@ enum {
|
||||
PATCH_REL_SEM_SUCCESS
|
||||
};
|
||||
|
||||
enum {
|
||||
CB_PATCH_GET_SEM_NEED_PATCH,
|
||||
CB_PATCH_IS_DL,
|
||||
CB_PATCH_NO_SEM_NEED_PATCH,
|
||||
CB_PATCH_REL_SEM_SUCCESS
|
||||
};
|
||||
|
||||
enum {
|
||||
FW_STATE_INITIAL,
|
||||
FW_STATE_FW_DOWNLOAD,
|
||||
@@ -1335,6 +1367,9 @@ enum {
|
||||
MCU_CMD_PATCH_START_REQ = 0x05,
|
||||
MCU_CMD_PATCH_FINISH_REQ = 0x07,
|
||||
MCU_CMD_PATCH_SEM_CONTROL = 0x10,
|
||||
MCU_CMD_CB_PATCH_SEM_CONTROL = 0x30,
|
||||
MCU_CMD_CB_PATCH_START_REQ = 0x31,
|
||||
MCU_CMD_CB_PATCH_FINISH_REQ = 0x32,
|
||||
MCU_CMD_WA_PARAM = 0xc4,
|
||||
MCU_CMD_EXT_CID = 0xed,
|
||||
MCU_CMD_FW_SCATTER = 0xee,
|
||||
@@ -2022,6 +2057,9 @@ int mt76_connac_mcu_init_download(struct mt76_dev *dev, u32 addr, u32 len,
|
||||
u32 mode);
|
||||
int mt76_connac_mcu_start_patch(struct mt76_dev *dev);
|
||||
int mt76_connac_mcu_patch_sem_ctrl(struct mt76_dev *dev, bool get);
|
||||
int mt76_connac_cb_mcu_init_download(struct mt76_dev *dev, u32 len);
|
||||
int mt76_connac_cb_mcu_start_patch(struct mt76_dev *dev);
|
||||
int mt76_connac_cb_mcu_patch_sem_ctrl(struct mt76_dev *dev, bool get);
|
||||
int mt76_connac_mcu_start_firmware(struct mt76_dev *dev, u32 addr, u32 option);
|
||||
|
||||
void mt76_connac_mcu_build_rnr_scan_param(struct mt76_dev *mdev,
|
||||
@@ -2105,7 +2143,9 @@ int mt76_connac_mcu_rdd_cmd(struct mt76_dev *dev, int cmd, u8 index,
|
||||
int mt76_connac_mcu_sta_wed_update(struct mt76_dev *dev, struct sk_buff *skb);
|
||||
int mt76_connac2_load_ram(struct mt76_dev *dev, const char *fw_wm,
|
||||
const char *fw_wa);
|
||||
int mt76_connac3_load_phy_ram(struct mt76_dev *dev, const char *fw_name);
|
||||
int mt76_connac2_load_patch(struct mt76_dev *dev, const char *fw_name);
|
||||
int mt76_connac3_load_cb_patch(struct mt76_dev *dev, const char *fw_name);
|
||||
int mt76_connac2_mcu_fill_message(struct mt76_dev *mdev, struct sk_buff *skb,
|
||||
int cmd, int *wait_seq);
|
||||
#endif /* __MT76_CONNAC_MCU_H */
|
||||
|
||||
Reference in New Issue
Block a user