1 // SPDX-License-Identifier: GPL-2.0
2 /******************************************************************************
4 * Copyright(c) 2016 Realtek Corporation.
7 * wlanfae <wlanfae@realtek.com>
8 * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
11 * Larry Finger <Larry.Finger@lwfinger.net>
13 *****************************************************************************/
14 #include "../halmac_88xx_cfg.h"
15 #include "halmac_8822b_cfg.h"
18 * halmac_mac_power_switch_8822b_usb() - switch mac power
19 * @halmac_adapter : the adapter of halmac
20 * @halmac_power : power state
21 * Author : KaiYuan Chang
22 * Return : enum halmac_ret_status
23 * More details of status code can be found in prototype document
25 enum halmac_ret_status
26 halmac_mac_power_switch_8822b_usb(struct halmac_adapter *halmac_adapter,
27 enum halmac_mac_power halmac_power)
31 void *driver_adapter = NULL;
32 struct halmac_api *halmac_api;
34 if (halmac_adapter_validate(halmac_adapter) != HALMAC_RET_SUCCESS)
35 return HALMAC_RET_ADAPTER_INVALID;
37 if (halmac_api_validate(halmac_adapter) != HALMAC_RET_SUCCESS)
38 return HALMAC_RET_API_INVALID;
40 halmac_api_record_id_88xx(halmac_adapter, HALMAC_API_MAC_POWER_SWITCH);
42 driver_adapter = halmac_adapter->driver_adapter;
43 halmac_api = (struct halmac_api *)halmac_adapter->halmac_api;
46 driver_adapter, HALMAC_MSG_PWR, DBG_DMESG,
47 "halmac_mac_power_switch_88xx_usb halmac_power = %x ==========>\n",
50 interface_mask = HALMAC_PWR_INTF_USB_MSK;
52 value8 = HALMAC_REG_READ_8(halmac_adapter, REG_CR);
54 halmac_adapter->halmac_state.mac_power = HALMAC_MAC_POWER_OFF;
57 (HALMAC_REG_READ_8(halmac_adapter, REG_SYS_STATUS1 + 1) &
59 halmac_adapter->halmac_state.mac_power =
62 halmac_adapter->halmac_state.mac_power =
66 /*Check if power switch is needed*/
67 if (halmac_power == HALMAC_MAC_POWER_ON &&
68 halmac_adapter->halmac_state.mac_power == HALMAC_MAC_POWER_ON) {
70 driver_adapter, HALMAC_MSG_PWR, DBG_WARNING,
71 "halmac_mac_power_switch power state unchange!\n");
72 return HALMAC_RET_PWR_UNCHANGE;
74 if (halmac_power == HALMAC_MAC_POWER_OFF) {
75 if (halmac_pwr_seq_parser_88xx(
76 halmac_adapter, HALMAC_PWR_CUT_ALL_MSK,
77 HALMAC_PWR_FAB_TSMC_MSK, interface_mask,
78 halmac_8822b_card_disable_flow) !=
80 pr_err("Handle power off cmd error\n");
81 return HALMAC_RET_POWER_OFF_FAIL;
84 halmac_adapter->halmac_state.mac_power = HALMAC_MAC_POWER_OFF;
85 halmac_adapter->halmac_state.ps_state =
86 HALMAC_PS_STATE_UNDEFINE;
87 halmac_adapter->halmac_state.dlfw_state = HALMAC_DLFW_NONE;
88 halmac_init_adapter_dynamic_para_88xx(halmac_adapter);
90 if (halmac_pwr_seq_parser_88xx(
91 halmac_adapter, HALMAC_PWR_CUT_ALL_MSK,
92 HALMAC_PWR_FAB_TSMC_MSK, interface_mask,
93 halmac_8822b_card_enable_flow) !=
95 pr_err("Handle power on cmd error\n");
96 return HALMAC_RET_POWER_ON_FAIL;
100 halmac_adapter, REG_SYS_STATUS1 + 1,
101 HALMAC_REG_READ_8(halmac_adapter, REG_SYS_STATUS1 + 1) &
104 halmac_adapter->halmac_state.mac_power = HALMAC_MAC_POWER_ON;
105 halmac_adapter->halmac_state.ps_state = HALMAC_PS_STATE_ACT;
108 HALMAC_RT_TRACE(driver_adapter, HALMAC_MSG_PWR, DBG_DMESG,
109 "halmac_mac_power_switch_88xx_usb <==========\n");
111 return HALMAC_RET_SUCCESS;
115 * halmac_phy_cfg_8822b_usb() - phy config
116 * @halmac_adapter : the adapter of halmac
117 * Author : KaiYuan Chang
118 * Return : enum halmac_ret_status
119 * More details of status code can be found in prototype document
121 enum halmac_ret_status
122 halmac_phy_cfg_8822b_usb(struct halmac_adapter *halmac_adapter,
123 enum halmac_intf_phy_platform platform)
125 void *driver_adapter = NULL;
126 enum halmac_ret_status status = HALMAC_RET_SUCCESS;
127 struct halmac_api *halmac_api;
129 if (halmac_adapter_validate(halmac_adapter) != HALMAC_RET_SUCCESS)
130 return HALMAC_RET_ADAPTER_INVALID;
132 if (halmac_api_validate(halmac_adapter) != HALMAC_RET_SUCCESS)
133 return HALMAC_RET_API_INVALID;
135 halmac_api_record_id_88xx(halmac_adapter, HALMAC_API_PHY_CFG);
137 driver_adapter = halmac_adapter->driver_adapter;
138 halmac_api = (struct halmac_api *)halmac_adapter->halmac_api;
140 HALMAC_RT_TRACE(driver_adapter, HALMAC_MSG_PWR, DBG_DMESG,
141 "halmac_phy_cfg ==========>\n");
143 status = halmac_parse_intf_phy_88xx(halmac_adapter,
144 HALMAC_RTL8822B_USB2_PHY, platform,
147 if (status != HALMAC_RET_SUCCESS)
150 status = halmac_parse_intf_phy_88xx(halmac_adapter,
151 HALMAC_RTL8822B_USB3_PHY, platform,
154 if (status != HALMAC_RET_SUCCESS)
157 HALMAC_RT_TRACE(driver_adapter, HALMAC_MSG_PWR, DBG_DMESG,
158 "halmac_phy_cfg <==========\n");
160 return HALMAC_RET_SUCCESS;
164 * halmac_interface_integration_tuning_8822b_usb() - usb interface fine tuning
165 * @halmac_adapter : the adapter of halmac
167 * Return : enum halmac_ret_status
168 * More details of status code can be found in prototype document
170 enum halmac_ret_status halmac_interface_integration_tuning_8822b_usb(
171 struct halmac_adapter *halmac_adapter)
173 return HALMAC_RET_SUCCESS;