1 /* SPDX-License-Identifier: GPL-2.0 */
2 #include "halmac_88xx_cfg.h"
3 
4 /**
5  * halmac_init_usb_cfg_88xx() - init USB related register
6  * @pHalmac_adapter
7  * Author : KaiYuan Chang
8  * Return : HALMAC_RET_STATUS
9  */
10 HALMAC_RET_STATUS
halmac_init_usb_cfg_88xx(IN PHALMAC_ADAPTER pHalmac_adapter)11 halmac_init_usb_cfg_88xx(
12 	IN PHALMAC_ADAPTER pHalmac_adapter
13 )
14 {
15 	VOID *pDriver_adapter = NULL;
16 	u8 value8 = 0;
17 
18 	if (HALMAC_RET_SUCCESS != halmac_adapter_validate(pHalmac_adapter))
19 		return HALMAC_RET_ADAPTER_INVALID;
20 
21 	if (HALMAC_RET_SUCCESS != halmac_api_validate(pHalmac_adapter))
22 		return HALMAC_RET_API_INVALID;
23 
24 	halmac_api_record_id_88xx(pHalmac_adapter, HALMAC_API_INIT_USB_CFG);
25 
26 	pDriver_adapter = pHalmac_adapter->pDriver_adapter;
27 
28 	PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_init_usb_cfg_88xx ==========>\n");
29 
30 	value8 |= (BIT_DMA_MODE | (0x3 << BIT_SHIFT_BURST_CNT));                /* burst number = 4 */
31 
32 	if (PLATFORM_REG_READ_8(pDriver_adapter, REG_SYS_CFG2 + 3) == 0x20) {   /* usb3.0 */
33 		value8 |= (HALMAC_USB_BURST_SIZE_3_0 << BIT_SHIFT_BURST_SIZE);
34 	} else {
35 		if ((PLATFORM_REG_READ_8(pDriver_adapter, REG_USB_USBSTAT) & 0x3) == 0x1)       /* usb2.0 */
36 			value8 |= HALMAC_USB_BURST_SIZE_2_0_HSPEED << BIT_SHIFT_BURST_SIZE;
37 		else                                                                            /* usb1.1 */
38 			value8 |= HALMAC_USB_BURST_SIZE_2_0_FSPEED << BIT_SHIFT_BURST_SIZE;
39 	}
40 
41 	PLATFORM_REG_WRITE_8(pDriver_adapter, REG_RXDMA_MODE, value8);
42 	PLATFORM_REG_WRITE_16(pDriver_adapter, REG_TXDMA_OFFSET_CHK, PLATFORM_REG_READ_16(pDriver_adapter, REG_TXDMA_OFFSET_CHK) | BIT_DROP_DATA_EN);
43 
44 	PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_init_usb_cfg_88xx <==========\n");
45 
46 	return HALMAC_RET_SUCCESS;
47 }
48 
49 /**
50  * halmac_deinit_usb_cfg_88xx() - init USB related register
51  * @pHalmac_adapter
52  * Author : KaiYuan Chang
53  * Return : HALMAC_RET_STATUS
54  */
55 HALMAC_RET_STATUS
halmac_deinit_usb_cfg_88xx(IN PHALMAC_ADAPTER pHalmac_adapter)56 halmac_deinit_usb_cfg_88xx(
57 	IN PHALMAC_ADAPTER pHalmac_adapter
58 )
59 {
60 	VOID *pDriver_adapter = NULL;
61 
62 	if (HALMAC_RET_SUCCESS != halmac_adapter_validate(pHalmac_adapter))
63 		return HALMAC_RET_ADAPTER_INVALID;
64 
65 	if (HALMAC_RET_SUCCESS != halmac_api_validate(pHalmac_adapter))
66 		return HALMAC_RET_API_INVALID;
67 
68 	halmac_api_record_id_88xx(pHalmac_adapter, HALMAC_API_DEINIT_USB_CFG);
69 
70 	pDriver_adapter = pHalmac_adapter->pDriver_adapter;
71 
72 	PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_deinit_usb_cfg_88xx ==========>\n");
73 
74 	PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_deinit_usb_cfg_88xx <==========\n");
75 
76 	return HALMAC_RET_SUCCESS;
77 }
78 
79 /**
80  * halmac_cfg_rx_aggregation_88xx_usb() -  config rx aggregation
81  * @pHalmac_adapter
82  * @halmac_rx_agg_mode
83  * Author : KaiYuan Chang
84  * Return : HALMAC_RET_STATUS
85  */
86 HALMAC_RET_STATUS
halmac_cfg_rx_aggregation_88xx_usb(IN PHALMAC_ADAPTER pHalmac_adapter,IN PHALMAC_RXAGG_CFG phalmac_rxagg_cfg)87 halmac_cfg_rx_aggregation_88xx_usb(
88 	IN PHALMAC_ADAPTER pHalmac_adapter,
89 	IN PHALMAC_RXAGG_CFG phalmac_rxagg_cfg
90 )
91 {
92 	u8 dma_usb_agg;
93 	u8 size = 0, timeout = 0, agg_enable = 0;
94 	VOID *pDriver_adapter = NULL;
95 	PHALMAC_API pHalmac_api;
96 
97 	if (HALMAC_RET_SUCCESS != halmac_adapter_validate(pHalmac_adapter))
98 		return HALMAC_RET_ADAPTER_INVALID;
99 
100 	if (HALMAC_RET_SUCCESS != halmac_api_validate(pHalmac_adapter))
101 		return HALMAC_RET_API_INVALID;
102 
103 	halmac_api_record_id_88xx(pHalmac_adapter, HALMAC_API_CFG_RX_AGGREGATION);
104 
105 	pDriver_adapter = pHalmac_adapter->pDriver_adapter;
106 	pHalmac_api = (PHALMAC_API)pHalmac_adapter->pHalmac_api;
107 
108 	PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_cfg_rx_aggregation_88xx_usb ==========>\n");
109 
110 	dma_usb_agg = HALMAC_REG_READ_8(pHalmac_adapter, REG_RXDMA_AGG_PG_TH + 3);
111 	agg_enable = HALMAC_REG_READ_8(pHalmac_adapter, REG_TXDMA_PQ_MAP);
112 
113 	switch (phalmac_rxagg_cfg->mode) {
114 	case HALMAC_RX_AGG_MODE_NONE:
115 		agg_enable &= ~BIT_RXDMA_AGG_EN;
116 		break;
117 	case HALMAC_RX_AGG_MODE_DMA:
118 		agg_enable |= BIT_RXDMA_AGG_EN;
119 		dma_usb_agg |= BIT(7);
120 		break;
121 
122 	case HALMAC_RX_AGG_MODE_USB:
123 		agg_enable |= BIT_RXDMA_AGG_EN;
124 		dma_usb_agg &= ~BIT(7);
125 		break;
126 	default:
127 		PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_ERR, "halmac_cfg_rx_aggregation_88xx_usb switch case not support\n");
128 		agg_enable &= ~BIT_RXDMA_AGG_EN;
129 		break;
130 	}
131 
132 	if (_FALSE == phalmac_rxagg_cfg->threshold.drv_define) {
133 		if (PLATFORM_REG_READ_8(pDriver_adapter, REG_SYS_CFG2 + 3) == 0x20) {
134 			/* usb3.0 */
135 			size = 0x5;
136 			timeout = 0xA;
137 		} else {
138 			/* usb2.0 */
139 			size = 0x5;
140 			timeout = 0x20;
141 		}
142 	} else {
143 		size = phalmac_rxagg_cfg->threshold.size;
144 		timeout = phalmac_rxagg_cfg->threshold.timeout;
145 	}
146 
147 	HALMAC_REG_WRITE_8(pHalmac_adapter, REG_TXDMA_PQ_MAP, agg_enable);
148 	HALMAC_REG_WRITE_8(pHalmac_adapter, REG_RXDMA_AGG_PG_TH + 3, dma_usb_agg);
149 	HALMAC_REG_WRITE_16(pHalmac_adapter, REG_RXDMA_AGG_PG_TH, (u16)(size | (timeout << BIT_SHIFT_DMA_AGG_TO)));
150 
151 	PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_cfg_rx_aggregation_88xx_usb <==========\n");
152 
153 	return HALMAC_RET_SUCCESS;
154 }
155 
156 /**
157  * halmac_reg_read_8_usb_88xx() - read 1byte register
158  * @pHalmac_adapter
159  * @halmac_offset
160  * Author : KaiYuan Chang
161  * Return : HALMAC_RET_STATUS
162  */
163 u8
halmac_reg_read_8_usb_88xx(IN PHALMAC_ADAPTER pHalmac_adapter,IN u32 halmac_offset)164 halmac_reg_read_8_usb_88xx(
165 	IN PHALMAC_ADAPTER pHalmac_adapter,
166 	IN u32 halmac_offset
167 )
168 {
169 	u8 value8;
170 	VOID *pDriver_adapter = NULL;
171 	PHALMAC_API pHalmac_api;
172 
173 	if (HALMAC_RET_SUCCESS != halmac_adapter_validate(pHalmac_adapter))
174 		return HALMAC_RET_ADAPTER_INVALID;
175 
176 	if (HALMAC_RET_SUCCESS != halmac_api_validate(pHalmac_adapter))
177 		return HALMAC_RET_API_INVALID;
178 
179 	pDriver_adapter = pHalmac_adapter->pDriver_adapter;
180 	pHalmac_api = (PHALMAC_API)pHalmac_adapter->pHalmac_api;
181 
182 	/* PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_reg_read_8_usb_88xx ==========>\n"); */
183 
184 	value8 = PLATFORM_REG_READ_8(pDriver_adapter, halmac_offset);
185 
186 	/* PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_reg_read_8_usb_88xx <==========\n"); */
187 
188 	return value8;
189 }
190 
191 /**
192  * halmac_reg_write_8_usb_88xx() - write 1byte register
193  * @pHalmac_adapter
194  * @halmac_offset
195  * @halmac_data
196  * Author : KaiYuan Chang
197  * Return : HALMAC_RET_STATUS
198  */
199 HALMAC_RET_STATUS
halmac_reg_write_8_usb_88xx(IN PHALMAC_ADAPTER pHalmac_adapter,IN u32 halmac_offset,IN u8 halmac_data)200 halmac_reg_write_8_usb_88xx(
201 	IN PHALMAC_ADAPTER pHalmac_adapter,
202 	IN u32 halmac_offset,
203 	IN u8 halmac_data
204 )
205 {
206 	VOID *pDriver_adapter = NULL;
207 	PHALMAC_API pHalmac_api;
208 
209 	if (HALMAC_RET_SUCCESS != halmac_adapter_validate(pHalmac_adapter))
210 		return HALMAC_RET_ADAPTER_INVALID;
211 
212 	if (HALMAC_RET_SUCCESS != halmac_api_validate(pHalmac_adapter))
213 		return HALMAC_RET_API_INVALID;
214 
215 	pDriver_adapter = pHalmac_adapter->pDriver_adapter;
216 	pHalmac_api = (PHALMAC_API)pHalmac_adapter->pHalmac_api;
217 
218 
219 	/* PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_reg_write_8_usb_88xx ==========>\n"); */
220 
221 	PLATFORM_REG_WRITE_8(pDriver_adapter, halmac_offset, halmac_data);
222 
223 	/* PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_reg_write_8_usb_88xx <==========\n"); */
224 
225 	return HALMAC_RET_SUCCESS;
226 }
227 
228 /**
229  * halmac_reg_read_16_usb_88xx() - read 2byte register
230  * @pHalmac_adapter
231  * @halmac_offset
232  * Author : KaiYuan Chang
233  * Return : HALMAC_RET_STATUS
234  */
235 u16
halmac_reg_read_16_usb_88xx(IN PHALMAC_ADAPTER pHalmac_adapter,IN u32 halmac_offset)236 halmac_reg_read_16_usb_88xx(
237 	IN PHALMAC_ADAPTER pHalmac_adapter,
238 	IN u32 halmac_offset
239 )
240 {
241 	VOID *pDriver_adapter = NULL;
242 	PHALMAC_API pHalmac_api;
243 
244 	union {
245 		u16	word;
246 		u8	byte[2];
247 	} value16 = { 0x0000 };
248 
249 	if (HALMAC_RET_SUCCESS != halmac_adapter_validate(pHalmac_adapter))
250 		return HALMAC_RET_ADAPTER_INVALID;
251 
252 	if (HALMAC_RET_SUCCESS != halmac_api_validate(pHalmac_adapter))
253 		return HALMAC_RET_API_INVALID;
254 
255 	pDriver_adapter = pHalmac_adapter->pDriver_adapter;
256 	pHalmac_api = (PHALMAC_API)pHalmac_adapter->pHalmac_api;
257 
258 	/* PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_reg_read_16_usb_88xx ==========>\n"); */
259 
260 	value16.word = PLATFORM_REG_READ_16(pDriver_adapter, halmac_offset);
261 
262 	/* PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_reg_read_16_usb_88xx <==========\n"); */
263 
264 	return value16.word;
265 }
266 
267 /**
268  * halmac_reg_write_16_usb_88xx() - write 2byte register
269  * @pHalmac_adapter
270  * @halmac_offset
271  * @halmac_data
272  * Author : KaiYuan Chang
273  * Return : HALMAC_RET_STATUS
274  */
275 HALMAC_RET_STATUS
halmac_reg_write_16_usb_88xx(IN PHALMAC_ADAPTER pHalmac_adapter,IN u32 halmac_offset,IN u16 halmac_data)276 halmac_reg_write_16_usb_88xx(
277 	IN PHALMAC_ADAPTER pHalmac_adapter,
278 	IN u32 halmac_offset,
279 	IN u16 halmac_data
280 )
281 {
282 	VOID *pDriver_adapter = NULL;
283 	PHALMAC_API pHalmac_api;
284 
285 	if (HALMAC_RET_SUCCESS != halmac_adapter_validate(pHalmac_adapter))
286 		return HALMAC_RET_ADAPTER_INVALID;
287 
288 	if (HALMAC_RET_SUCCESS != halmac_api_validate(pHalmac_adapter))
289 		return HALMAC_RET_API_INVALID;
290 
291 	pDriver_adapter = pHalmac_adapter->pDriver_adapter;
292 	pHalmac_api = (PHALMAC_API)pHalmac_adapter->pHalmac_api;
293 
294 	/* PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_reg_write_16_usb_88xx ==========>\n"); */
295 
296 	PLATFORM_REG_WRITE_16(pDriver_adapter, halmac_offset, halmac_data);
297 
298 	/* PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_reg_write_16_usb_88xx <==========\n"); */
299 
300 	return HALMAC_RET_SUCCESS;
301 }
302 
303 /**
304  * halmac_reg_read_32_usb_88xx() - read 4byte register
305  * @pHalmac_adapter
306  * @halmac_offset
307  * Author : KaiYuan Chang
308  * Return : HALMAC_RET_STATUS
309  */
310 u32
halmac_reg_read_32_usb_88xx(IN PHALMAC_ADAPTER pHalmac_adapter,IN u32 halmac_offset)311 halmac_reg_read_32_usb_88xx(
312 	IN PHALMAC_ADAPTER pHalmac_adapter,
313 	IN u32 halmac_offset
314 )
315 {
316 	VOID *pDriver_adapter = NULL;
317 	PHALMAC_API pHalmac_api;
318 
319 	union {
320 		u32	dword;
321 		u8	byte[4];
322 	} value32 = { 0x00000000 };
323 
324 	if (HALMAC_RET_SUCCESS != halmac_adapter_validate(pHalmac_adapter))
325 		return HALMAC_RET_ADAPTER_INVALID;
326 
327 	if (HALMAC_RET_SUCCESS != halmac_api_validate(pHalmac_adapter))
328 		return HALMAC_RET_API_INVALID;
329 
330 	pDriver_adapter = pHalmac_adapter->pDriver_adapter;
331 	pHalmac_api = (PHALMAC_API)pHalmac_adapter->pHalmac_api;
332 
333 	/* PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_reg_read_32_usb_88xx ==========>\n"); */
334 
335 	value32.dword = PLATFORM_REG_READ_32(pDriver_adapter, halmac_offset);
336 
337 	/* PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_reg_read_32_usb_88xx <==========\n"); */
338 
339 	return value32.dword;
340 }
341 
342 /**
343  * halmac_reg_write_32_usb_88xx() - write 4byte register
344  * @pHalmac_adapter
345  * @halmac_offset
346  * @halmac_data
347  * Author : KaiYuan Chang
348  * Return : HALMAC_RET_STATUS
349  */
350 HALMAC_RET_STATUS
halmac_reg_write_32_usb_88xx(IN PHALMAC_ADAPTER pHalmac_adapter,IN u32 halmac_offset,IN u32 halmac_data)351 halmac_reg_write_32_usb_88xx(
352 	IN PHALMAC_ADAPTER pHalmac_adapter,
353 	IN u32 halmac_offset,
354 	IN u32 halmac_data
355 )
356 {
357 	VOID *pDriver_adapter = NULL;
358 	PHALMAC_API pHalmac_api;
359 
360 	if (HALMAC_RET_SUCCESS != halmac_adapter_validate(pHalmac_adapter))
361 		return HALMAC_RET_ADAPTER_INVALID;
362 
363 	if (HALMAC_RET_SUCCESS != halmac_api_validate(pHalmac_adapter))
364 		return HALMAC_RET_API_INVALID;
365 
366 	pDriver_adapter = pHalmac_adapter->pDriver_adapter;
367 	pHalmac_api = (PHALMAC_API)pHalmac_adapter->pHalmac_api;
368 
369 	/* PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_reg_write_32_usb_88xx ==========>\n"); */
370 
371 	PLATFORM_REG_WRITE_32(pDriver_adapter, halmac_offset, halmac_data);
372 
373 	/* PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_reg_write_32_usb_88xx <==========\n"); */
374 
375 	return HALMAC_RET_SUCCESS;
376 }
377 
378 /**
379  * halmac_set_bulkout_num_88xx() - set bulk out endpoint number
380  * @pHalmac_adapter
381  * @bulkout_num
382  * Author : KaiYuan Chang
383  * Return : HALMAC_RET_STATUS
384  */
385 HALMAC_RET_STATUS
halmac_set_bulkout_num_88xx(IN PHALMAC_ADAPTER pHalmac_adapter,IN u8 bulkout_num)386 halmac_set_bulkout_num_88xx(
387 	IN PHALMAC_ADAPTER pHalmac_adapter,
388 	IN u8 bulkout_num
389 )
390 {
391 	VOID *pDriver_adapter = NULL;
392 	PHALMAC_API pHalmac_api;
393 
394 	if (HALMAC_RET_SUCCESS != halmac_adapter_validate(pHalmac_adapter))
395 		return HALMAC_RET_ADAPTER_INVALID;
396 
397 	if (HALMAC_RET_SUCCESS != halmac_api_validate(pHalmac_adapter))
398 		return HALMAC_RET_API_INVALID;
399 
400 	halmac_api_record_id_88xx(pHalmac_adapter, HALMAC_API_SET_BULKOUT_NUM);
401 
402 	pDriver_adapter = pHalmac_adapter->pDriver_adapter;
403 	pHalmac_api = (PHALMAC_API)pHalmac_adapter->pHalmac_api;
404 
405 	/* PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE,"halmac_set_bulkout_num_88xx ==========>\n"); */
406 	/* PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE,"bulkout_num = %d\n", bulkout_num); */
407 
408 	pHalmac_adapter->halmac_bulkout_num = bulkout_num;
409 
410 	/* PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE,"halmac_set_bulkout_num_88xx <==========\n"); */
411 
412 	return HALMAC_RET_SUCCESS;
413 }
414 
415 /**
416  * halmac_get_usb_bulkout_id_88xx() - get bulk out id for the TX packet
417  * @pHalmac_adapter
418  * @halmac_buf
419  * @halmac_size
420  * @bulkout_id
421  * Author : KaiYuan Chang
422  * Return : HALMAC_RET_STATUS
423  */
424 HALMAC_RET_STATUS
halmac_get_usb_bulkout_id_88xx(IN PHALMAC_ADAPTER pHalmac_adapter,IN u8 * halmac_buf,IN u32 halmac_size,OUT u8 * bulkout_id)425 halmac_get_usb_bulkout_id_88xx(
426 	IN PHALMAC_ADAPTER pHalmac_adapter,
427 	IN u8 *halmac_buf,
428 	IN u32 halmac_size,
429 	OUT u8 *bulkout_id
430 )
431 {
432 	VOID *pDriver_adapter = NULL;
433 	PHALMAC_API pHalmac_api;
434 	HALMAC_QUEUE_SELECT queue_sel;
435 	HALMAC_DMA_MAPPING dma_mapping;
436 
437 	if (HALMAC_RET_SUCCESS != halmac_adapter_validate(pHalmac_adapter))
438 		return HALMAC_RET_ADAPTER_INVALID;
439 
440 	if (HALMAC_RET_SUCCESS != halmac_api_validate(pHalmac_adapter))
441 		return HALMAC_RET_API_INVALID;
442 
443 	halmac_api_record_id_88xx(pHalmac_adapter, HALMAC_API_GET_USB_BULKOUT_ID);
444 
445 	pDriver_adapter = pHalmac_adapter->pDriver_adapter;
446 	pHalmac_api = (PHALMAC_API)pHalmac_adapter->pHalmac_api;
447 
448 	PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_get_usb_bulkout_id_88xx ==========>\n");
449 
450 	if (NULL == halmac_buf) {
451 		PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_ERR, "halmac_buf is NULL!!\n");
452 		return HALMAC_RET_DATA_BUF_NULL;
453 	}
454 
455 	if (0 == halmac_size) {
456 		PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_ERR, "halmac_size is 0!!\n");
457 		return HALMAC_RET_DATA_SIZE_INCORRECT;
458 	}
459 
460 	queue_sel = (HALMAC_QUEUE_SELECT)GET_TX_DESC_QSEL(halmac_buf);
461 
462 	switch (queue_sel) {
463 	case HALMAC_QUEUE_SELECT_VO:
464 	case HALMAC_QUEUE_SELECT_VO_V2:
465 		dma_mapping = pHalmac_adapter->halmac_ptcl_queue[HALMAC_PTCL_QUEUE_VO];
466 		break;
467 	case HALMAC_QUEUE_SELECT_VI:
468 	case HALMAC_QUEUE_SELECT_VI_V2:
469 		dma_mapping = pHalmac_adapter->halmac_ptcl_queue[HALMAC_PTCL_QUEUE_VI];
470 		break;
471 	case HALMAC_QUEUE_SELECT_BE:
472 	case HALMAC_QUEUE_SELECT_BE_V2:
473 		dma_mapping = pHalmac_adapter->halmac_ptcl_queue[HALMAC_PTCL_QUEUE_BE];
474 		break;
475 	case HALMAC_QUEUE_SELECT_BK:
476 	case HALMAC_QUEUE_SELECT_BK_V2:
477 		dma_mapping = pHalmac_adapter->halmac_ptcl_queue[HALMAC_PTCL_QUEUE_BK];
478 		break;
479 	case HALMAC_QUEUE_SELECT_MGNT:
480 		dma_mapping = pHalmac_adapter->halmac_ptcl_queue[HALMAC_PTCL_QUEUE_MG];
481 		break;
482 	case HALMAC_QUEUE_SELECT_HIGH:
483 	case HALMAC_QUEUE_SELECT_BCN:
484 	case HALMAC_QUEUE_SELECT_CMD:
485 		dma_mapping = HALMAC_DMA_MAPPING_HIGH;
486 		break;
487 	default:
488 		PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_ERR, "Qsel is out of range\n");
489 		return HALMAC_RET_QSEL_INCORRECT;
490 	}
491 
492 	switch (dma_mapping) {
493 	case HALMAC_DMA_MAPPING_HIGH:
494 		*bulkout_id = 0;
495 		break;
496 	case HALMAC_DMA_MAPPING_NORMAL:
497 		*bulkout_id = 1;
498 		break;
499 	case HALMAC_DMA_MAPPING_LOW:
500 		*bulkout_id = 2;
501 		break;
502 	case HALMAC_DMA_MAPPING_EXTRA:
503 		*bulkout_id = 3;
504 		break;
505 	default:
506 		PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_ERR, "DmaMapping is out of range\n");
507 		return HALMAC_RET_DMA_MAP_INCORRECT;
508 	}
509 
510 	PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_get_usb_bulkout_id_88xx <==========\n");
511 
512 	return HALMAC_RET_SUCCESS;
513 }
514 
515 /**
516  * halmac_cfg_tx_agg_align_usb_not_support_88xx() -
517  * @pHalmac_adapter
518  * @enable
519  * @align_size
520  * Author : Soar Tu
521  * Return : HALMAC_RET_STATUS
522  */
523 HALMAC_RET_STATUS
halmac_cfg_tx_agg_align_usb_not_support_88xx(IN PHALMAC_ADAPTER pHalmac_adapter,IN u8 enable,IN u16 align_size)524 halmac_cfg_tx_agg_align_usb_not_support_88xx(
525 	IN PHALMAC_ADAPTER	pHalmac_adapter,
526 	IN u8	enable,
527 	IN u16	align_size
528 )
529 {
530 	PHALMAC_API pHalmac_api;
531 	VOID *pDriver_adapter = NULL;
532 
533 	if (HALMAC_RET_SUCCESS != halmac_adapter_validate(pHalmac_adapter))
534 		return HALMAC_RET_ADAPTER_INVALID;
535 
536 	if (HALMAC_RET_SUCCESS != halmac_api_validate(pHalmac_adapter))
537 		return HALMAC_RET_API_INVALID;
538 
539 	halmac_api_record_id_88xx(pHalmac_adapter, HALMAC_API_CFG_TX_AGG_ALIGN);
540 
541 	pDriver_adapter = pHalmac_adapter->pDriver_adapter;
542 	pHalmac_api = (PHALMAC_API)pHalmac_adapter->pHalmac_api;
543 
544 
545 	PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_cfg_tx_agg_align_usb_not_support_88xx ==========>\n");
546 
547 	PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_cfg_tx_agg_align_usb_not_support_88xx not support\n");
548 	PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_cfg_tx_agg_align_usb_not_support_88xx <==========\n");
549 
550 	return HALMAC_RET_SUCCESS;
551 }
552 
553