1
0
mirror of https://github.com/aircrack-ng/rtl8812au.git synced 2024-11-23 05:44:40 +00:00

Merge pull request #182 from kimocoder/v5.3.4

V5.3.4
This commit is contained in:
Christian B 2018-08-25 20:40:07 +02:00 committed by GitHub
commit 7b574511ef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 111 additions and 72 deletions

View File

@ -1826,7 +1826,7 @@ void mgt_dispatcher(_adapter *padapter, union recv_frame *precv_frame)
ptable->func = &OnAuth;
else
ptable->func = &OnAuthClient;
/* pass through */
/* intentional fallthrough */
case WIFI_ASSOCREQ:
case WIFI_REASSOCREQ:
_mgt_dispatcher(padapter, ptable, precv_frame);
@ -2657,14 +2657,15 @@ unsigned int OnAuth(_adapter *padapter, union recv_frame *precv_frame)
if (rtw_is_list_empty(&pstat->asoc_list) == _FALSE) {
rtw_list_delete(&pstat->asoc_list);
pstapriv->asoc_list_cnt--;
if (pstat->expire_to > 0)
if (pstat->expire_to > 0) {
;/* TODO: STA re_auth within expire_to */
}
}
_exit_critical_bh(&pstapriv->asoc_list_lock, &irqL);
if (seq == 1)
; /* TODO: STA re_auth and auth timeout */
if (seq == 1) {
;/* TODO: STA re_auth and auth timeout */
}
}
}

View File

@ -2367,8 +2367,9 @@ sint validate_recv_frame(_adapter *adapter, union recv_frame *precv_frame)
dump_rx_packet(ptr);
}
#endif
} else
} else {
DBG_COUNTER(adapter->rx_logs.core_rx_pre_data_handled);
}
break;
default:
DBG_COUNTER(adapter->rx_logs.core_rx_pre_unknown);

View File

@ -2256,9 +2256,9 @@ int rtw_get_bcn_keys(ADAPTER *Adapter, u8 *pframe, u32 packet_len,
_rtw_memcpy(recv_beacon->ssid, elems.ssid, elems.ssid_len);
recv_beacon->ssid_len = elems.ssid_len;
} else
; /* means hidden ssid */
} else {
;/* means hidden ssid */
}
/* checking RSN first */
if (elems.rsn_ie && elems.rsn_ie_len) {
recv_beacon->encryp_protocol = ENCRYP_PROTOCOL_WPA2;

View File

@ -1333,9 +1333,9 @@ static s32 update_attrib(_adapter *padapter, _pkt *pkt, struct pkt_attrib *pattr
_rtw_memcpy(pattrib->ra, pattrib->dst, ETH_ALEN);
_rtw_memcpy(pattrib->ta, get_bssid(pmlmepriv), ETH_ALEN);
DBG_COUNTER(padapter->tx_logs.core_tx_upd_attrib_ap);
} else
} else {
DBG_COUNTER(padapter->tx_logs.core_tx_upd_attrib_unknown);
}
get_sta_info:
bmcast = IS_MCAST(pattrib->ra);
if (bmcast) {

View File

@ -1,5 +1,5 @@
PACKAGE_NAME="realtek-rtl88xxau"
PACKAGE_VERSION="5.2.20.2~20180812"
PACKAGE_VERSION="5.2.20.2~20180825"
CLEAN="'make' clean"
BUILT_MODULE_NAME[0]=88XXau
PROCS_NUM=`nproc`

View File

@ -941,7 +941,7 @@ s32 c2h_handler(_adapter *adapter, u8 id, u8 seq, u8 plen, u8 *payload)
#endif
case C2H_EXTEND:
sub_id = payload[0];
/* no handle, goto default */
/* intentional fallthrough */
default:
if (phydm_c2H_content_parsing(adapter_to_phydm(adapter), id, plen, payload) != TRUE)

View File

@ -960,6 +960,7 @@ void mpt_SetRFPath_8812A(PADAPTER pAdapter)
u8 bandwidth = pmp->bandwidth;
u8 eLNA_2g = pHalData->ExternalLNA_2G;
u32 ulAntennaTx, ulAntennaRx;
u32 reg0xC50 = 0;
ulAntennaTx = pHalData->antenna_tx_path;
ulAntennaRx = pHalData->AntennaRxPath;
@ -990,7 +991,6 @@ void mpt_SetRFPath_8812A(PADAPTER pAdapter)
}
switch (ulAntennaRx) {
u32 reg0xC50 = 0;
case ANTENNA_A:
phy_set_bb_reg(pAdapter, rRxPath_Jaguar, bMaskByte0, 0x11);
phy_set_rf_reg(pAdapter, RF_PATH_B, RF_AC_Jaguar, 0xF0000, 0x1); /*/ RF_B_0x0[19:16] = 1, Standby mode*/

View File

@ -310,8 +310,9 @@ odm_txpowertracking_callback_thermal_meter(
/*4 3. Initialize ThermalValues of rf_calibrate_info*/
if (cali_info->is_reloadtxpowerindex)
if (cali_info->is_reloadtxpowerindex) {
PHYDM_DBG(dm, ODM_COMP_TX_PWR_TRACK, "reload ofdm index for band switch\n");
}
/*4 4. Calculate average thermal meter*/

View File

@ -854,16 +854,14 @@ halrf_segment_iqk_trigger(
odm_acquire_spin_lock(dm, RT_IQK_SPINLOCK);
dm->rf_calibrate_info.is_iqk_in_progress = false;
odm_release_spin_lock(dm, RT_IQK_SPINLOCK);
} else
} else {
PHYDM_DBG(dm, ODM_COMP_CALIBRATION, "== Return the IQK CMD, because RFKs in Progress ==\n");
}
}
#endif
u8 halrf_match_iqk_version(void *dm_void)
{
struct dm_struct *dm = (struct dm_struct *)dm_void;
@ -1422,12 +1420,12 @@ halrf_iqk_trigger(
odm_acquire_spin_lock(dm, RT_IQK_SPINLOCK);
dm->rf_calibrate_info.is_iqk_in_progress = false;
odm_release_spin_lock(dm, RT_IQK_SPINLOCK);
} else
} else {
PHYDM_DBG(dm, ODM_COMP_CALIBRATION, "== Return the IQK CMD, because RFKs in Progress ==\n");
}
}
void
halrf_lck_trigger(
void *dm_void
@ -1548,8 +1546,9 @@ halrf_lck_trigger(
odm_acquire_spin_lock(dm, RT_IQK_SPINLOCK);
dm->rf_calibrate_info.is_lck_in_progress = false;
odm_release_spin_lock(dm, RT_IQK_SPINLOCK);
}else
} else {
PHYDM_DBG(dm, ODM_COMP_CALIBRATION, "== Return the LCK CMD, because RFK is in Progress ==\n");
}
}
void

View File

@ -118,9 +118,9 @@ phydm_set_kfree_to_rf_8814a(
/*that means Kfree offset is negative, we need to record it.*/
cali_info->kfree_offset[e_rf_path] = (-1) * cali_info->kfree_offset[e_rf_path];
PHYDM_DBG(dm, ODM_COMP_MP, "phy_ConfigKFree8814A(): kfree_offset = %d\n", cali_info->kfree_offset[e_rf_path]);
} else
} else {
PHYDM_DBG(dm, ODM_COMP_MP, "phy_ConfigKFree8814A(): kfree_offset = %d\n", cali_info->kfree_offset[e_rf_path]);
}
}
@ -152,8 +152,9 @@ phydm_get_thermal_trim_offset_8821c(
PHYDM_DBG(dm, ODM_COMP_MP, "[kfree] 8821c thermal trim flag:0x%02x\n", power_trim_info->flag);
if (power_trim_info->flag & KFREE_FLAG_THERMAL_K_ON)
if (power_trim_info->flag & KFREE_FLAG_THERMAL_K_ON) {
PHYDM_DBG(dm, ODM_COMP_MP, "[kfree] 8821c thermal:%d\n", power_trim_info->thermal);
}
}
@ -308,8 +309,9 @@ phydm_get_thermal_trim_offset_8822b(
PHYDM_DBG(dm, ODM_COMP_MP, "[kfree] 8822b thermal trim flag:0x%02x\n", power_trim_info->flag);
if (power_trim_info->flag & KFREE_FLAG_THERMAL_K_ON)
if (power_trim_info->flag & KFREE_FLAG_THERMAL_K_ON) {
PHYDM_DBG(dm, ODM_COMP_MP, "[kfree] 8822b thermal:%d\n", power_trim_info->thermal);
}
#if 0
} else
return;
@ -503,9 +505,9 @@ phydm_get_pa_bias_offset_8822b(
phydm_set_pa_bias_to_rf_8822b(dm, e_rf_path, tx_pa_bias[e_rf_path]);
power_trim_info->pa_bias_flag |= PA_BIAS_FLAG_ON;
}
else
} else {
PHYDM_DBG(dm, ODM_COMP_MP, "[kfree] 8822b 2g tx pa bias no pg\n");
}
}
@ -579,19 +581,20 @@ void *dm_void)
if (pg_therm != 0xff) {
pg_therm = pg_therm & 0x1f;
if ((pg_therm & BIT(0)) == 0)
if ((pg_therm & BIT(0)) == 0) {
power_trim_info->thermal = (-1 * (pg_therm >> 1));
else
} else {
power_trim_info->thermal = (pg_therm >> 1);
power_trim_info->flag |= KFREE_FLAG_THERMAL_K_ON;
}
}
ODM_RT_TRACE(dm, ODM_COMP_MP, ODM_DBG_LOUD, ("[kfree] 8710b thermal trim flag:0x%02x\n", power_trim_info->flag));
if (power_trim_info->flag & KFREE_FLAG_THERMAL_K_ON)
if (power_trim_info->flag & KFREE_FLAG_THERMAL_K_ON) {
ODM_RT_TRACE(dm, ODM_COMP_MP, ODM_DBG_LOUD, ("[kfree] 8710b thermal:%d\n", power_trim_info->thermal));
}
}
void
@ -619,10 +622,10 @@ phydm_get_power_trim_offset_8710b(
ODM_RT_TRACE(dm, ODM_COMP_MP, ODM_DBG_LOUD, ("[kfree] 8710b power trim flag:0x%02x\n", power_trim_info->flag));
if (power_trim_info->flag & KFREE_FLAG_ON)
ODM_RT_TRACE(dm, ODM_COMP_MP, ODM_DBG_LOUD, ("[kfree] 8710b power_trim_data->bb_gain[0][0]=0x%X\n", power_trim_info->bb_gain[0][0]));
if (power_trim_info->flag & KFREE_FLAG_ON) {
ODM_RT_TRACE(dm, ODM_COMP_MP, ODM_DBG_LOUD, ("[kfree] 8710b power_trim_data->bb_gain[0][0]=0x%X\n", power_trim_info->bb_gain[0][0]));
}
}
void
phydm_set_kfree_to_rf_8710b(

View File

@ -1353,8 +1353,9 @@ phy_iq_calibrate_8812a(
if (dm->fw_offload_ability & PHYDM_RF_IQK_OFFLOAD) {
_phy_iq_calibrate_by_fw_8812a(dm);
phydm_iqk_wait(dm, 500);
if (dm->rf_calibrate_info.is_iqk_in_progress)
if (dm->rf_calibrate_info.is_iqk_in_progress) {
PHYDM_DBG(dm, ODM_COMP_CALIBRATION, "== FW IQK TIMEOUT (Still in progress after 500ms) ==\n");
}
} else
_phy_iq_calibrate_8812a(dm, *dm->channel);
}

View File

@ -622,8 +622,9 @@ void _iqk_tx_8821a(
for (i = 0; i < rx_average; i++) {
PHYDM_DBG(dm, ODM_COMP_CALIBRATION, "RX_X0[0][%d] = %x ;; RX_Y0[0][%d] = %x\n", i, (RX_X0[0][i]) >> 21 & 0x000007ff, i, (RX_Y0[0][i]) >> 21 & 0x000007ff);
if (rx_iqk_loop == 2)
if (rx_iqk_loop == 2) {
PHYDM_DBG(dm, ODM_COMP_CALIBRATION, "RX_X0[1][%d] = %x ;; RX_Y0[1][%d] = %x\n", i, (RX_X0[1][i]) >> 21 & 0x000007ff, i, (RX_Y0[1][i]) >> 21 & 0x000007ff);
}
}
for (i = 0; i < rx_average; i++) {
for (ii = i + 1; ii < rx_average; ii++) {
@ -763,8 +764,9 @@ phy_iq_calibrate_8821a(
if ((dm->fw_offload_ability & PHYDM_RF_IQK_OFFLOAD) && !(*(dm->mp_mode))) {
_phy_iq_calibrate_by_fw_8821a(dm);
phydm_iqk_wait(dm, 500);
if (dm->rf_calibrate_info.is_iqk_in_progress)
if (dm->rf_calibrate_info.is_iqk_in_progress) {
PHYDM_DBG(dm, ODM_COMP_CALIBRATION, "== FW IQK TIMEOUT (Still in progress after 500ms) ==\n");
}
} else
_phy_iq_calibrate_8821a(dm);
}

View File

@ -66,12 +66,13 @@ phydm_la_buffer_allocate(
if (PlatformAllocateMemoryWithZero(adapter, (void **)&adc_smp_buf->octet, adc_smp_buf->buffer_size) != RT_STATUS_SUCCESS) {
#else
odm_allocate_memory(dm, (void **)&adc_smp_buf->octet, adc_smp_buf->buffer_size);
if (!adc_smp_buf->octet) {
if (!adc_smp_buf->octet) {
#endif
ret = false;
} else
} else {
adc_smp_buf->length = adc_smp_buf->buffer_size;
ret = true;
}
}
return ret;

View File

@ -1123,8 +1123,9 @@ phydm_beamforming_notify(
/*if (sound_info->sound_mode == SOUNDING_SW_VHT_TIMER || sound_info->sound_mode == SOUNDING_SW_HT_TIMER)
odm_set_timer(dm, &beam_info->beamforming_timer, sound_info->sound_period);*/
odm_set_timer(dm, &beam_info->beamforming_timer, 1000); /*Do MU sounding every 1sec*/
} else
} else {
PHYDM_DBG(dm, DBG_TXBF, "%s: Less or larger than 2 MU STAs, not to set timer\n", __func__);
}
break;
case BEAMFORMEE_NOTIFY_DELETE_MU:
@ -1243,8 +1244,9 @@ beamforming_init_entry(
if (beamformer_entry == NULL) {
beamformer_entry = beamforming_add_bfer_entry(dm, sta, beamform_cap, num_of_sounding_dim, &bfer_idx);
if (beamformer_entry == NULL)
if (beamformer_entry == NULL) {
PHYDM_DBG(dm, DBG_TXBF, "[%s]Not enough BFer entry!!!!!\n", __func__);
}
}
}
@ -1657,11 +1659,11 @@ beamforming_timer_callback(
else
ret = 0;
#endif
if (ret)
if (ret) {
ret = beamforming_start_sw(dm, sound_info->sound_idx, sound_info->sound_mode, sound_info->sound_bw);
else
} else {
PHYDM_DBG(dm, DBG_TXBF, "%s, Error value return from BeamformingStart_V2\n", __func__);
}
if ((beam_info->beamformee_su_cnt != 0) || (beam_info->beamformee_mu_cnt > 1)) {
if (sound_info->sound_mode == SOUNDING_SW_VHT_TIMER || sound_info->sound_mode == SOUNDING_SW_HT_TIMER)
odm_set_timer(dm, &beam_info->beamforming_timer, sound_info->sound_period);

View File

@ -1319,9 +1319,9 @@ phydm_basic_dbg_message
if (dm->support_ic_type & PHYSTS_2ND_TYPE_IC)
PHYDM_DBG(dm, ODM_COMP_COMMON, "Coding: LDPC=((%s)), STBC=((%s))\n", (dm->phy_dbg_info.is_ldpc_pkt) ? "Y" : "N", (dm->phy_dbg_info.is_stbc_pkt) ? "Y" : "N");
#endif
} else
} else {
PHYDM_DBG(dm, ODM_COMP_COMMON, "No Link !!!\n");
}
PHYDM_DBG(dm, ODM_COMP_COMMON, "[CCA Cnt] {CCK, OFDM, Total} = {%d, %d, %d}\n",
false_alm_cnt->cnt_cck_cca, false_alm_cnt->cnt_ofdm_cca, false_alm_cnt->cnt_cca_all);
@ -1640,11 +1640,12 @@ phydm_fw_trace_en_h2c(
PHYDM_DBG(dm, DBG_FW_TRACE, "---->\n");
if (monitor_mode == 0)
if (monitor_mode == 0) {
PHYDM_DBG(dm, DBG_FW_TRACE, "[H2C] FW_debug_en: (( %d ))\n", enable);
else
} else {
PHYDM_DBG(dm, DBG_FW_TRACE, "[H2C] FW_debug_en: (( %d )), mode: (( %d )), macid: (( %d ))\n", enable, monitor_mode, macid);
odm_fill_h2c_cmd(dm, PHYDM_H2C_FW_TRACE_EN, cmd_length, h2c_parameter);
odm_fill_h2c_cmd(dm, PHYDM_H2C_FW_TRACE_EN, cmd_length, h2c_parameter);
}
}
void
@ -3588,8 +3589,9 @@ phydm_fw_trace_handler_code(
u16 content_3 = (((u16)buffer[9]) << 8) | ((u16)buffer[8]);
u16 content_4 = (((u16)buffer[11]) << 8) | ((u16)buffer[10]);
if (cmd_len > 12)
if (cmd_len > 12) {
PHYDM_DBG(dm, DBG_FW_TRACE, "[FW Msg] Invalid cmd length (( %d )) >12\n", cmd_len);
}
/* PHYDM_DBG(dm, DBG_FW_TRACE,"[FW Msg] Func=((%d)), num=((%d)), ct_0=((%d)), ct_1=((%d)), ct_2=((%d)), ct_3=((%d)), ct_4=((%d))\n", */
/* function, dbg_num, content_0, content_1, content_2, content_3, content_4); */

View File

@ -46,8 +46,9 @@ hal_com_txbf_config_gtab(
{
struct dm_struct *dm = (struct dm_struct *)dm_void;
if (dm->support_ic_type & ODM_RTL8822B)
if (dm->support_ic_type & ODM_RTL8822B) {
hal_txbf_8822b_config_gtab(dm);
}
}
void
@ -204,14 +205,15 @@ hal_com_txbf_enter_work_item_callback(
PHYDM_DBG(dm, DBG_TXBF, "[%s] Start!\n", __func__);
if (dm->support_ic_type & (ODM_RTL8812 | ODM_RTL8821))
if (dm->support_ic_type & (ODM_RTL8812 | ODM_RTL8821)) {
hal_txbf_jaguar_enter(dm, idx);
else if (dm->support_ic_type & ODM_RTL8192E)
} else if (dm->support_ic_type & ODM_RTL8192E) {
hal_txbf_8192e_enter(dm, idx);
else if (dm->support_ic_type & ODM_RTL8814A)
} else if (dm->support_ic_type & ODM_RTL8814A) {
hal_txbf_8814a_enter(dm, idx);
else if (dm->support_ic_type & ODM_RTL8822B)
} else if (dm->support_ic_type & ODM_RTL8822B) {
hal_txbf_8822b_enter(dm, idx);
}
}
void
@ -235,14 +237,15 @@ hal_com_txbf_leave_work_item_callback(
PHYDM_DBG(dm, DBG_TXBF, "[%s] Start!\n", __func__);
if (dm->support_ic_type & (ODM_RTL8812 | ODM_RTL8821))
if (dm->support_ic_type & (ODM_RTL8812 | ODM_RTL8821)) {
hal_txbf_jaguar_leave(dm, idx);
else if (dm->support_ic_type & ODM_RTL8192E)
} else if (dm->support_ic_type & ODM_RTL8192E) {
hal_txbf_8192e_leave(dm, idx);
else if (dm->support_ic_type & ODM_RTL8814A)
} else if (dm->support_ic_type & ODM_RTL8814A) {
hal_txbf_8814a_leave(dm, idx);
else if (dm->support_ic_type & ODM_RTL8822B)
} else if (dm->support_ic_type & ODM_RTL8822B) {
hal_txbf_8822b_leave(dm, idx);
}
}
@ -266,14 +269,15 @@ hal_com_txbf_fw_ndpa_work_item_callback(
PHYDM_DBG(dm, DBG_TXBF, "[%s] Start!\n", __func__);
if (dm->support_ic_type & (ODM_RTL8812 | ODM_RTL8821))
if (dm->support_ic_type & (ODM_RTL8812 | ODM_RTL8821)) {
hal_txbf_jaguar_fw_txbf(dm, idx);
else if (dm->support_ic_type & ODM_RTL8192E)
} else if (dm->support_ic_type & ODM_RTL8192E) {
hal_txbf_8192e_fw_tx_bf(dm, idx);
else if (dm->support_ic_type & ODM_RTL8814A)
} else if (dm->support_ic_type & ODM_RTL8814A) {
hal_txbf_8814a_fw_txbf(dm, idx);
else if (dm->support_ic_type & ODM_RTL8822B)
} else if (dm->support_ic_type & ODM_RTL8822B) {
hal_txbf_8822b_fw_txbf(dm, idx);
}
}
void
@ -376,14 +380,15 @@ hal_com_txbf_status_work_item_callback(
PHYDM_DBG(dm, DBG_TXBF, "[%s] Start!\n", __func__);
if (dm->support_ic_type & (ODM_RTL8812 | ODM_RTL8821))
if (dm->support_ic_type & (ODM_RTL8812 | ODM_RTL8821)) {
hal_txbf_jaguar_status(dm, idx);
else if (dm->support_ic_type & ODM_RTL8192E)
} else if (dm->support_ic_type & ODM_RTL8192E) {
hal_txbf_8192e_status(dm, idx);
else if (dm->support_ic_type & ODM_RTL8814A)
} else if (dm->support_ic_type & ODM_RTL8814A) {
hal_txbf_8814a_status(dm, idx);
else if (dm->support_ic_type & ODM_RTL8822B)
} else if (dm->support_ic_type & ODM_RTL8822B) {
hal_txbf_8822b_status(dm, idx);
}
}
void

View File

@ -147,8 +147,9 @@ hal_txbf_jaguar_download_ndpa(
dl_bcn_count++;
} while (!(bcn_valid_reg & BIT(0)) && dl_bcn_count < 5);
if (!(bcn_valid_reg & BIT(0)))
if (!(bcn_valid_reg & BIT(0))) {
PHYDM_DBG(dm, DBG_TXBF, "%s Download RSVD page failed!\n", __func__);
}
/*TDECTRL[15:8] 0x209[7:0] = 0xF6 Beacon Head for TXDMA*/
odm_write_1byte(dm, REG_TDECTRL_8812A + 1, tx_page_bndy);

View File

@ -2358,6 +2358,7 @@ static int cfg80211_rtw_change_iface(struct wiphy *wiphy,
case NL80211_IFTYPE_P2P_CLIENT:
is_p2p = _TRUE;
#endif
/* intentional fallthrough */
case NL80211_IFTYPE_STATION:
networkType = Ndis802_11Infrastructure;
@ -2382,6 +2383,7 @@ static int cfg80211_rtw_change_iface(struct wiphy *wiphy,
case NL80211_IFTYPE_P2P_GO:
is_p2p = _TRUE;
#endif
/* intentional fallthrough */
case NL80211_IFTYPE_AP:
networkType = Ndis802_11APMode;

View File

@ -306,7 +306,7 @@ int rtw_drv_ant_band_switch = 1; /* 0:OFF , 1:ON, Driver control antenna band sw
int rtw_single_ant_path; /*0:main ant , 1:aux ant , Fixed single antenna path, default main ant*/
/* 0: doesn't switch, 1: switch from usb2.0 to usb 3.0 2: switch from usb3.0 to usb 2.0 */
int rtw_switch_usb_mode = 0;
int rtw_switch_usb_mode = 1;
#ifdef CONFIG_USB_AUTOSUSPEND
int rtw_enusbss = 1;/* 0:disable,1:enable */

View File

@ -529,10 +529,11 @@ void rtw_os_recv_indicate_pkt(_adapter *padapter, _pkt *pkt, union recv_frame *r
#endif /* CONFIG_RTW_NAPI */
ret = rtw_netif_rx(padapter->pnetdev, pkt);
if (ret == NET_RX_SUCCESS)
if (ret == NET_RX_SUCCESS) {
DBG_COUNTER(padapter->rx_logs.os_netif_ok);
else
} else {
DBG_COUNTER(padapter->rx_logs.os_netif_err);
}
}
}

View File

@ -664,7 +664,24 @@ static int usb_reprobe_switch_usb_mode(PADAPTER Adapter)
if (registry_par->switch_usb_mode == 0)
goto exit;
#if defined(CONFIG_RTL8812A) || defined(CONFIG_RTL8821A) || defined(CONFIG_RTL8814A)
if (IS_HIGH_SPEED_USB(Adapter)) {
if ((rtw_read8(Adapter, 0x74) & (BIT(2)|BIT(3))) != BIT(3)) {
rtw_write8(Adapter, 0x74, 0x8);
rtw_write8(Adapter, 0x70, 0x2);
rtw_write8(Adapter, 0x3e, 0x1);
rtw_write8(Adapter, 0x3d, 0x3);
/* usb disconnect */
rtw_write8(Adapter, 0x5, 0x80);
ret = _TRUE;
}
} else if (IS_SUPER_SPEED_USB(Adapter)) {
rtw_write8(Adapter, 0x70, rtw_read8(Adapter, 0x70) & (~BIT(1)));
rtw_write8(Adapter, 0x3e, rtw_read8(Adapter, 0x3e) & (~BIT(0)));
}
#else
rtw_hal_set_hwreg(Adapter, HW_VAR_USB_MODE, &ret);
#endif
exit:
return ret;