0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef __EDAC_MODULE_H__
0012 #define __EDAC_MODULE_H__
0013
0014 #include "edac_mc.h"
0015 #include "edac_pci.h"
0016 #include "edac_device.h"
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026 int edac_mc_sysfs_init(void);
0027 void edac_mc_sysfs_exit(void);
0028 extern int edac_create_sysfs_mci_device(struct mem_ctl_info *mci,
0029 const struct attribute_group **groups);
0030 extern void edac_remove_sysfs_mci_device(struct mem_ctl_info *mci);
0031 extern int edac_get_log_ue(void);
0032 extern int edac_get_log_ce(void);
0033 extern int edac_get_panic_on_ue(void);
0034 extern int edac_mc_get_log_ue(void);
0035 extern int edac_mc_get_log_ce(void);
0036 extern int edac_mc_get_panic_on_ue(void);
0037 extern int edac_get_poll_msec(void);
0038 extern unsigned int edac_mc_get_poll_msec(void);
0039
0040 unsigned edac_dimm_info_location(struct dimm_info *dimm, char *buf,
0041 unsigned len);
0042
0043
0044 extern int edac_device_register_sysfs_main_kobj(
0045 struct edac_device_ctl_info *edac_dev);
0046 extern void edac_device_unregister_sysfs_main_kobj(
0047 struct edac_device_ctl_info *edac_dev);
0048 extern int edac_device_create_sysfs(struct edac_device_ctl_info *edac_dev);
0049 extern void edac_device_remove_sysfs(struct edac_device_ctl_info *edac_dev);
0050
0051
0052 int edac_workqueue_setup(void);
0053 void edac_workqueue_teardown(void);
0054 bool edac_queue_work(struct delayed_work *work, unsigned long delay);
0055 bool edac_stop_work(struct delayed_work *work);
0056 bool edac_mod_work(struct delayed_work *work, unsigned long delay);
0057
0058 extern void edac_device_reset_delay_period(struct edac_device_ctl_info
0059 *edac_dev, unsigned long value);
0060 extern void edac_mc_reset_delay_period(unsigned long value);
0061
0062
0063
0064
0065
0066 #define edac_debugfs_remove_recursive debugfs_remove_recursive
0067 #define edac_debugfs_remove debugfs_remove
0068 #ifdef CONFIG_EDAC_DEBUG
0069 void edac_debugfs_init(void);
0070 void edac_debugfs_exit(void);
0071 void edac_create_debugfs_nodes(struct mem_ctl_info *mci);
0072 struct dentry *edac_debugfs_create_dir(const char *dirname);
0073 struct dentry *
0074 edac_debugfs_create_dir_at(const char *dirname, struct dentry *parent);
0075 struct dentry *
0076 edac_debugfs_create_file(const char *name, umode_t mode, struct dentry *parent,
0077 void *data, const struct file_operations *fops);
0078 void edac_debugfs_create_x8(const char *name, umode_t mode,
0079 struct dentry *parent, u8 *value);
0080 void edac_debugfs_create_x16(const char *name, umode_t mode,
0081 struct dentry *parent, u16 *value);
0082 void edac_debugfs_create_x32(const char *name, umode_t mode,
0083 struct dentry *parent, u32 *value);
0084 #else
0085 static inline void edac_debugfs_init(void) { }
0086 static inline void edac_debugfs_exit(void) { }
0087 static inline void edac_create_debugfs_nodes(struct mem_ctl_info *mci) { }
0088 static inline struct dentry *edac_debugfs_create_dir(const char *dirname) { return NULL; }
0089 static inline struct dentry *
0090 edac_debugfs_create_dir_at(const char *dirname, struct dentry *parent) { return NULL; }
0091 static inline struct dentry *
0092 edac_debugfs_create_file(const char *name, umode_t mode, struct dentry *parent,
0093 void *data, const struct file_operations *fops) { return NULL; }
0094 static inline void edac_debugfs_create_x8(const char *name, umode_t mode,
0095 struct dentry *parent, u8 *value) { }
0096 static inline void edac_debugfs_create_x16(const char *name, umode_t mode,
0097 struct dentry *parent, u16 *value) { }
0098 static inline void edac_debugfs_create_x32(const char *name, umode_t mode,
0099 struct dentry *parent, u32 *value) { }
0100 #endif
0101
0102
0103
0104
0105 #ifdef CONFIG_PCI
0106 extern void edac_pci_do_parity_check(void);
0107 extern void edac_pci_clear_parity_errors(void);
0108 extern int edac_sysfs_pci_setup(void);
0109 extern void edac_sysfs_pci_teardown(void);
0110 extern int edac_pci_get_check_errors(void);
0111 extern int edac_pci_get_poll_msec(void);
0112 extern void edac_pci_remove_sysfs(struct edac_pci_ctl_info *pci);
0113 extern void edac_pci_handle_pe(struct edac_pci_ctl_info *pci, const char *msg);
0114 extern void edac_pci_handle_npe(struct edac_pci_ctl_info *pci,
0115 const char *msg);
0116 #else
0117
0118 #define edac_pci_do_parity_check()
0119 #define edac_pci_clear_parity_errors()
0120 #define edac_sysfs_pci_setup() (0)
0121 #define edac_sysfs_pci_teardown()
0122 #define edac_pci_get_check_errors()
0123 #define edac_pci_get_poll_msec()
0124 #define edac_pci_handle_pe()
0125 #define edac_pci_handle_npe()
0126 #endif
0127
0128 #endif