xref: /wlan-dirver/qca-wifi-host-cmn/qdf/inc/qdf_dev.h (revision dd4dc88b837a295134aa9869114a2efee0f4894b)
1 /*
2  * Copyright (c) 2018-2019 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 struct qdf_cpu_mask;
32 struct qdf_devm;
33 struct qdf_dev;
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 #endif /* __QDF_DEV_H */
116