1
2
3
4
5
6
7
8
9
10
11
12
13
14#include "../halmac_88xx_cfg.h"
15#include "halmac_8822b_cfg.h"
16
17
18
19
20
21
22
23
24
25enum halmac_ret_status
26halmac_mac_power_switch_8822b_usb(struct halmac_adapter *halmac_adapter,
27 enum halmac_mac_power halmac_power)
28{
29 u8 interface_mask;
30 u8 value8;
31 void *driver_adapter = NULL;
32 struct halmac_api *halmac_api;
33
34 if (halmac_adapter_validate(halmac_adapter) != HALMAC_RET_SUCCESS)
35 return HALMAC_RET_ADAPTER_INVALID;
36
37 if (halmac_api_validate(halmac_adapter) != HALMAC_RET_SUCCESS)
38 return HALMAC_RET_API_INVALID;
39
40 halmac_api_record_id_88xx(halmac_adapter, HALMAC_API_MAC_POWER_SWITCH);
41
42 driver_adapter = halmac_adapter->driver_adapter;
43 halmac_api = (struct halmac_api *)halmac_adapter->halmac_api;
44
45 HALMAC_RT_TRACE(
46 driver_adapter, HALMAC_MSG_PWR, DBG_DMESG,
47 "halmac_mac_power_switch_88xx_usb halmac_power = %x ==========>\n",
48 halmac_power);
49
50 interface_mask = HALMAC_PWR_INTF_USB_MSK;
51
52 value8 = HALMAC_REG_READ_8(halmac_adapter, REG_CR);
53 if (value8 == 0xEA) {
54 halmac_adapter->halmac_state.mac_power = HALMAC_MAC_POWER_OFF;
55 } else {
56 if (BIT(0) ==
57 (HALMAC_REG_READ_8(halmac_adapter, REG_SYS_STATUS1 + 1) &
58 BIT(0)))
59 halmac_adapter->halmac_state.mac_power =
60 HALMAC_MAC_POWER_OFF;
61 else
62 halmac_adapter->halmac_state.mac_power =
63 HALMAC_MAC_POWER_ON;
64 }
65
66
67 if (halmac_power == HALMAC_MAC_POWER_ON &&
68 halmac_adapter->halmac_state.mac_power == HALMAC_MAC_POWER_ON) {
69 HALMAC_RT_TRACE(
70 driver_adapter, HALMAC_MSG_PWR, DBG_WARNING,
71 "halmac_mac_power_switch power state unchange!\n");
72 return HALMAC_RET_PWR_UNCHANGE;
73 }
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) !=
79 HALMAC_RET_SUCCESS) {
80 pr_err("Handle power off cmd error\n");
81 return HALMAC_RET_POWER_OFF_FAIL;
82 }
83
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);
89 } else {
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) !=
94 HALMAC_RET_SUCCESS) {
95 pr_err("Handle power on cmd error\n");
96 return HALMAC_RET_POWER_ON_FAIL;
97 }
98
99 HALMAC_REG_WRITE_8(
100 halmac_adapter, REG_SYS_STATUS1 + 1,
101 HALMAC_REG_READ_8(halmac_adapter, REG_SYS_STATUS1 + 1) &
102 ~(BIT(0)));
103
104 halmac_adapter->halmac_state.mac_power = HALMAC_MAC_POWER_ON;
105 halmac_adapter->halmac_state.ps_state = HALMAC_PS_STATE_ACT;
106 }
107
108 HALMAC_RT_TRACE(driver_adapter, HALMAC_MSG_PWR, DBG_DMESG,
109 "halmac_mac_power_switch_88xx_usb <==========\n");
110
111 return HALMAC_RET_SUCCESS;
112}
113
114
115
116
117
118
119
120
121enum halmac_ret_status
122halmac_phy_cfg_8822b_usb(struct halmac_adapter *halmac_adapter,
123 enum halmac_intf_phy_platform platform)
124{
125 void *driver_adapter = NULL;
126 enum halmac_ret_status status = HALMAC_RET_SUCCESS;
127 struct halmac_api *halmac_api;
128
129 if (halmac_adapter_validate(halmac_adapter) != HALMAC_RET_SUCCESS)
130 return HALMAC_RET_ADAPTER_INVALID;
131
132 if (halmac_api_validate(halmac_adapter) != HALMAC_RET_SUCCESS)
133 return HALMAC_RET_API_INVALID;
134
135 halmac_api_record_id_88xx(halmac_adapter, HALMAC_API_PHY_CFG);
136
137 driver_adapter = halmac_adapter->driver_adapter;
138 halmac_api = (struct halmac_api *)halmac_adapter->halmac_api;
139
140 HALMAC_RT_TRACE(driver_adapter, HALMAC_MSG_PWR, DBG_DMESG,
141 "halmac_phy_cfg ==========>\n");
142
143 status = halmac_parse_intf_phy_88xx(halmac_adapter,
144 HALMAC_RTL8822B_USB2_PHY, platform,
145 HAL_INTF_PHY_USB2);
146
147 if (status != HALMAC_RET_SUCCESS)
148 return status;
149
150 status = halmac_parse_intf_phy_88xx(halmac_adapter,
151 HALMAC_RTL8822B_USB3_PHY, platform,
152 HAL_INTF_PHY_USB3);
153
154 if (status != HALMAC_RET_SUCCESS)
155 return status;
156
157 HALMAC_RT_TRACE(driver_adapter, HALMAC_MSG_PWR, DBG_DMESG,
158 "halmac_phy_cfg <==========\n");
159
160 return HALMAC_RET_SUCCESS;
161}
162
163
164
165
166
167
168
169
170enum halmac_ret_status halmac_interface_integration_tuning_8822b_usb(
171 struct halmac_adapter *halmac_adapter)
172{
173 return HALMAC_RET_SUCCESS;
174}
175