Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
7c9281d7 DT |
2 | |
3 | /* | |
4 | * edac_module.h | |
5 | * | |
6 | * For defining functions/data for within the EDAC_CORE module only | |
7 | * | |
8 | * written by doug thompson <norsk5@xmission.h> | |
9 | */ | |
10 | ||
11 | #ifndef __EDAC_MODULE_H__ | |
12 | #define __EDAC_MODULE_H__ | |
13 | ||
78d88e8a MCC |
14 | #include "edac_mc.h" |
15 | #include "edac_pci.h" | |
16 | #include "edac_device.h" | |
7c9281d7 DT |
17 | |
18 | /* | |
19 | * INTERNAL EDAC MODULE: | |
20 | * EDAC memory controller sysfs create/remove functions | |
21 | * and setup/teardown functions | |
8096cfaf DT |
22 | * |
23 | * edac_mc objects | |
7c9281d7 | 24 | */ |
7a623c03 MCC |
25 | /* on edac_mc_sysfs.c */ |
26 | int edac_mc_sysfs_init(void); | |
27 | void edac_mc_sysfs_exit(void); | |
4e8d230d TI |
28 | extern int edac_create_sysfs_mci_device(struct mem_ctl_info *mci, |
29 | const struct attribute_group **groups); | |
7c9281d7 | 30 | extern void edac_remove_sysfs_mci_device(struct mem_ctl_info *mci); |
7c9281d7 DT |
31 | extern int edac_get_log_ue(void); |
32 | extern int edac_get_log_ce(void); | |
33 | extern int edac_get_panic_on_ue(void); | |
4de78c68 DJ |
34 | extern int edac_mc_get_log_ue(void); |
35 | extern int edac_mc_get_log_ce(void); | |
36 | extern int edac_mc_get_panic_on_ue(void); | |
7c9281d7 | 37 | extern int edac_get_poll_msec(void); |
d8655e76 | 38 | extern unsigned int edac_mc_get_poll_msec(void); |
7c9281d7 | 39 | |
6e84d359 MCC |
40 | unsigned edac_dimm_info_location(struct dimm_info *dimm, char *buf, |
41 | unsigned len); | |
42 | ||
7a623c03 | 43 | /* on edac_device.c */ |
1c3631ff DT |
44 | extern int edac_device_register_sysfs_main_kobj( |
45 | struct edac_device_ctl_info *edac_dev); | |
46 | extern void edac_device_unregister_sysfs_main_kobj( | |
47 | struct edac_device_ctl_info *edac_dev); | |
7c9281d7 DT |
48 | extern int edac_device_create_sysfs(struct edac_device_ctl_info *edac_dev); |
49 | extern void edac_device_remove_sysfs(struct edac_device_ctl_info *edac_dev); | |
7c9281d7 | 50 | |
e27e3dac | 51 | /* edac core workqueue: single CPU mode */ |
c4cf3b45 BP |
52 | int edac_workqueue_setup(void); |
53 | void edac_workqueue_teardown(void); | |
54 | bool edac_queue_work(struct delayed_work *work, unsigned long delay); | |
55 | bool edac_stop_work(struct delayed_work *work); | |
56 | bool edac_mod_work(struct delayed_work *work, unsigned long delay); | |
57 | ||
079708b9 DT |
58 | extern void edac_device_reset_delay_period(struct edac_device_ctl_info |
59 | *edac_dev, unsigned long value); | |
9da21b15 | 60 | extern void edac_mc_reset_delay_period(unsigned long value); |
bce19683 | 61 | |
93e4fe64 | 62 | extern void *edac_align_ptr(void **p, unsigned size, int n_elems); |
7c9281d7 | 63 | |
e7930ba4 RH |
64 | /* |
65 | * EDAC debugfs functions | |
66 | */ | |
4397bcb4 BP |
67 | |
68 | #define edac_debugfs_remove_recursive debugfs_remove_recursive | |
69 | #define edac_debugfs_remove debugfs_remove | |
e7930ba4 | 70 | #ifdef CONFIG_EDAC_DEBUG |
912ebd99 | 71 | void edac_debugfs_init(void); |
e7930ba4 | 72 | void edac_debugfs_exit(void); |
912ebd99 | 73 | void edac_create_debugfs_nodes(struct mem_ctl_info *mci); |
4397bcb4 BP |
74 | struct dentry *edac_debugfs_create_dir(const char *dirname); |
75 | struct dentry * | |
76 | edac_debugfs_create_dir_at(const char *dirname, struct dentry *parent); | |
77 | struct dentry * | |
78 | edac_debugfs_create_file(const char *name, umode_t mode, struct dentry *parent, | |
79 | void *data, const struct file_operations *fops); | |
40d79624 GKH |
80 | void edac_debugfs_create_x8(const char *name, umode_t mode, |
81 | struct dentry *parent, u8 *value); | |
82 | void edac_debugfs_create_x16(const char *name, umode_t mode, | |
83 | struct dentry *parent, u16 *value); | |
0ecace04 JL |
84 | void edac_debugfs_create_x32(const char *name, umode_t mode, |
85 | struct dentry *parent, u32 *value); | |
e7930ba4 | 86 | #else |
912ebd99 | 87 | static inline void edac_debugfs_init(void) { } |
4397bcb4 | 88 | static inline void edac_debugfs_exit(void) { } |
912ebd99 | 89 | static inline void edac_create_debugfs_nodes(struct mem_ctl_info *mci) { } |
4397bcb4 BP |
90 | static inline struct dentry *edac_debugfs_create_dir(const char *dirname) { return NULL; } |
91 | static inline struct dentry * | |
92 | edac_debugfs_create_dir_at(const char *dirname, struct dentry *parent) { return NULL; } | |
93 | static inline struct dentry * | |
94 | edac_debugfs_create_file(const char *name, umode_t mode, struct dentry *parent, | |
95 | void *data, const struct file_operations *fops) { return NULL; } | |
40d79624 GKH |
96 | static inline void edac_debugfs_create_x8(const char *name, umode_t mode, |
97 | struct dentry *parent, u8 *value) { } | |
98 | static inline void edac_debugfs_create_x16(const char *name, umode_t mode, | |
99 | struct dentry *parent, u16 *value) { } | |
0ecace04 JL |
100 | static inline void edac_debugfs_create_x32(const char *name, umode_t mode, |
101 | struct dentry *parent, u32 *value) { } | |
e7930ba4 RH |
102 | #endif |
103 | ||
7c9281d7 DT |
104 | /* |
105 | * EDAC PCI functions | |
106 | */ | |
107 | #ifdef CONFIG_PCI | |
108 | extern void edac_pci_do_parity_check(void); | |
109 | extern void edac_pci_clear_parity_errors(void); | |
110 | extern int edac_sysfs_pci_setup(void); | |
111 | extern void edac_sysfs_pci_teardown(void); | |
4de78c68 DJ |
112 | extern int edac_pci_get_check_errors(void); |
113 | extern int edac_pci_get_poll_msec(void); | |
d4c1465b DT |
114 | extern void edac_pci_remove_sysfs(struct edac_pci_ctl_info *pci); |
115 | extern void edac_pci_handle_pe(struct edac_pci_ctl_info *pci, const char *msg); | |
116 | extern void edac_pci_handle_npe(struct edac_pci_ctl_info *pci, | |
117 | const char *msg); | |
079708b9 | 118 | #else /* CONFIG_PCI */ |
7c9281d7 DT |
119 | /* pre-process these away */ |
120 | #define edac_pci_do_parity_check() | |
121 | #define edac_pci_clear_parity_errors() | |
122 | #define edac_sysfs_pci_setup() (0) | |
123 | #define edac_sysfs_pci_teardown() | |
4de78c68 DJ |
124 | #define edac_pci_get_check_errors() |
125 | #define edac_pci_get_poll_msec() | |
d4c1465b DT |
126 | #define edac_pci_handle_pe() |
127 | #define edac_pci_handle_npe() | |
079708b9 | 128 | #endif /* CONFIG_PCI */ |
7c9281d7 | 129 | |
079708b9 | 130 | #endif /* __EDAC_MODULE_H__ */ |