xref: /wlan-dirver/qca-wifi-host-cmn/dp/wifi3.0/dp_arch_ops.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 "dp_types.h"
20 #include "cdp_txrx_cmn_reg.h"
21 
22 void dp_configure_arch_ops(struct dp_soc *soc);
23 qdf_size_t dp_get_soc_context_size(uint16_t device_id);
24 
25 #ifdef CONFIG_LITHIUM
26 void dp_initialize_arch_ops_li(struct dp_arch_ops *arch_ops);
27 qdf_size_t dp_get_soc_context_size_li(void);
28 #endif
29 
30 #ifdef CONFIG_BERYLLIUM
31 void dp_initialize_arch_ops_be(struct dp_arch_ops *arch_ops);
32 qdf_size_t dp_get_soc_context_size_be(void);
33 #endif
34 
35 static void dp_initialize_default_arch_ops(struct dp_arch_ops *arch_ops)
36 {
37 /* assign dummy functions for arch_ops which are architecture specific */
38 }
39 
40 qdf_size_t dp_get_soc_context_size(uint16_t device_id)
41 
42 {
43 	switch (cdp_get_arch_type_from_devid(device_id)) {
44 #ifdef CONFIG_LITHIUM
45 	case CDP_ARCH_TYPE_LI:
46 		return dp_get_soc_context_size_li();
47 #endif
48 
49 #ifdef CONFIG_BERYLLIUM
50 	case CDP_ARCH_TYPE_BE:
51 		return dp_get_soc_context_size_be();
52 	break;
53 #endif
54 	default:
55 		QDF_BUG(0);
56 	}
57 
58 	return 0;
59 }
60 
61 void dp_configure_arch_ops(struct dp_soc *soc)
62 {
63 	dp_initialize_default_arch_ops(&soc->arch_ops);
64 
65 	switch (cdp_get_arch_type_from_devid(soc->device_id)) {
66 #ifdef CONFIG_LITHIUM
67 	case CDP_ARCH_TYPE_LI:
68 		dp_initialize_arch_ops_li(&soc->arch_ops);
69 	break;
70 #endif
71 
72 #ifdef CONFIG_BERYLLIUM
73 	case CDP_ARCH_TYPE_BE:
74 		dp_initialize_arch_ops_be(&soc->arch_ops);
75 	break;
76 #endif
77 	default:
78 		QDF_BUG(0);
79 	}
80 }
81