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 13struct cxl_irq_ranges { 14 irq_hw_number_t offset[CXL_IRQ_RANGES]; 15 irq_hw_number_t range[CXL_IRQ_RANGES]; 16}; 17 18extern atomic_t cxl_use_count; 19 20static inline bool cxl_ctx_in_use(void) 21{ 22 return (atomic_read(&cxl_use_count) != 0); 23} 24 25static inline void cxl_ctx_get(void) 26{ 27 atomic_inc(&cxl_use_count); 28} 29 30static inline void cxl_ctx_put(void) 31{ 32 atomic_dec(&cxl_use_count); 33} 34 35struct cxl_afu *cxl_afu_get(struct cxl_afu *afu); 36void cxl_afu_put(struct cxl_afu *afu); 37void cxl_slbia(struct mm_struct *mm); 38 39#else /* CONFIG_CXL_BASE */ 40 41static inline bool cxl_ctx_in_use(void) { return false; } 42static inline struct cxl_afu *cxl_afu_get(struct cxl_afu *afu) { return NULL; } 43static inline void cxl_afu_put(struct cxl_afu *afu) {} 44static inline void cxl_slbia(struct mm_struct *mm) {} 45 46#endif /* CONFIG_CXL_BASE */ 47 48#endif 49