Update to 5.13.1 from upstream

This commit is contained in:
Rin Cat (鈴猫)
2021-12-04 07:42:09 -05:00
parent aab1daf818
commit c0e109d401
352 changed files with 50307 additions and 18938 deletions

View File

@@ -56,6 +56,7 @@ BOOLEAN rtw_file_efuse_IsMasked(PADAPTER pAdapter, u16 Offset, u8 *maskbuf)
return (result > 0) ? 0 : 1;
}
BOOLEAN efuse_IsBT_Masked(PADAPTER pAdapter, u16 Offset)
{
PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter);
@@ -64,6 +65,7 @@ BOOLEAN efuse_IsBT_Masked(PADAPTER pAdapter, u16 Offset)
return FALSE;
#ifdef CONFIG_BT_EFUSE_MASK
#ifdef CONFIG_RTL8822C
#ifdef CONFIG_USB_HCI
if (IS_HARDWARE_TYPE_8822C(pAdapter))
return (IS_BT_MASKED(8822C, _MUSB, Offset)) ? TRUE : FALSE;
@@ -76,6 +78,17 @@ BOOLEAN efuse_IsBT_Masked(PADAPTER pAdapter, u16 Offset)
if (IS_HARDWARE_TYPE_8822C(pAdapter))
return (IS_BT_MASKED(8822C, _MSDIO, Offset)) ? TRUE : FALSE;
#endif
#endif /*#ifdef CONFIG_RTL8822C*/
#ifdef CONFIG_RTL8723F
#ifdef CONFIG_USB_HCI
if (IS_HARDWARE_TYPE_8723F(pAdapter))
return (IS_BT_MASKED(8723F, _MUSB, Offset)) ? TRUE : FALSE;
#endif
#ifdef CONFIG_SDIO_HCI
if (IS_HARDWARE_TYPE_8723F(pAdapter))
return (IS_BT_MASKED(8723F, _MSDIO, Offset)) ? TRUE : FALSE;
#endif
#endif /*#ifdef CONFIG_RTL8723F*/
#endif /* CONFIG_BT_EFUSE_MASK */
return FALSE;
}
@@ -85,18 +98,30 @@ void rtw_bt_efuse_mask_array(PADAPTER pAdapter, u8 *pArray)
PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter);
#ifdef CONFIG_BT_EFUSE_MASK
#ifdef CONFIG_RTL8822C
#ifdef CONFIG_USB_HCI
if (IS_HARDWARE_TYPE_8822CU(pAdapter))
GET_MASK_ARRAY(8822C, _MUSB, pArray);
GET_BT_MASK_ARRAY(8822C, _MUSB, pArray);
#endif
#ifdef CONFIG_PCI_HCI
if (IS_HARDWARE_TYPE_8822CE(pAdapter))
GET_MASK_ARRAY(8822C, _MPCIE, pArray);
GET_BT_MASK_ARRAY(8822C, _MPCIE, pArray);
#endif
#ifdef CONFIG_SDIO_HCI
if (IS_HARDWARE_TYPE_8822CS(pAdapter))
GET_MASK_ARRAY(8822C, _MSDIO, pArray);
GET_BT_MASK_ARRAY(8822C, _MSDIO, pArray);
#endif
#endif /*#ifdef CONFIG_RTL8822C*/
#ifdef CONFIG_RTL8723F
#ifdef CONFIG_USB_HCI
if (IS_HARDWARE_TYPE_8723FU(pAdapter))
GET_BT_MASK_ARRAY(8723F, _MUSB, pArray);
#endif
#ifdef CONFIG_SDIO_HCI
if (IS_HARDWARE_TYPE_8723FS(pAdapter))
GET_BT_MASK_ARRAY(8723F, _MSDIO, pArray);
#endif
#endif /*#ifdef CONFIG_RTL8723F*/
#endif /* CONFIG_BT_EFUSE_MASK */
}
@@ -106,6 +131,7 @@ u16 rtw_get_bt_efuse_mask_arraylen(PADAPTER pAdapter)
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter);
#ifdef CONFIG_BT_EFUSE_MASK
#ifdef CONFIG_RTL8822C
#ifdef CONFIG_USB_HCI
if (IS_HARDWARE_TYPE_8822CU(pAdapter))
return GET_BT_MASK_ARRAY_LEN(8822C, _MUSB);
@@ -118,6 +144,17 @@ u16 rtw_get_bt_efuse_mask_arraylen(PADAPTER pAdapter)
if (IS_HARDWARE_TYPE_8822CS(pAdapter))
return GET_BT_MASK_ARRAY_LEN(8822C, _MSDIO);
#endif
#endif /*#ifdef CONFIG_RTL8822C*/
#ifdef CONFIG_RTL8723F
#ifdef CONFIG_USB_HCI
if (IS_HARDWARE_TYPE_8723FU(pAdapter))
return GET_BT_MASK_ARRAY_LEN(8723F, _MUSB);
#endif
#ifdef CONFIG_SDIO_HCI
if (IS_HARDWARE_TYPE_8723FS(pAdapter))
return GET_BT_MASK_ARRAY_LEN(8723F, _MSDIO);
#endif
#endif /*CONFIG_RTL8723F*/
#endif /* CONFIG_BT_EFUSE_MASK */
return 0;
@@ -199,6 +236,10 @@ BOOLEAN efuse_IsMasked(PADAPTER pAdapter, u16 Offset)
if (IS_HARDWARE_TYPE_8814B(pAdapter))
return (IS_MASKED(8814B, _MUSB, Offset)) ? TRUE : FALSE;
#endif
#if defined(CONFIG_RTL8723F)
if (IS_HARDWARE_TYPE_8723F(pAdapter))
return (IS_MASKED(8723F, _MUSB, Offset)) ? TRUE : FALSE;
#endif
#endif /*CONFIG_USB_HCI*/
#ifdef CONFIG_PCI_HCI
@@ -290,6 +331,10 @@ BOOLEAN efuse_IsMasked(PADAPTER pAdapter, u16 Offset)
if (IS_HARDWARE_TYPE_8822C(pAdapter))
return (IS_MASKED(8822C, _MSDIO, Offset)) ? TRUE : FALSE;
#endif
#if defined(CONFIG_RTL8723F)
if (IS_HARDWARE_TYPE_8723F(pAdapter))
return (IS_MASKED(8723F, _MSDIO, Offset)) ? TRUE : FALSE;
#endif
#endif /*CONFIG_SDIO_HCI*/
return FALSE;
@@ -355,6 +400,10 @@ void rtw_efuse_mask_array(PADAPTER pAdapter, u8 *pArray)
if (IS_HARDWARE_TYPE_8814B(pAdapter))
GET_MASK_ARRAY(8814B, _MUSB, pArray);
#endif
#if defined(CONFIG_RTL8723F)
if (IS_HARDWARE_TYPE_8723F(pAdapter))
GET_MASK_ARRAY(8723F, _MUSB, pArray);
#endif
#endif /*CONFIG_USB_HCI*/
#ifdef CONFIG_PCI_HCI
@@ -445,6 +494,10 @@ void rtw_efuse_mask_array(PADAPTER pAdapter, u8 *pArray)
if (IS_HARDWARE_TYPE_8822C(pAdapter))
GET_MASK_ARRAY(8822C , _MSDIO, pArray);
#endif
#if defined(CONFIG_RTL8723F)
if (IS_HARDWARE_TYPE_8723F(pAdapter))
GET_MASK_ARRAY(8723F, _MSDIO, pArray);
#endif
#endif /*CONFIG_SDIO_HCI*/
}
@@ -509,6 +562,10 @@ u16 rtw_get_efuse_mask_arraylen(PADAPTER pAdapter)
return GET_MASK_ARRAY_LEN(8814B, _MUSB);
}
#endif
#if defined(CONFIG_RTL8723F)
if (IS_HARDWARE_TYPE_8723F(pAdapter))
return GET_MASK_ARRAY_LEN(8723F, _MUSB);
#endif
#endif /*CONFIG_USB_HCI*/
#ifdef CONFIG_PCI_HCI
@@ -599,6 +656,10 @@ u16 rtw_get_efuse_mask_arraylen(PADAPTER pAdapter)
if (IS_HARDWARE_TYPE_8822C(pAdapter))
return GET_MASK_ARRAY_LEN(8822C, _MSDIO);
#endif
#if defined(CONFIG_RTL8723F)
if (IS_HARDWARE_TYPE_8723F(pAdapter))
return GET_MASK_ARRAY_LEN(8723F, _MSDIO);
#endif
#endif/*CONFIG_SDIO_HCI*/
return 0;
}
@@ -716,6 +777,11 @@ void rtw_efuse_analyze(PADAPTER padapter, u8 Type, u8 Fake)
eFuseWord = rtw_zmalloc(EFUSE_MAX_SECTION_NUM * (EFUSE_MAX_WORD_UNIT * 2));
if (eFuseWord == NULL) {
RTW_INFO("%s:rtw_zmalloc eFuseWord = NULL !!\n", __func__);
return;
}
RTW_INFO("\n");
if (Type == 0) {
if (Fake == 0) {
@@ -1032,7 +1098,7 @@ u8 efuse_bt_GetCurrentSize(PADAPTER adapter, u16 *usesize)
u16 efuse_bt_GetMaxSize(PADAPTER adapter)
{
return EFUSE_BT_REAL_CONTENT_LEN;
return EFUSE_BT_REAL_CONTENT_LEN - EFUSE_PROTECT_BYTES_BANK;
}
void EFUSE_GetEfuseDefinition(PADAPTER adapter, u8 efusetype, u8 type, void *out, BOOLEAN test)
@@ -1237,6 +1303,7 @@ exit:
return status;
}
u8 rtw_efuse_map_write(PADAPTER adapter, u16 addr, u16 cnts, u8 *data)
{
struct dvobj_priv *d;
@@ -1323,22 +1390,23 @@ static void rtw_bt_mask_map_read(PADAPTER padapter, u16 addr, u16 cnts, u8 *data
{
u16 i = 0;
#ifdef CONFIG_BT_EFUSE_MASK
if (padapter->registrypriv.boffefusemask == 0) {
for (i = 0; i < cnts; i++) {
if (padapter->registrypriv.bBTFileMaskEfuse == _TRUE) {
if (rtw_file_efuse_IsMasked(padapter, addr + i, btmaskfileBuffer)) /*use BT file efuse mask.*/
data[i] = 0xff;
else
RTW_DBG("data[%x] = %x\n", i, data[i]);
RTW_INFO("data[%x] = %x\n", i, data[i]);
} else {
if (efuse_IsBT_Masked(padapter, addr + i)) /*use drv internal efuse mask.*/
data[i] = 0xff;
else
RTW_DBG("data[%x] = %x\n", i, data[i]);
RTW_INFO("data[%x] = %x\n", i, data[i]);
}
}
}
#endif /*CONFIG_BT_EFUSE_MASK*/
}
u8 rtw_BT_efuse_map_read(PADAPTER adapter, u16 addr, u16 cnts, u8 *data)
@@ -1350,6 +1418,7 @@ u8 rtw_BT_efuse_map_read(PADAPTER adapter, u16 addr, u16 cnts, u8 *data)
return _SUCCESS;
}
static u16
hal_EfuseGetCurrentSize_BT(
PADAPTER padapter,
@@ -1435,6 +1504,28 @@ hal_EfuseGetCurrentSize_BT(
return retU2;
}
#ifdef CONFIG_RTL8822C
void rtw_pre_bt_efuse(PADAPTER padapter)
{
char pgdata[4] = {0x72, 0x80, 0x14, 0x90}; /*BT 5M PLL*/
u8 status = 1;
u8 bkmask;
BOOLEAN bt_en;
bkmask = padapter->registrypriv.boffefusemask;
padapter->registrypriv.boffefusemask = 1;
bt_en = rtw_read8(padapter, 0x6A) & BIT2 ? _TRUE : _FALSE;
if (IS_HARDWARE_TYPE_8822C(padapter) && bt_en == _TRUE) {
status = rtw_BT_efuse_map_write(padapter, 0x1f8, 4, pgdata);
RTW_INFO("%s done!!!\n", __FUNCTION__);
}
if (status == _FAIL)
RTW_INFO("%s: fail\n", __FUNCTION__);
padapter->registrypriv.boffefusemask = bkmask;
}
#endif
u8 rtw_BT_efuse_map_write(PADAPTER adapter, u16 addr, u16 cnts, u8 *data)
{
#define RT_ASSERT_RET(expr) \
@@ -1477,10 +1568,10 @@ u8 rtw_BT_efuse_map_write(PADAPTER adapter, u16 addr, u16 cnts, u8 *data)
_rtw_memcpy(efuse , map, mapLen);
_rtw_memcpy(efuse + addr, data, cnts);
#ifdef CONFIG_BT_EFUSE_MASK
if (adapter->registrypriv.boffefusemask == 0) {
for (i = 0; i < cnts; i++) {
if (adapter->registrypriv.bFileMaskEfuse == _TRUE) {
if (adapter->registrypriv.bBTFileMaskEfuse == _TRUE) {
if (rtw_file_efuse_IsMasked(adapter, addr + i, btmaskfileBuffer)) /*use file efuse mask. */
efuse[addr + i] = map[addr + i];
} else {
@@ -1490,6 +1581,7 @@ u8 rtw_BT_efuse_map_write(PADAPTER adapter, u16 addr, u16 cnts, u8 *data)
RTW_INFO("%s , efuse[%x] = %x, map = %x\n", __func__, addr + i, efuse[ addr + i], map[addr + i]);
}
}
#endif /*CONFIG_BT_EFUSE_MASK*/
/* precheck pg efuse data byte*/
chk_total_byte = 0;
idx = 0;
@@ -1533,9 +1625,9 @@ u8 rtw_BT_efuse_map_write(PADAPTER adapter, u16 addr, u16 cnts, u8 *data)
j = (addr + idx) & 0x7;
_rtw_memcpy(newdata, &map[offset << 3], PGPKT_DATA_SIZE);
for (i = j; i < PGPKT_DATA_SIZE && idx < cnts; i++, idx++) {
if (efuse[idx] != map[addr + idx]) {
if (efuse[addr + idx] != map[addr + idx]) {
word_en &= ~BIT(i >> 1);
newdata[i] = efuse[idx];
newdata[i] = efuse[addr + idx];
}
}
@@ -1553,7 +1645,10 @@ u8 rtw_BT_efuse_map_write(PADAPTER adapter, u16 addr, u16 cnts, u8 *data)
offset++;
}
exit:
rtw_mfree(map, mapLen);
if (efuse)
rtw_mfree(efuse, mapLen);
if (map)
rtw_mfree(map, mapLen);
return ret;
}
@@ -3267,7 +3362,7 @@ int retriveAdaptorInfoFile(char *path, u8 *efuse_data)
}
#endif /* CONFIG_ADAPTOR_INFO_CACHING_FILE */
u8 rtw_efuse_file_read(PADAPTER padapter, u8 *filepatch, u8 *buf, u32 len)
u8 rtw_efuse_file_read(PADAPTER padapter, u8 *filepath, u8 *buf, u32 len)
{
char *ptmpbuf = NULL, *ptr;
u8 val8;
@@ -3279,27 +3374,24 @@ u8 rtw_efuse_file_read(PADAPTER padapter, u8 *filepatch, u8 *buf, u32 len)
if (ptmpbuf == NULL)
return _FALSE;
count = rtw_retrieve_from_file(filepatch, ptmpbuf, bufsize);
count = rtw_retrieve_from_file(filepath, ptmpbuf, bufsize);
if (count <= 90) {
rtw_mfree(ptmpbuf, bufsize);
RTW_ERR("%s, filepatch %s, size=%d, FAIL!!\n", __FUNCTION__, filepatch, count);
RTW_ERR("%s, filepatch %s, size=%d, FAIL!!\n", __FUNCTION__, filepath, count);
return _FALSE;
}
i = 0;
j = 0;
ptr = ptmpbuf;
while ((j < len) && (i < count)) {
if (ptmpbuf[i] == '\0')
break;
ptr = strpbrk(&ptmpbuf[i], " \t\n\r");
if (ptr) {
if (ptr == &ptmpbuf[i]) {
i++;
continue;
}
/* Add string terminating null */
*ptr = 0;
} else {
@@ -3314,15 +3406,50 @@ u8 rtw_efuse_file_read(PADAPTER padapter, u8 *filepatch, u8 *buf, u32 len)
RTW_DBG("i=%d, j=%d, 0x%02x\n", i, j, buf[j]);
j++;
}
i = ptr - ptmpbuf + 1;
}
rtw_mfree(ptmpbuf, bufsize);
RTW_INFO("%s, filepatch %s, size=%d, done\n", __FUNCTION__, filepatch, count);
RTW_INFO("%s, filepatch %s, size=%d, done\n", __FUNCTION__, filepath, count);
return _TRUE;
}
u8 rtw_efuse_file_store(PADAPTER padapter, u8 *filepath, u8 *buf, u32 len)
{
int err = 0, i = 0, j = 0, mapLen = 0 ;
char *cbuf, *pchr;
cbuf = rtw_zmalloc(len * 3);
pchr = cbuf;
if (filepath && buf) {
if (cbuf == NULL) {
RTW_INFO("%s, malloc cbuf _FAIL\n", __FUNCTION__);
err = _FAIL;
} else {
for (i = 0; i <= len; i += 16) {
for (j = 0; j < 16; j++)
pchr += sprintf(pchr, "%02X ", buf[i + j]);
pchr += sprintf(pchr, "\n");
}
err = rtw_store_to_file(filepath, cbuf, strlen(cbuf));
RTW_INFO("%s, rtw_store_to_file len=%d,err =%d, len(cbuf)=%zd\n", __FUNCTION__, len, err, strlen(cbuf));
if (err == strlen(cbuf)) {
err = _SUCCESS;
RTW_INFO("%s, filepatch %s, len=%d, done\n", __FUNCTION__, filepath, len);
} else {
err = _FAIL;
RTW_INFO("%s, filepatch %s, len=%d,err =%d, _FAIL\n", __FUNCTION__, filepath, len, err);
}
}
}
if (cbuf)
rtw_mfree(cbuf, len * 3);
return err;
}
#ifdef CONFIG_EFUSE_CONFIG_FILE
u32 rtw_read_efuse_from_file(const char *path, u8 *buf, int map_size)
{