/* SPDX-License-Identifier: GPL-2.0 */ #include "../halmac_88xx_cfg.h" #include "halmac_8822b_cfg.h" /** * halmac_mac_power_switch_8822b_usb() - change mac power * @pHalmac_adapter * @halmac_power * Author : KaiYuan Chang * Return : HALMAC_RET_STATUS */ HALMAC_RET_STATUS halmac_mac_power_switch_8822b_usb( IN PHALMAC_ADAPTER pHalmac_adapter, IN HALMAC_MAC_POWER halmac_power ) { u8 interface_mask; VOID *pDriver_adapter = NULL; PHALMAC_API pHalmac_api; if (HALMAC_RET_SUCCESS != halmac_adapter_validate(pHalmac_adapter)) return HALMAC_RET_ADAPTER_INVALID; if (HALMAC_RET_SUCCESS != halmac_api_validate(pHalmac_adapter)) return HALMAC_RET_API_INVALID; halmac_api_record_id_88xx(pHalmac_adapter, HALMAC_API_MAC_POWER_SWITCH); pDriver_adapter = pHalmac_adapter->pDriver_adapter; pHalmac_api = (PHALMAC_API)pHalmac_adapter->pHalmac_api; PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_PWR, HALMAC_DBG_ERR, "halmac_mac_power_switch_88xx_usb halmac_power = %x ==========>\n", halmac_power); interface_mask = HALMAC_PWR_INTF_USB_MSK; if (0xEA == HALMAC_REG_READ_8(pHalmac_adapter, REG_CR)) pHalmac_adapter->halmac_state.mac_power = HALMAC_MAC_POWER_OFF; /*Check if power switch is needed*/ if (halmac_power == pHalmac_adapter->halmac_state.mac_power) { PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_PWR, HALMAC_DBG_WARN, "halmac_mac_power_switch power state unchange!\n"); } else { if (HALMAC_MAC_POWER_OFF == halmac_power) { if (HALMAC_RET_SUCCESS != halmac_pwr_seq_parser_88xx(pHalmac_adapter, HALMAC_PWR_CUT_TESTCHIP_MSK, HALMAC_PWR_FAB_TSMC_MSK, interface_mask, halmac_8822b_card_disable_flow)) { PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_PWR, HALMAC_DBG_ERR, "Handle power off cmd error\n"); return HALMAC_RET_POWER_OFF_FAIL; } pHalmac_adapter->halmac_state.mac_power = HALMAC_MAC_POWER_OFF; pHalmac_adapter->halmac_state.ps_state = HALMAC_PS_STATE_UNDEFINE; pHalmac_adapter->halmac_state.dlfw_state = HALMAC_DLFW_NONE; } else { if (HALMAC_RET_SUCCESS != halmac_pwr_seq_parser_88xx(pHalmac_adapter, HALMAC_PWR_CUT_TESTCHIP_MSK, HALMAC_PWR_FAB_TSMC_MSK, interface_mask, halmac_8822b_card_enable_flow)) { PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_PWR, HALMAC_DBG_ERR, "Handle power on cmd error\n"); return HALMAC_RET_POWER_ON_FAIL; } pHalmac_adapter->halmac_state.mac_power = HALMAC_MAC_POWER_ON; pHalmac_adapter->halmac_state.ps_state = HALMAC_PS_STATE_ACT; } } PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_PWR, HALMAC_DBG_ERR, "halmac_mac_power_switch_88xx_usb <==========\n"); return HALMAC_RET_SUCCESS; }