1 // SPDX-License-Identifier: GPL-2.0
2 /* Copyright(c) 2007 - 2012 Realtek Corporation. */
3 
4 #include "../include/rtw_sreset.h"
5 
sreset_init_value(struct adapter * padapter)6 void sreset_init_value(struct adapter *padapter)
7 {
8 	struct hal_data_8188e	*pHalData = GET_HAL_DATA(padapter);
9 	struct sreset_priv *psrtpriv = &pHalData->srestpriv;
10 
11 	_rtw_mutex_init(&psrtpriv->silentreset_mutex);
12 	psrtpriv->silent_reset_inprogress = false;
13 	psrtpriv->wifi_error_status = WIFI_STATUS_SUCCESS;
14 	psrtpriv->last_tx_time = 0;
15 	psrtpriv->last_tx_complete_time = 0;
16 }
sreset_reset_value(struct adapter * padapter)17 void sreset_reset_value(struct adapter *padapter)
18 {
19 	struct hal_data_8188e	*pHalData = GET_HAL_DATA(padapter);
20 	struct sreset_priv *psrtpriv = &pHalData->srestpriv;
21 
22 	psrtpriv->silent_reset_inprogress = false;
23 	psrtpriv->wifi_error_status = WIFI_STATUS_SUCCESS;
24 	psrtpriv->last_tx_time = 0;
25 	psrtpriv->last_tx_complete_time = 0;
26 }
27 
sreset_get_wifi_status(struct adapter * padapter)28 u8 sreset_get_wifi_status(struct adapter *padapter)
29 {
30 	struct hal_data_8188e	*pHalData = GET_HAL_DATA(padapter);
31 	struct sreset_priv *psrtpriv = &pHalData->srestpriv;
32 
33 	u8 status = WIFI_STATUS_SUCCESS;
34 	u32 val32 = 0;
35 
36 	if (psrtpriv->silent_reset_inprogress)
37 		return status;
38 	val32 = rtw_read32(padapter, REG_TXDMA_STATUS);
39 	if (val32 == 0xeaeaeaea) {
40 		psrtpriv->wifi_error_status = WIFI_IF_NOT_EXIST;
41 	} else if (val32 != 0) {
42 		DBG_88E("txdmastatu(%x)\n", val32);
43 		psrtpriv->wifi_error_status = WIFI_MAC_TXDMA_ERROR;
44 	}
45 
46 	if (WIFI_STATUS_SUCCESS != psrtpriv->wifi_error_status) {
47 		DBG_88E("==>%s error_status(0x%x)\n", __func__, psrtpriv->wifi_error_status);
48 		status = (psrtpriv->wifi_error_status & (~(USB_READ_PORT_FAIL | USB_WRITE_PORT_FAIL)));
49 	}
50 	DBG_88E("==> %s wifi_status(0x%x)\n", __func__, status);
51 
52 	/* status restore */
53 	psrtpriv->wifi_error_status = WIFI_STATUS_SUCCESS;
54 
55 	return status;
56 }
57 
sreset_set_wifi_error_status(struct adapter * padapter,u32 status)58 void sreset_set_wifi_error_status(struct adapter *padapter, u32 status)
59 {
60 	struct hal_data_8188e	*pHalData = GET_HAL_DATA(padapter);
61 	pHalData->srestpriv.wifi_error_status = status;
62 }
63