1 #include "../halmac_88xx_cfg.h"
2 #include "halmac_8821c_cfg.h"
5 * halmac_mac_power_switch_8821c_usb() - switch mac power
6 * @pHalmac_adapter : the adapter of halmac
7 * @halmac_power : power state
8 * Author : KaiYuan Chang
9 * Return : HALMAC_RET_STATUS
10 * More details of status code can be found in prototype document
13 halmac_mac_power_switch_8821c_usb(
14 IN PHALMAC_ADAPTER pHalmac_adapter,
15 IN HALMAC_MAC_POWER halmac_power
20 VOID *pDriver_adapter = NULL;
21 PHALMAC_API pHalmac_api;
23 if (HALMAC_RET_SUCCESS != halmac_adapter_validate(pHalmac_adapter))
24 return HALMAC_RET_ADAPTER_INVALID;
26 if (HALMAC_RET_SUCCESS != halmac_api_validate(pHalmac_adapter))
27 return HALMAC_RET_API_INVALID;
29 halmac_api_record_id_88xx(pHalmac_adapter, HALMAC_API_MAC_POWER_SWITCH);
31 pDriver_adapter = pHalmac_adapter->pDriver_adapter;
32 pHalmac_api = (PHALMAC_API)pHalmac_adapter->pHalmac_api;
34 PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_PWR, HALMAC_DBG_TRACE, "halmac_mac_power_switch_88xx_usb halmac_power = %x ==========>\n", halmac_power);
36 interface_mask = HALMAC_PWR_INTF_USB_MSK;
38 value8 = HALMAC_REG_READ_8(pHalmac_adapter, REG_CR);
40 pHalmac_adapter->halmac_state.mac_power = HALMAC_MAC_POWER_OFF;
42 if (BIT(0) == (HALMAC_REG_READ_8(pHalmac_adapter, REG_SYS_STATUS1 + 1) & BIT(0)))
43 pHalmac_adapter->halmac_state.mac_power = HALMAC_MAC_POWER_OFF;
45 pHalmac_adapter->halmac_state.mac_power = HALMAC_MAC_POWER_ON;
48 /*Check if power switch is needed*/
49 if (halmac_power == HALMAC_MAC_POWER_ON && pHalmac_adapter->halmac_state.mac_power == HALMAC_MAC_POWER_ON) {
50 PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_PWR, HALMAC_DBG_WARN, "halmac_mac_power_switch power state unchange!\n");
51 return HALMAC_RET_PWR_UNCHANGE;
53 if (HALMAC_MAC_POWER_OFF == halmac_power) {
54 if (HALMAC_RET_SUCCESS != halmac_pwr_seq_parser_88xx(pHalmac_adapter, HALMAC_PWR_CUT_ALL_MSK, HALMAC_PWR_FAB_TSMC_MSK,
55 interface_mask, halmac_8821c_card_disable_flow)) {
56 PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_PWR, HALMAC_DBG_ERR, "Handle power off cmd error\n");
57 return HALMAC_RET_POWER_OFF_FAIL;
60 pHalmac_adapter->halmac_state.mac_power = HALMAC_MAC_POWER_OFF;
61 pHalmac_adapter->halmac_state.ps_state = HALMAC_PS_STATE_UNDEFINE;
62 pHalmac_adapter->halmac_state.dlfw_state = HALMAC_DLFW_NONE;
63 halmac_init_adapter_dynamic_para_88xx(pHalmac_adapter);
65 if (HALMAC_RET_SUCCESS != halmac_pwr_seq_parser_88xx(pHalmac_adapter, HALMAC_PWR_CUT_ALL_MSK, HALMAC_PWR_FAB_TSMC_MSK,
66 interface_mask, halmac_8821c_card_enable_flow)) {
67 PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_PWR, HALMAC_DBG_ERR, "Handle power on cmd error\n");
68 return HALMAC_RET_POWER_ON_FAIL;
71 HALMAC_REG_WRITE_8(pHalmac_adapter, REG_SYS_STATUS1 + 1, HALMAC_REG_READ_8(pHalmac_adapter, REG_SYS_STATUS1 + 1) & ~(BIT(0)));
73 pHalmac_adapter->halmac_state.mac_power = HALMAC_MAC_POWER_ON;
74 pHalmac_adapter->halmac_state.ps_state = HALMAC_PS_STATE_ACT;
78 PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_PWR, HALMAC_DBG_TRACE, "halmac_mac_power_switch_88xx_usb <==========\n");
80 return HALMAC_RET_SUCCESS;
84 * halmac_phy_cfg_8821c_usb() - phy config
85 * @pHalmac_adapter : the adapter of halmac
86 * Author : KaiYuan Chang
87 * Return : HALMAC_RET_STATUS
88 * More details of status code can be found in prototype document
91 halmac_phy_cfg_8821c_usb(
92 IN PHALMAC_ADAPTER pHalmac_adapter,
93 IN HALMAC_INTF_PHY_PLATFORM platform
96 VOID *pDriver_adapter = NULL;
97 HALMAC_RET_STATUS status = HALMAC_RET_SUCCESS;
98 PHALMAC_API pHalmac_api;
100 if (HALMAC_RET_SUCCESS != halmac_adapter_validate(pHalmac_adapter))
101 return HALMAC_RET_ADAPTER_INVALID;
103 if (HALMAC_RET_SUCCESS != halmac_api_validate(pHalmac_adapter))
104 return HALMAC_RET_API_INVALID;
106 halmac_api_record_id_88xx(pHalmac_adapter, HALMAC_API_PHY_CFG);
108 pDriver_adapter = pHalmac_adapter->pDriver_adapter;
109 pHalmac_api = (PHALMAC_API)pHalmac_adapter->pHalmac_api;
111 PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_PWR, HALMAC_DBG_TRACE, "halmac_phy_cfg ==========>\n");
113 status = halmac_parse_intf_phy_88xx(pHalmac_adapter, HALMAC_RTL8821C_USB2_PHY, platform, HAL_INTF_PHY_USB2);
115 if (HALMAC_RET_SUCCESS != status)
118 status = halmac_parse_intf_phy_88xx(pHalmac_adapter, HALMAC_RTL8821C_USB3_PHY, platform, HAL_INTF_PHY_USB3);
120 if (HALMAC_RET_SUCCESS != status)
123 PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_PWR, HALMAC_DBG_TRACE, "halmac_phy_cfg <==========\n");
125 return HALMAC_RET_SUCCESS;
129 * halmac_interface_integration_tuning_8821c_usb() - usb interface fine tuning
130 * @pHalmac_adapter : the adapter of halmac
132 * Return : HALMAC_RET_STATUS
133 * More details of status code can be found in prototype document
136 halmac_interface_integration_tuning_8821c_usb(
137 IN PHALMAC_ADAPTER pHalmac_adapter
140 return HALMAC_RET_SUCCESS;