mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-06 13:27:25 -04:00
mt76: connac: move mt76_connac_mcu_gen_dl_mode in mt76-connac module
Move mt76_connac_mcu_gen_dl_mode utility routine in mt76_connac_mcu.h since it is shared by all drivers. Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
committed by
Felix Fietkau
parent
a6ef46fccc
commit
9e90c35110
@@ -71,19 +71,6 @@ struct mt7663_fw_buf {
|
||||
|
||||
#define IMG_CRC_LEN 4
|
||||
|
||||
#define FW_FEATURE_SET_ENCRYPT BIT(0)
|
||||
#define FW_FEATURE_SET_KEY_IDX GENMASK(2, 1)
|
||||
|
||||
#define DL_MODE_ENCRYPT BIT(0)
|
||||
#define DL_MODE_KEY_IDX GENMASK(2, 1)
|
||||
#define DL_MODE_RESET_SEC_IV BIT(3)
|
||||
#define DL_MODE_WORKING_PDA_CR4 BIT(4)
|
||||
#define DL_MODE_VALID_RAM_ENTRY BIT(5)
|
||||
#define DL_MODE_NEED_RSP BIT(31)
|
||||
|
||||
#define FW_START_OVERRIDE BIT(0)
|
||||
#define FW_START_WORKING_PDA_CR4 BIT(2)
|
||||
|
||||
void mt7615_mcu_fill_msg(struct mt7615_dev *dev, struct sk_buff *skb,
|
||||
int cmd, int *wait_seq)
|
||||
{
|
||||
@@ -1303,20 +1290,6 @@ static int mt7615_load_patch(struct mt7615_dev *dev, u32 addr, const char *name)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static u32 mt7615_mcu_gen_dl_mode(u8 feature_set, bool is_cr4)
|
||||
{
|
||||
u32 ret = 0;
|
||||
|
||||
ret |= (feature_set & FW_FEATURE_SET_ENCRYPT) ?
|
||||
(DL_MODE_ENCRYPT | DL_MODE_RESET_SEC_IV) : 0;
|
||||
ret |= FIELD_PREP(DL_MODE_KEY_IDX,
|
||||
FIELD_GET(FW_FEATURE_SET_KEY_IDX, feature_set));
|
||||
ret |= DL_MODE_NEED_RSP;
|
||||
ret |= is_cr4 ? DL_MODE_WORKING_PDA_CR4 : 0;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int
|
||||
mt7615_mcu_send_ram_firmware(struct mt7615_dev *dev,
|
||||
const struct mt7615_fw_trailer *hdr,
|
||||
@@ -1327,7 +1300,8 @@ mt7615_mcu_send_ram_firmware(struct mt7615_dev *dev,
|
||||
u32 len, addr, mode;
|
||||
|
||||
for (i = 0; i < n_region; i++) {
|
||||
mode = mt7615_mcu_gen_dl_mode(hdr[i].feature_set, is_cr4);
|
||||
mode = mt76_connac_mcu_gen_dl_mode(&dev->mt76,
|
||||
hdr[i].feature_set, is_cr4);
|
||||
len = le32_to_cpu(hdr[i].len) + IMG_CRC_LEN;
|
||||
addr = le32_to_cpu(hdr[i].addr);
|
||||
|
||||
@@ -1575,7 +1549,8 @@ static int mt7663_load_n9(struct mt7615_dev *dev, const char *name)
|
||||
dev_info(dev->mt76.dev, "Parsing tailer Region: %d\n", i);
|
||||
|
||||
buf = (const struct mt7663_fw_buf *)(base_addr - shift);
|
||||
mode = mt7615_mcu_gen_dl_mode(buf->feature_set, false);
|
||||
mode = mt76_connac_mcu_gen_dl_mode(&dev->mt76,
|
||||
buf->feature_set, false);
|
||||
addr = le32_to_cpu(buf->img_dest_addr);
|
||||
len = le32_to_cpu(buf->img_size);
|
||||
|
||||
|
||||
@@ -6,6 +6,26 @@
|
||||
|
||||
#include "mt76_connac.h"
|
||||
|
||||
#define FW_FEATURE_SET_ENCRYPT BIT(0)
|
||||
#define FW_FEATURE_SET_KEY_IDX GENMASK(2, 1)
|
||||
#define FW_FEATURE_ENCRY_MODE BIT(4)
|
||||
#define FW_FEATURE_OVERRIDE_ADDR BIT(5)
|
||||
|
||||
#define DL_MODE_ENCRYPT BIT(0)
|
||||
#define DL_MODE_KEY_IDX GENMASK(2, 1)
|
||||
#define DL_MODE_RESET_SEC_IV BIT(3)
|
||||
#define DL_MODE_WORKING_PDA_CR4 BIT(4)
|
||||
#define DL_MODE_VALID_RAM_ENTRY BIT(5)
|
||||
#define DL_CONFIG_ENCRY_MODE_SEL BIT(6)
|
||||
#define DL_MODE_NEED_RSP BIT(31)
|
||||
|
||||
#define FW_START_OVERRIDE BIT(0)
|
||||
#define FW_START_WORKING_PDA_CR4 BIT(2)
|
||||
|
||||
#define PATCH_SEC_NOT_SUPPORT GENMASK(31, 0)
|
||||
#define PATCH_SEC_TYPE_MASK GENMASK(15, 0)
|
||||
#define PATCH_SEC_TYPE_INFO 0x2
|
||||
|
||||
struct tlv {
|
||||
__le16 tag;
|
||||
__le16 len;
|
||||
@@ -1455,6 +1475,24 @@ mt76_connac_mcu_get_cipher(int cipher)
|
||||
}
|
||||
}
|
||||
|
||||
static inline u32
|
||||
mt76_connac_mcu_gen_dl_mode(struct mt76_dev *dev, u8 feature_set, bool is_wa)
|
||||
{
|
||||
u32 ret = 0;
|
||||
|
||||
ret |= feature_set & FW_FEATURE_SET_ENCRYPT ?
|
||||
DL_MODE_ENCRYPT | DL_MODE_RESET_SEC_IV : 0;
|
||||
if (is_mt7921(dev))
|
||||
ret |= feature_set & FW_FEATURE_ENCRY_MODE ?
|
||||
DL_CONFIG_ENCRY_MODE_SEL : 0;
|
||||
ret |= FIELD_PREP(DL_MODE_KEY_IDX,
|
||||
FIELD_GET(FW_FEATURE_SET_KEY_IDX, feature_set));
|
||||
ret |= DL_MODE_NEED_RSP;
|
||||
ret |= is_wa ? DL_MODE_WORKING_PDA_CR4 : 0;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define to_wcid_lo(id) FIELD_GET(GENMASK(7, 0), (u16)id)
|
||||
#define to_wcid_hi(id) FIELD_GET(GENMASK(9, 8), (u16)id)
|
||||
|
||||
|
||||
@@ -66,22 +66,6 @@ struct mt7915_fw_region {
|
||||
|
||||
#define MCU_PATCH_ADDRESS 0x200000
|
||||
|
||||
#define FW_FEATURE_SET_ENCRYPT BIT(0)
|
||||
#define FW_FEATURE_SET_KEY_IDX GENMASK(2, 1)
|
||||
#define FW_FEATURE_OVERRIDE_ADDR BIT(5)
|
||||
|
||||
#define DL_MODE_ENCRYPT BIT(0)
|
||||
#define DL_MODE_KEY_IDX GENMASK(2, 1)
|
||||
#define DL_MODE_RESET_SEC_IV BIT(3)
|
||||
#define DL_MODE_WORKING_PDA_CR4 BIT(4)
|
||||
#define DL_MODE_NEED_RSP BIT(31)
|
||||
|
||||
#define FW_START_OVERRIDE BIT(0)
|
||||
#define FW_START_WORKING_PDA_CR4 BIT(2)
|
||||
|
||||
#define PATCH_SEC_TYPE_MASK GENMASK(15, 0)
|
||||
#define PATCH_SEC_TYPE_INFO 0x2
|
||||
|
||||
#define HE_PHY(p, c) u8_get_bits(c, IEEE80211_HE_PHY_##p)
|
||||
#define HE_MAC(m, c) u8_get_bits(c, IEEE80211_HE_MAC_##m)
|
||||
|
||||
@@ -2042,20 +2026,6 @@ static int mt7915_load_patch(struct mt7915_dev *dev)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static u32 mt7915_mcu_gen_dl_mode(u8 feature_set, bool is_wa)
|
||||
{
|
||||
u32 ret = 0;
|
||||
|
||||
ret |= (feature_set & FW_FEATURE_SET_ENCRYPT) ?
|
||||
(DL_MODE_ENCRYPT | DL_MODE_RESET_SEC_IV) : 0;
|
||||
ret |= FIELD_PREP(DL_MODE_KEY_IDX,
|
||||
FIELD_GET(FW_FEATURE_SET_KEY_IDX, feature_set));
|
||||
ret |= DL_MODE_NEED_RSP;
|
||||
ret |= is_wa ? DL_MODE_WORKING_PDA_CR4 : 0;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int
|
||||
mt7915_mcu_send_ram_firmware(struct mt7915_dev *dev,
|
||||
const struct mt7915_fw_trailer *hdr,
|
||||
@@ -2071,7 +2041,8 @@ mt7915_mcu_send_ram_firmware(struct mt7915_dev *dev,
|
||||
|
||||
region = (const struct mt7915_fw_region *)((const u8 *)hdr -
|
||||
(hdr->n_region - i) * sizeof(*region));
|
||||
mode = mt7915_mcu_gen_dl_mode(region->feature_set, is_wa);
|
||||
mode = mt76_connac_mcu_gen_dl_mode(&dev->mt76,
|
||||
region->feature_set, is_wa);
|
||||
len = le32_to_cpu(region->len);
|
||||
addr = le32_to_cpu(region->addr);
|
||||
|
||||
|
||||
@@ -67,25 +67,6 @@ struct mt7921_fw_region {
|
||||
#define MT_STA_BFER BIT(0)
|
||||
#define MT_STA_BFEE BIT(1)
|
||||
|
||||
#define FW_FEATURE_SET_ENCRYPT BIT(0)
|
||||
#define FW_FEATURE_SET_KEY_IDX GENMASK(2, 1)
|
||||
#define FW_FEATURE_ENCRY_MODE BIT(4)
|
||||
#define FW_FEATURE_OVERRIDE_ADDR BIT(5)
|
||||
|
||||
#define DL_MODE_ENCRYPT BIT(0)
|
||||
#define DL_MODE_KEY_IDX GENMASK(2, 1)
|
||||
#define DL_MODE_RESET_SEC_IV BIT(3)
|
||||
#define DL_MODE_WORKING_PDA_CR4 BIT(4)
|
||||
#define DL_CONFIG_ENCRY_MODE_SEL BIT(6)
|
||||
#define DL_MODE_NEED_RSP BIT(31)
|
||||
|
||||
#define FW_START_OVERRIDE BIT(0)
|
||||
#define FW_START_WORKING_PDA_CR4 BIT(2)
|
||||
|
||||
#define PATCH_SEC_NOT_SUPPORT GENMASK(31, 0)
|
||||
#define PATCH_SEC_TYPE_MASK GENMASK(15, 0)
|
||||
#define PATCH_SEC_TYPE_INFO 0x2
|
||||
|
||||
#define PATCH_SEC_ENC_TYPE_MASK GENMASK(31, 24)
|
||||
#define PATCH_SEC_ENC_TYPE_PLAIN 0x00
|
||||
#define PATCH_SEC_ENC_TYPE_AES 0x01
|
||||
@@ -583,22 +564,6 @@ static int mt7921_load_patch(struct mt7921_dev *dev)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static u32 mt7921_mcu_gen_dl_mode(u8 feature_set, bool is_wa)
|
||||
{
|
||||
u32 ret = 0;
|
||||
|
||||
ret |= (feature_set & FW_FEATURE_SET_ENCRYPT) ?
|
||||
(DL_MODE_ENCRYPT | DL_MODE_RESET_SEC_IV) : 0;
|
||||
ret |= (feature_set & FW_FEATURE_ENCRY_MODE) ?
|
||||
DL_CONFIG_ENCRY_MODE_SEL : 0;
|
||||
ret |= FIELD_PREP(DL_MODE_KEY_IDX,
|
||||
FIELD_GET(FW_FEATURE_SET_KEY_IDX, feature_set));
|
||||
ret |= DL_MODE_NEED_RSP;
|
||||
ret |= is_wa ? DL_MODE_WORKING_PDA_CR4 : 0;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int
|
||||
mt7921_mcu_send_ram_firmware(struct mt7921_dev *dev,
|
||||
const struct mt7921_fw_trailer *hdr,
|
||||
@@ -616,7 +581,8 @@ mt7921_mcu_send_ram_firmware(struct mt7921_dev *dev,
|
||||
|
||||
region = (const struct mt7921_fw_region *)((const u8 *)hdr -
|
||||
(hdr->n_region - i) * sizeof(*region));
|
||||
mode = mt7921_mcu_gen_dl_mode(region->feature_set, is_wa);
|
||||
mode = mt76_connac_mcu_gen_dl_mode(&dev->mt76,
|
||||
region->feature_set, is_wa);
|
||||
len = le32_to_cpu(region->len);
|
||||
addr = le32_to_cpu(region->addr);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user