xref: /wlan-dirver/qca-wifi-host-cmn/hal/wifi3.0/hal_reo.c (revision 2f4b444fb7e689b83a4ab0e7b3b38f0bf4def8e0)
1 /*
2  * Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
3  *
4  * Permission to use, copy, modify, and/or distribute this software for
5  * any purpose with or without fee is hereby granted, provided that the
6  * above copyright notice and this permission notice appear in all
7  * copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16  * PERFORMANCE OF THIS SOFTWARE.
17  */
18 
19 #include "hal_api.h"
20 #include "hal_hw_headers.h"
21 #include "hal_reo.h"
22 #include "qdf_module.h"
23 
24 void hal_reo_init_cmd_ring(hal_soc_handle_t hal_soc_hdl,
25 			   hal_ring_handle_t hal_ring_hdl)
26 {
27 	int cmd_num;
28 	uint32_t *desc_addr;
29 	struct hal_srng_params srng_params;
30 	uint32_t desc_size;
31 	uint32_t num_desc;
32 	struct hal_soc *soc = (struct hal_soc *)hal_soc_hdl;
33 	uint8_t tlv_hdr_size;
34 
35 	hal_get_srng_params(hal_soc_hdl, hal_ring_hdl, &srng_params);
36 
37 	desc_addr = (uint32_t *)(srng_params.ring_base_vaddr);
38 	tlv_hdr_size = hal_get_tlv_hdr_size(hal_soc_hdl);
39 	desc_addr += HAL_GET_NUM_DWORDS(tlv_hdr_size);
40 	desc_size = HAL_GET_NUM_DWORDS(hal_srng_get_entrysize(soc, REO_CMD));
41 	num_desc = srng_params.num_entries;
42 	cmd_num = 1;
43 	while (num_desc) {
44 		/* Offsets of descriptor fields defined in HW headers start
45 		 * from the field after TLV header */
46 		HAL_DESC_SET_FIELD(desc_addr, HAL_UNIFORM_REO_CMD_HEADER,
47 				   REO_CMD_NUMBER, cmd_num);
48 		desc_addr += desc_size;
49 		num_desc--; cmd_num++;
50 	}
51 
52 	soc->reo_res_bitmap = 0;
53 }
54 qdf_export_symbol(hal_reo_init_cmd_ring);
55