1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
2 | /* |
3 | * Copyright 2014 IBM Corp. |
4 | */ |
5 | |
6 | #ifndef _MISC_CXL_BASE_H |
7 | #define _MISC_CXL_BASE_H |
8 | |
9 | #ifdef CONFIG_CXL_BASE |
10 | |
11 | #define CXL_IRQ_RANGES 4 |
12 | |
13 | struct cxl_irq_ranges { |
14 | irq_hw_number_t offset[CXL_IRQ_RANGES]; |
15 | irq_hw_number_t range[CXL_IRQ_RANGES]; |
16 | }; |
17 | |
18 | extern atomic_t cxl_use_count; |
19 | |
20 | static inline bool cxl_ctx_in_use(void) |
21 | { |
22 | return (atomic_read(&cxl_use_count) != 0); |
23 | } |
24 | |
25 | static inline void cxl_ctx_get(void) |
26 | { |
27 | atomic_inc(&cxl_use_count); |
28 | } |
29 | |
30 | static inline void cxl_ctx_put(void) |
31 | { |
32 | atomic_dec(&cxl_use_count); |
33 | } |
34 | |
35 | struct cxl_afu *cxl_afu_get(struct cxl_afu *afu); |
36 | void cxl_afu_put(struct cxl_afu *afu); |
37 | void cxl_slbia(struct mm_struct *mm); |
38 | |
39 | #else /* CONFIG_CXL_BASE */ |
40 | |
41 | static inline bool cxl_ctx_in_use(void) { return false; } |
42 | static inline struct cxl_afu *cxl_afu_get(struct cxl_afu *afu) { return NULL; } |
43 | static inline void cxl_afu_put(struct cxl_afu *afu) {} |
44 | static inline void cxl_slbia(struct mm_struct *mm) {} |
45 | |
46 | #endif /* CONFIG_CXL_BASE */ |
47 | |
48 | #endif |
49 | |