1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  * CXL protocol Error INJection support.
4  *
5  * Copyright (c) 2023 Advanced Micro Devices, Inc.
6  * All Rights Reserved.
7  *
8  * Author: Ben Cheatham <benjamin.cheatham@amd.com>
9  */
10 #ifndef EINJ_CXL_H
11 #define EINJ_CXL_H
12 
13 #include <linux/errno.h>
14 #include <linux/types.h>
15 
16 struct pci_dev;
17 struct seq_file;
18 
19 #if IS_ENABLED(CONFIG_ACPI_APEI_EINJ_CXL)
20 int einj_cxl_available_error_type_show(struct seq_file *m, void *v);
21 int einj_cxl_inject_error(struct pci_dev *dport_dev, u64 type);
22 int einj_cxl_inject_rch_error(u64 rcrb, u64 type);
23 bool einj_cxl_is_initialized(void);
24 #else /* !IS_ENABLED(CONFIG_ACPI_APEI_EINJ_CXL) */
einj_cxl_available_error_type_show(struct seq_file * m,void * v)25 static inline int einj_cxl_available_error_type_show(struct seq_file *m,
26 						     void *v)
27 {
28 	return -ENXIO;
29 }
30 
einj_cxl_inject_error(struct pci_dev * dport_dev,u64 type)31 static inline int einj_cxl_inject_error(struct pci_dev *dport_dev, u64 type)
32 {
33 	return -ENXIO;
34 }
35 
einj_cxl_inject_rch_error(u64 rcrb,u64 type)36 static inline int einj_cxl_inject_rch_error(u64 rcrb, u64 type)
37 {
38 	return -ENXIO;
39 }
40 
einj_cxl_is_initialized(void)41 static inline bool einj_cxl_is_initialized(void) { return false; }
42 #endif /* CONFIG_ACPI_APEI_EINJ_CXL */
43 
44 #endif /* EINJ_CXL_H */
45