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