xref: /wlan-dirver/qca-wifi-host-cmn/qdf/inc/qdf_dev.h (revision 97f44cd39e4ff816eaa1710279d28cf6b9e65ad9)
1 /*
2  * Copyright (c) 2018-2020 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 /**
20  * DOC: qdf_dev
21  * QCA driver framework (QDF) device management APIs
22  */
23 
24 #if !defined(__QDF_DEV_H)
25 #define __QDF_DEV_H
26 
27 /* Include Files */
28 #include <qdf_types.h>
29 #include "i_qdf_dev.h"
30 
31 #define qdf_cpumask_pr_args(maskp) __qdf_cpumask_pr_args(maskp)
32 #define qdf_for_each_possible_cpu(cpu) __qdf_for_each_possible_cpu(cpu)
33 #define qdf_for_each_online_cpu(cpu) __qdf_for_each_online_cpu(cpu)
34 #define qdf_for_each_cpu(cpu, maskp) __qdf_for_each_cpu(cpu, maskp)
35 #define qdf_for_each_cpu_not(cpu, maskp) \
36 __qdf_for_each_cpu_not(cpu, maskp)
37 
38 #ifdef ENHANCED_OS_ABSTRACTION
39 /**
40  * qdf_dev_alloc_mem() - allocate memory
41  * @qdfdev: Device handle
42  * @mrptr: Pointer to the allocated memory
43  * @reqsize: Allocation request in bytes
44  * @mask: Property mask to be associated to the allocated memory
45  *
46  * This function will acquire memory to be associated with a device
47  *
48  * Return: QDF_STATUS_SUCCESS on success
49  */
50 QDF_STATUS
51 qdf_dev_alloc_mem(struct qdf_dev *qdfdev, struct qdf_devm **mrptr,
52 		  uint32_t reqsize, uint32_t mask);
53 
54 /**
55  * qdf_dev_release_mem() - release memory
56  * @qdfdev: Device handle
57  * @mrptr: Pointer to the allocated memory
58  *
59  * This function will acquire memory to be associated with a device
60  *
61  * Return: QDF_STATUS_SUCCESS on success
62  */
63 QDF_STATUS
64 qdf_dev_release_mem(struct qdf_dev *qdfdev, struct qdf_devm *mrptr);
65 
66 /**
67  * qdf_dev_modify_irq() - modify irq
68  * @irnum: irq number
69  * @cmask: Bitmap to be cleared for the property mask
70  * @smask: Bitmap to be set for the property mask
71  *
72  * This function will acquire memory to be associated with a device
73  *
74  * Return: QDF_STATUS_SUCCESS on success
75  */
76 QDF_STATUS
77 qdf_dev_modify_irq_status(uint32_t irnum, unsigned long cmask,
78 			  unsigned long smask);
79 
80 /**
81  * qdf_dev_set_irq_affinity() - set irq affinity
82  * @irnum: irq number
83  * @cpmask: cpu affinity bitmap
84  *
85  * This function will set the affinity level for an irq
86  *
87  * Return: QDF_STATUS_SUCCESS on success
88  */
89 QDF_STATUS
90 qdf_dev_set_irq_affinity(uint32_t irnum, struct qdf_cpu_mask *cpmask);
91 #else
92 static inline QDF_STATUS
93 qdf_dev_alloc_mem(struct qdf_dev *qdfdev, struct qdf_devm **mrptr,
94 		  uint32_t reqsize, uint32_t mask)
95 {
96 	return __qdf_dev_alloc_mem(qdfdev, mrptr, reqsize, mask);
97 }
98 
99 static inline QDF_STATUS
100 qdf_dev_release_mem(struct qdf_dev *qdfdev, struct qdf_devm *mrptr)
101 {
102 	return __qdf_dev_release_mem(qdfdev, mrptr);
103 }
104 
105 static inline QDF_STATUS
106 qdf_dev_modify_irq_status(uint32_t irnum, unsigned long cmask,
107 			  unsigned long smask)
108 {
109 	return __qdf_dev_modify_irq_status(irnum, cmask, smask);
110 }
111 
112 static inline QDF_STATUS
113 qdf_dev_set_irq_affinity(uint32_t irnum, struct qdf_cpu_mask *cpmask)
114 {
115 	return __qdf_dev_set_irq_affinity(irnum, cpmask);
116 }
117 #endif
118 
119 static inline int qdf_topology_physical_package_id(unsigned int cpu)
120 {
121 	return __qdf_topology_physical_package_id(cpu);
122 }
123 
124 static inline int qdf_cpumask_subset(qdf_cpu_mask *srcp1,
125 				     const qdf_cpu_mask *srcp2)
126 {
127 	return __qdf_cpumask_subset(srcp1, srcp2);
128 }
129 
130 static inline int qdf_cpumask_intersects(qdf_cpu_mask *srcp1,
131 					 const qdf_cpu_mask *srcp2)
132 {
133 	return __qdf_cpumask_intersects(srcp1, srcp2);
134 }
135 
136 static inline int qdf_core_ctl_set_boost(bool boost)
137 {
138 	return __qdf_core_ctl_set_boost(boost);
139 }
140 #endif /* __QDF_DEV_H */
141