wifi: rtw89: fw: add version field to BB MCU firmware element
8922AE has more than one hardware version, and they use different BB MCU firmware, so occupy a byte from element priv[] to annotate version. Since there are more than one firmware and only matched version is adopted, return 1 to ignore not matched firmware. +===========================================+ | elm ID | elm size | version | | +----------+----------+----------+----------+ | | element_priv[] | +-------------------------------------------+ change to | v +===========================================+ | elm ID | elm size | version | | +----------+----------+----------+----------+ | | cv | element_rsvd[] | +-------------------------------------------+ Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> Signed-off-by: Kalle Valo <kvalo@kernel.org> Link: https://msgid.link/20231213005054.10568-3-pkshih@realtek.com
This commit is contained in:
parent
d60e73e5dd
commit
344c066f2f
@ -401,10 +401,14 @@ int __rtw89_fw_recognize_from_elm(struct rtw89_dev *rtwdev,
|
||||
const union rtw89_fw_element_arg arg)
|
||||
{
|
||||
enum rtw89_fw_type type = arg.fw_type;
|
||||
struct rtw89_hal *hal = &rtwdev->hal;
|
||||
struct rtw89_fw_suit *fw_suit;
|
||||
|
||||
if (hal->cv != elm->u.bbmcu.cv)
|
||||
return 1; /* ignore this element */
|
||||
|
||||
fw_suit = rtw89_fw_suit_get(rtwdev, type);
|
||||
fw_suit->data = elm->u.common.contents;
|
||||
fw_suit->data = elm->u.bbmcu.contents;
|
||||
fw_suit->size = le32_to_cpu(elm->size);
|
||||
|
||||
return rtw89_fw_update_ver(rtwdev, type, fw_suit);
|
||||
@ -820,6 +824,8 @@ int rtw89_fw_recognize_elements(struct rtw89_dev *rtwdev)
|
||||
goto next;
|
||||
|
||||
ret = handler->fn(rtwdev, hdr, handler->arg);
|
||||
if (ret == 1) /* ignore this element */
|
||||
goto next;
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
@ -3532,6 +3532,11 @@ struct rtw89_fw_element_hdr {
|
||||
__le32 data;
|
||||
} __packed regs[];
|
||||
} __packed reg2;
|
||||
struct {
|
||||
u8 cv;
|
||||
u8 priv[7];
|
||||
u8 contents[];
|
||||
} __packed bbmcu;
|
||||
struct {
|
||||
__le32 bitmap; /* bitmap of enum rtw89_fw_txpwr_trk_type */
|
||||
__le32 rsvd;
|
||||
|
Loading…
x
Reference in New Issue
Block a user