Commit 40bb2ab4 authored by Ping-Ke Shih's avatar Ping-Ke Shih Committed by Kalle Valo
Browse files

wifi: rtw89: 8851b: add to read efuse version to recognize hardware version B



8851B hardware version A and B use different firmware, but register version
code of these two are the same, so add this helper to read efuse version to
determine which version is installed.

Signed-off-by: default avatarPing-Ke Shih <pkshih@realtek.com>
Signed-off-by: default avatarKalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20230512061220.16544-2-pkshih@realtek.com
parent 103d6e9d
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -7,6 +7,10 @@
#include "mac.h"
#include "reg.h"

#define EF_FV_OFSET 0x5ea
#define EF_CV_MASK GENMASK(7, 4)
#define EF_CV_INV 15

enum rtw89_efuse_bank {
	RTW89_EFUSE_BANK_WIFI,
	RTW89_EFUSE_BANK_BT,
@@ -328,3 +332,20 @@ int rtw89_parse_phycap_map(struct rtw89_dev *rtwdev)

	return ret;
}

int rtw89_read_efuse_ver(struct rtw89_dev *rtwdev, u8 *ecv)
{
	int ret;
	u8 val;

	ret = rtw89_dump_physical_efuse_map(rtwdev, &val, EF_FV_OFSET, 1, false);
	if (ret)
		return ret;

	*ecv = u8_get_bits(val, EF_CV_MASK);
	if (*ecv == EF_CV_INV)
		return -ENOENT;

	return 0;
}
EXPORT_SYMBOL(rtw89_read_efuse_ver);
+1 −0
Original line number Diff line number Diff line
@@ -9,5 +9,6 @@

int rtw89_parse_efuse_map(struct rtw89_dev *rtwdev);
int rtw89_parse_phycap_map(struct rtw89_dev *rtwdev);
int rtw89_read_efuse_ver(struct rtw89_dev *rtwdev, u8 *efv);

#endif