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