xref: /wlan-dirver/qca-wifi-host-cmn/qdf/inc/qdf_dev.h (revision 6d768494e5ce14eb1603a695c86739d12ecc6ec2)
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 
35 #ifdef ENHANCED_OS_ABSTRACTION
36 /**
37  * qdf_dev_alloc_mem() - allocate memory
38  * @qdfdev: Device handle
39  * @mrptr: Pointer to the allocated memory
40  * @reqsize: Allocation request in bytes
41  * @mask: Property mask to be associated to the allocated memory
42  *
43  * This function will acquire memory to be associated with a device
44  *
45  * Return: QDF_STATUS_SUCCESS on success
46  */
47 QDF_STATUS
48 qdf_dev_alloc_mem(struct qdf_dev *qdfdev, struct qdf_devm **mrptr,
49 		  uint32_t reqsize, uint32_t mask);
50 
51 /**
52  * qdf_dev_release_mem() - release memory
53  * @qdfdev: Device handle
54  * @mrptr: Pointer to the allocated memory
55  *
56  * This function will acquire memory to be associated with a device
57  *
58  * Return: QDF_STATUS_SUCCESS on success
59  */
60 QDF_STATUS
61 qdf_dev_release_mem(struct qdf_dev *qdfdev, struct qdf_devm *mrptr);
62 
63 /**
64  * qdf_dev_modify_irq() - modify irq
65  * @irnum: irq number
66  * @cmask: Bitmap to be cleared for the property mask
67  * @smask: Bitmap to be set for the property mask
68  *
69  * This function will acquire memory to be associated with a device
70  *
71  * Return: QDF_STATUS_SUCCESS on success
72  */
73 QDF_STATUS
74 qdf_dev_modify_irq_status(uint32_t irnum, unsigned long cmask,
75 			  unsigned long smask);
76 
77 /**
78  * qdf_dev_set_irq_affinity() - set irq affinity
79  * @irnum: irq number
80  * @cpmask: cpu affinity bitmap
81  *
82  * This function will set the affinity level for an irq
83  *
84  * Return: QDF_STATUS_SUCCESS on success
85  */
86 QDF_STATUS
87 qdf_dev_set_irq_affinity(uint32_t irnum, struct qdf_cpu_mask *cpmask);
88 #else
89 static inline QDF_STATUS
90 qdf_dev_alloc_mem(struct qdf_dev *qdfdev, struct qdf_devm **mrptr,
91 		  uint32_t reqsize, uint32_t mask)
92 {
93 	return __qdf_dev_alloc_mem(qdfdev, mrptr, reqsize, mask);
94 }
95 
96 static inline QDF_STATUS
97 qdf_dev_release_mem(struct qdf_dev *qdfdev, struct qdf_devm *mrptr)
98 {
99 	return __qdf_dev_release_mem(qdfdev, mrptr);
100 }
101 
102 static inline QDF_STATUS
103 qdf_dev_modify_irq_status(uint32_t irnum, unsigned long cmask,
104 			  unsigned long smask)
105 {
106 	return __qdf_dev_modify_irq_status(irnum, cmask, smask);
107 }
108 
109 static inline QDF_STATUS
110 qdf_dev_set_irq_affinity(uint32_t irnum, struct qdf_cpu_mask *cpmask)
111 {
112 	return __qdf_dev_set_irq_affinity(irnum, cpmask);
113 }
114 #endif
115 
116 static inline int qdf_topology_physical_package_id(unsigned int cpu)
117 {
118 	return __qdf_topology_physical_package_id(cpu);
119 }
120 
121 static inline int qdf_cpumask_subset(qdf_cpu_mask *srcp1,
122 				     const qdf_cpu_mask *srcp2)
123 {
124 	return __qdf_cpumask_subset(srcp1, srcp2);
125 }
126 
127 static inline int qdf_cpumask_intersects(qdf_cpu_mask *srcp1,
128 					 const qdf_cpu_mask *srcp2)
129 {
130 	return __qdf_cpumask_intersects(srcp1, srcp2);
131 }
132 
133 static inline int qdf_core_ctl_set_boost(bool boost)
134 {
135 	return __qdf_core_ctl_set_boost(boost);
136 }
137 #endif /* __QDF_DEV_H */
138