1 /* SPDX-License-Identifier: GPL-2.0 */
2 #include "halmac_88xx_cfg.h"
3
4 /**
5 * halmac_init_pcie_cfg_88xx() - init PCIE related register
6 * @pHalmac_adapter
7 * Author : KaiYuan Chang
8 * Return : HALMAC_RET_STATUS
9 */
10 HALMAC_RET_STATUS
halmac_init_pcie_cfg_88xx(IN PHALMAC_ADAPTER pHalmac_adapter)11 halmac_init_pcie_cfg_88xx(
12 IN PHALMAC_ADAPTER pHalmac_adapter
13 )
14 {
15 VOID *pDriver_adapter = NULL;
16
17 if (HALMAC_RET_SUCCESS != halmac_adapter_validate(pHalmac_adapter))
18 return HALMAC_RET_ADAPTER_INVALID;
19
20 if (HALMAC_RET_SUCCESS != halmac_api_validate(pHalmac_adapter))
21 return HALMAC_RET_API_INVALID;
22
23 halmac_api_record_id_88xx(pHalmac_adapter, HALMAC_API_INIT_PCIE_CFG);
24
25 pDriver_adapter = pHalmac_adapter->pDriver_adapter;
26
27 PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_init_pcie_cfg_88xx ==========>\n");
28
29 PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_init_pcie_cfg_88xx <==========\n");
30
31 return HALMAC_RET_SUCCESS;
32 }
33
34 /**
35 * halmac_deinit_pcie_cfg_88xx() - deinit PCIE related register
36 * @pHalmac_adapter
37 * Author : KaiYuan Chang
38 * Return : HALMAC_RET_STATUS
39 */
40 HALMAC_RET_STATUS
halmac_deinit_pcie_cfg_88xx(IN PHALMAC_ADAPTER pHalmac_adapter)41 halmac_deinit_pcie_cfg_88xx(
42 IN PHALMAC_ADAPTER pHalmac_adapter
43 )
44 {
45 VOID *pDriver_adapter = NULL;
46
47 if (HALMAC_RET_SUCCESS != halmac_adapter_validate(pHalmac_adapter))
48 return HALMAC_RET_ADAPTER_INVALID;
49
50 if (HALMAC_RET_SUCCESS != halmac_api_validate(pHalmac_adapter))
51 return HALMAC_RET_API_INVALID;
52
53 halmac_api_record_id_88xx(pHalmac_adapter, HALMAC_API_DEINIT_PCIE_CFG);
54
55 pDriver_adapter = pHalmac_adapter->pDriver_adapter;
56
57 PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_deinit_pcie_cfg_88xx ==========>\n");
58
59 PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_deinit_pcie_cfg_88xx <==========\n");
60
61 return HALMAC_RET_SUCCESS;
62 }
63
64 /**
65 * halmac_cfg_rx_aggregation_88xx_pcie() - config rx aggregation
66 * @pHalmac_adapter
67 * @halmac_rx_agg_mode
68 * Author : KaiYuan Chang/Ivan Lin
69 * Return : HALMAC_RET_STATUS
70 */
71 HALMAC_RET_STATUS
halmac_cfg_rx_aggregation_88xx_pcie(IN PHALMAC_ADAPTER pHalmac_adapter,IN PHALMAC_RXAGG_CFG phalmac_rxagg_cfg)72 halmac_cfg_rx_aggregation_88xx_pcie(
73 IN PHALMAC_ADAPTER pHalmac_adapter,
74 IN PHALMAC_RXAGG_CFG phalmac_rxagg_cfg
75 )
76 {
77 VOID *pDriver_adapter = NULL;
78
79 if (HALMAC_RET_SUCCESS != halmac_adapter_validate(pHalmac_adapter))
80 return HALMAC_RET_ADAPTER_INVALID;
81
82 if (HALMAC_RET_SUCCESS != halmac_api_validate(pHalmac_adapter))
83 return HALMAC_RET_API_INVALID;
84
85 halmac_api_record_id_88xx(pHalmac_adapter, HALMAC_API_CFG_RX_AGGREGATION);
86
87 pDriver_adapter = pHalmac_adapter->pDriver_adapter;
88
89 PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_cfg_rx_aggregation_88xx_pcie ==========>\n");
90
91 PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_cfg_rx_aggregation_88xx_pcie <==========\n");
92
93 return HALMAC_RET_SUCCESS;
94 }
95
96 /**
97 * halmac_reg_read_8_pcie_88xx() - read 1byte register
98 * @pHalmac_adapter
99 * @halmac_offset
100 * Author : KaiYuan Chang/Ivan Lin
101 * Return : HALMAC_RET_STATUS
102 */
103 u8
halmac_reg_read_8_pcie_88xx(IN PHALMAC_ADAPTER pHalmac_adapter,IN u32 halmac_offset)104 halmac_reg_read_8_pcie_88xx(
105 IN PHALMAC_ADAPTER pHalmac_adapter,
106 IN u32 halmac_offset
107 )
108 {
109 VOID *pDriver_adapter = NULL;
110 PHALMAC_API pHalmac_api;
111
112 if (HALMAC_RET_SUCCESS != halmac_adapter_validate(pHalmac_adapter))
113 return HALMAC_RET_ADAPTER_INVALID;
114
115 if (HALMAC_RET_SUCCESS != halmac_api_validate(pHalmac_adapter))
116 return HALMAC_RET_API_INVALID;
117
118 pDriver_adapter = pHalmac_adapter->pDriver_adapter;
119 pHalmac_api = (PHALMAC_API)pHalmac_adapter->pHalmac_api;
120
121 return PLATFORM_REG_READ_8(pDriver_adapter, halmac_offset);
122 }
123
124 /**
125 * halmac_reg_write_8_pcie_88xx() - write 1byte register
126 * @pHalmac_adapter
127 * @halmac_offset
128 * @halmac_data
129 * Author : KaiYuan Chang/Ivan Lin
130 * Return : HALMAC_RET_STATUS
131 */
132 HALMAC_RET_STATUS
halmac_reg_write_8_pcie_88xx(IN PHALMAC_ADAPTER pHalmac_adapter,IN u32 halmac_offset,IN u8 halmac_data)133 halmac_reg_write_8_pcie_88xx(
134 IN PHALMAC_ADAPTER pHalmac_adapter,
135 IN u32 halmac_offset,
136 IN u8 halmac_data
137 )
138 {
139 VOID *pDriver_adapter = NULL;
140 PHALMAC_API pHalmac_api;
141
142 if (HALMAC_RET_SUCCESS != halmac_adapter_validate(pHalmac_adapter))
143 return HALMAC_RET_ADAPTER_INVALID;
144
145 if (HALMAC_RET_SUCCESS != halmac_api_validate(pHalmac_adapter))
146 return HALMAC_RET_API_INVALID;
147
148 pDriver_adapter = pHalmac_adapter->pDriver_adapter;
149 pHalmac_api = (PHALMAC_API)pHalmac_adapter->pHalmac_api;
150
151 PLATFORM_REG_WRITE_8(pDriver_adapter, halmac_offset, halmac_data);
152
153 return HALMAC_RET_SUCCESS;
154 }
155
156 /**
157 * halmac_reg_read_16_pcie_88xx() - read 2byte register
158 * @pHalmac_adapter
159 * @halmac_offset
160 * Author : KaiYuan Chang/Ivan Lin
161 * Return : HALMAC_RET_STATUS
162 */
163 u16
halmac_reg_read_16_pcie_88xx(IN PHALMAC_ADAPTER pHalmac_adapter,IN u32 halmac_offset)164 halmac_reg_read_16_pcie_88xx(
165 IN PHALMAC_ADAPTER pHalmac_adapter,
166 IN u32 halmac_offset
167 )
168 {
169 VOID *pDriver_adapter = NULL;
170 PHALMAC_API pHalmac_api;
171
172 if (HALMAC_RET_SUCCESS != halmac_adapter_validate(pHalmac_adapter))
173 return HALMAC_RET_ADAPTER_INVALID;
174
175 if (HALMAC_RET_SUCCESS != halmac_api_validate(pHalmac_adapter))
176 return HALMAC_RET_API_INVALID;
177
178 pDriver_adapter = pHalmac_adapter->pDriver_adapter;
179 pHalmac_api = (PHALMAC_API)pHalmac_adapter->pHalmac_api;
180
181 return PLATFORM_REG_READ_16(pDriver_adapter, halmac_offset);
182 }
183
184 /**
185 * halmac_reg_write_16_pcie_88xx() - write 2byte register
186 * @pHalmac_adapter
187 * @halmac_offset
188 * @halmac_data
189 * Author : KaiYuan Chang/Ivan Lin
190 * Return : HALMAC_RET_STATUS
191 */
192 HALMAC_RET_STATUS
halmac_reg_write_16_pcie_88xx(IN PHALMAC_ADAPTER pHalmac_adapter,IN u32 halmac_offset,IN u16 halmac_data)193 halmac_reg_write_16_pcie_88xx(
194 IN PHALMAC_ADAPTER pHalmac_adapter,
195 IN u32 halmac_offset,
196 IN u16 halmac_data
197 )
198 {
199 VOID *pDriver_adapter = NULL;
200 PHALMAC_API pHalmac_api;
201
202 if (HALMAC_RET_SUCCESS != halmac_adapter_validate(pHalmac_adapter))
203 return HALMAC_RET_ADAPTER_INVALID;
204
205 if (HALMAC_RET_SUCCESS != halmac_api_validate(pHalmac_adapter))
206 return HALMAC_RET_API_INVALID;
207
208 pDriver_adapter = pHalmac_adapter->pDriver_adapter;
209 pHalmac_api = (PHALMAC_API)pHalmac_adapter->pHalmac_api;
210
211 PLATFORM_REG_WRITE_16(pDriver_adapter, halmac_offset, halmac_data);
212
213 return HALMAC_RET_SUCCESS;
214 }
215
216 /**
217 * halmac_reg_read_32_pcie_88xx() - read 4byte register
218 * @pHalmac_adapter
219 * @halmac_offset
220 * Author : KaiYuan Chang/Ivan Lin
221 * Return : HALMAC_RET_STATUS
222 */
223 u32
halmac_reg_read_32_pcie_88xx(IN PHALMAC_ADAPTER pHalmac_adapter,IN u32 halmac_offset)224 halmac_reg_read_32_pcie_88xx(
225 IN PHALMAC_ADAPTER pHalmac_adapter,
226 IN u32 halmac_offset
227 )
228 {
229 VOID *pDriver_adapter = NULL;
230 PHALMAC_API pHalmac_api;
231
232 if (HALMAC_RET_SUCCESS != halmac_adapter_validate(pHalmac_adapter))
233 return HALMAC_RET_ADAPTER_INVALID;
234
235 if (HALMAC_RET_SUCCESS != halmac_api_validate(pHalmac_adapter))
236 return HALMAC_RET_API_INVALID;
237
238 pDriver_adapter = pHalmac_adapter->pDriver_adapter;
239 pHalmac_api = (PHALMAC_API)pHalmac_adapter->pHalmac_api;
240
241 return PLATFORM_REG_READ_32(pDriver_adapter, halmac_offset);
242 }
243
244 /**
245 * halmac_reg_write_32_pcie_88xx() - write 4byte register
246 * @pHalmac_adapter
247 * @halmac_offset
248 * @halmac_data
249 * Author : KaiYuan Chang/Ivan Lin
250 * Return : HALMAC_RET_STATUS
251 */
252 HALMAC_RET_STATUS
halmac_reg_write_32_pcie_88xx(IN PHALMAC_ADAPTER pHalmac_adapter,IN u32 halmac_offset,IN u32 halmac_data)253 halmac_reg_write_32_pcie_88xx(
254 IN PHALMAC_ADAPTER pHalmac_adapter,
255 IN u32 halmac_offset,
256 IN u32 halmac_data
257 )
258 {
259 VOID *pDriver_adapter = NULL;
260 PHALMAC_API pHalmac_api;
261
262 if (HALMAC_RET_SUCCESS != halmac_adapter_validate(pHalmac_adapter))
263 return HALMAC_RET_ADAPTER_INVALID;
264
265 if (HALMAC_RET_SUCCESS != halmac_api_validate(pHalmac_adapter))
266 return HALMAC_RET_API_INVALID;
267
268 pDriver_adapter = pHalmac_adapter->pDriver_adapter;
269 pHalmac_api = (PHALMAC_API)pHalmac_adapter->pHalmac_api;
270
271 PLATFORM_REG_WRITE_32(pDriver_adapter, halmac_offset, halmac_data);
272
273 return HALMAC_RET_SUCCESS;
274 }
275
276 /**
277 * halmac_cfg_tx_agg_align_pcie_not_support_88xx() -
278 * @pHalmac_adapter
279 * @enable
280 * @align_size
281 * Author : Soar Tu
282 * Return : HALMAC_RET_STATUS
283 */
284 HALMAC_RET_STATUS
halmac_cfg_tx_agg_align_pcie_not_support_88xx(IN PHALMAC_ADAPTER pHalmac_adapter,IN u8 enable,IN u16 align_size)285 halmac_cfg_tx_agg_align_pcie_not_support_88xx(
286 IN PHALMAC_ADAPTER pHalmac_adapter,
287 IN u8 enable,
288 IN u16 align_size
289 )
290 {
291 PHALMAC_API pHalmac_api;
292 VOID *pDriver_adapter = NULL;
293
294 if (HALMAC_RET_SUCCESS != halmac_adapter_validate(pHalmac_adapter))
295 return HALMAC_RET_ADAPTER_INVALID;
296
297 if (HALMAC_RET_SUCCESS != halmac_api_validate(pHalmac_adapter))
298 return HALMAC_RET_API_INVALID;
299
300 halmac_api_record_id_88xx(pHalmac_adapter, HALMAC_API_CFG_TX_AGG_ALIGN);
301
302 pDriver_adapter = pHalmac_adapter->pDriver_adapter;
303 pHalmac_api = (PHALMAC_API)pHalmac_adapter->pHalmac_api;
304
305
306 PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_cfg_tx_agg_align_pcie_not_support_88xx ==========>\n");
307
308 PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_cfg_tx_agg_align_pcie_not_support_88xx not support\n");
309 PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_cfg_tx_agg_align_pcie_not_support_88xx <==========\n");
310
311 return HALMAC_RET_SUCCESS;
312 }
313
314