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
16struct pci_dev;
17struct seq_file;
18
19#if IS_ENABLED(CONFIG_ACPI_APEI_EINJ_CXL)
20int einj_cxl_available_error_type_show(struct seq_file *m, void *v);
21int einj_cxl_inject_error(struct pci_dev *dport_dev, u64 type);
22int einj_cxl_inject_rch_error(u64 rcrb, u64 type);
23bool einj_cxl_is_initialized(void);
24#else /* !IS_ENABLED(CONFIG_ACPI_APEI_EINJ_CXL) */
25static inline int einj_cxl_available_error_type_show(struct seq_file *m,
26						     void *v)
27{
28	return -ENXIO;
29}
30
31static inline int einj_cxl_inject_error(struct pci_dev *dport_dev, u64 type)
32{
33	return -ENXIO;
34}
35
36static inline int einj_cxl_inject_rch_error(u64 rcrb, u64 type)
37{
38	return -ENXIO;
39}
40
41static inline bool einj_cxl_is_initialized(void) { return false; }
42#endif /* CONFIG_ACPI_APEI_EINJ_CXL */
43
44#endif /* EINJ_CXL_H */
45