17c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson 27c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson/* 37c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson * edac_module.h 47c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson * 57c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson * For defining functions/data for within the EDAC_CORE module only 67c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson * 77c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson * written by doug thompson <norsk5@xmission.h> 87c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson */ 97c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson 107c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson#ifndef __EDAC_MODULE_H__ 117c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson#define __EDAC_MODULE_H__ 127c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson 137c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson#include "edac_core.h" 147c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson 157c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson/* 167c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson * INTERNAL EDAC MODULE: 177c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson * EDAC memory controller sysfs create/remove functions 187c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson * and setup/teardown functions 198096cfafbb7ad3cb1a286ae7e8086167f4ebb4b6Doug Thompson * 208096cfafbb7ad3cb1a286ae7e8086167f4ebb4b6Doug Thompson * edac_mc objects 217c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson */ 228096cfafbb7ad3cb1a286ae7e8086167f4ebb4b6Doug Thompsonextern int edac_sysfs_setup_mc_kset(void); 238096cfafbb7ad3cb1a286ae7e8086167f4ebb4b6Doug Thompsonextern void edac_sysfs_teardown_mc_kset(void); 248096cfafbb7ad3cb1a286ae7e8086167f4ebb4b6Doug Thompsonextern int edac_mc_register_sysfs_main_kobj(struct mem_ctl_info *mci); 258096cfafbb7ad3cb1a286ae7e8086167f4ebb4b6Doug Thompsonextern void edac_mc_unregister_sysfs_main_kobj(struct mem_ctl_info *mci); 267c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompsonextern int edac_create_sysfs_mci_device(struct mem_ctl_info *mci); 277c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompsonextern void edac_remove_sysfs_mci_device(struct mem_ctl_info *mci); 287c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompsonextern int edac_get_log_ue(void); 297c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompsonextern int edac_get_log_ce(void); 307c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompsonextern int edac_get_panic_on_ue(void); 314de78c6877ec21142582ac19453c2d453d1ea298Dave Jiangextern int edac_mc_get_log_ue(void); 324de78c6877ec21142582ac19453c2d453d1ea298Dave Jiangextern int edac_mc_get_log_ce(void); 334de78c6877ec21142582ac19453c2d453d1ea298Dave Jiangextern int edac_mc_get_panic_on_ue(void); 347c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompsonextern int edac_get_poll_msec(void); 3581d87cb13e367bb804bf44889ae0de7369705d6cDave Jiangextern int edac_mc_get_poll_msec(void); 367c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson 371c3631ff1f805cb72644fcde02b7c58950f21cd5Douglas Thompsonextern int edac_device_register_sysfs_main_kobj( 381c3631ff1f805cb72644fcde02b7c58950f21cd5Douglas Thompson struct edac_device_ctl_info *edac_dev); 391c3631ff1f805cb72644fcde02b7c58950f21cd5Douglas Thompsonextern void edac_device_unregister_sysfs_main_kobj( 401c3631ff1f805cb72644fcde02b7c58950f21cd5Douglas Thompson struct edac_device_ctl_info *edac_dev); 417c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompsonextern int edac_device_create_sysfs(struct edac_device_ctl_info *edac_dev); 427c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompsonextern void edac_device_remove_sysfs(struct edac_device_ctl_info *edac_dev); 437c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson 44e27e3dac651771fe3250f6305dee277bce29fc5dDouglas Thompson/* edac core workqueue: single CPU mode */ 45e27e3dac651771fe3250f6305dee277bce29fc5dDouglas Thompsonextern struct workqueue_struct *edac_workqueue; 4681d87cb13e367bb804bf44889ae0de7369705d6cDave Jiangextern void edac_device_workq_setup(struct edac_device_ctl_info *edac_dev, 47079708b9173595bf74b31b14c36e946359ae6c7eDouglas Thompson unsigned msec); 4881d87cb13e367bb804bf44889ae0de7369705d6cDave Jiangextern void edac_device_workq_teardown(struct edac_device_ctl_info *edac_dev); 49079708b9173595bf74b31b14c36e946359ae6c7eDouglas Thompsonextern void edac_device_reset_delay_period(struct edac_device_ctl_info 50079708b9173595bf74b31b14c36e946359ae6c7eDouglas Thompson *edac_dev, unsigned long value); 51bce19683c17485b584b62b984d6dcf5332181588Doug Thompsonextern void edac_mc_reset_delay_period(int value); 52bce19683c17485b584b62b984d6dcf5332181588Doug Thompson 537391c6dcab3094610cb99bbd559beaa282582eacDouglas Thompsonextern void *edac_align_ptr(void *ptr, unsigned size); 547c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson 557c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson/* 567c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson * EDAC PCI functions 577c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson */ 587c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson#ifdef CONFIG_PCI 597c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompsonextern void edac_pci_do_parity_check(void); 607c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompsonextern void edac_pci_clear_parity_errors(void); 617c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompsonextern int edac_sysfs_pci_setup(void); 627c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompsonextern void edac_sysfs_pci_teardown(void); 634de78c6877ec21142582ac19453c2d453d1ea298Dave Jiangextern int edac_pci_get_check_errors(void); 644de78c6877ec21142582ac19453c2d453d1ea298Dave Jiangextern int edac_pci_get_poll_msec(void); 65d4c1465b7de9686c4c5aa533b15c09ab014aab3aDoug Thompsonextern void edac_pci_remove_sysfs(struct edac_pci_ctl_info *pci); 66d4c1465b7de9686c4c5aa533b15c09ab014aab3aDoug Thompsonextern void edac_pci_handle_pe(struct edac_pci_ctl_info *pci, const char *msg); 67d4c1465b7de9686c4c5aa533b15c09ab014aab3aDoug Thompsonextern void edac_pci_handle_npe(struct edac_pci_ctl_info *pci, 68d4c1465b7de9686c4c5aa533b15c09ab014aab3aDoug Thompson const char *msg); 69079708b9173595bf74b31b14c36e946359ae6c7eDouglas Thompson#else /* CONFIG_PCI */ 707c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson/* pre-process these away */ 717c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson#define edac_pci_do_parity_check() 727c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson#define edac_pci_clear_parity_errors() 737c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson#define edac_sysfs_pci_setup() (0) 747c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson#define edac_sysfs_pci_teardown() 754de78c6877ec21142582ac19453c2d453d1ea298Dave Jiang#define edac_pci_get_check_errors() 764de78c6877ec21142582ac19453c2d453d1ea298Dave Jiang#define edac_pci_get_poll_msec() 77d4c1465b7de9686c4c5aa533b15c09ab014aab3aDoug Thompson#define edac_pci_handle_pe() 78d4c1465b7de9686c4c5aa533b15c09ab014aab3aDoug Thompson#define edac_pci_handle_npe() 79079708b9173595bf74b31b14c36e946359ae6c7eDouglas Thompson#endif /* CONFIG_PCI */ 807c9281d76c1c0b130f79d5fc021084e9749959d4Douglas Thompson 81079708b9173595bf74b31b14c36e946359ae6c7eDouglas Thompson#endif /* __EDAC_MODULE_H__ */ 82