Commit fdaf0b35 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

edac: move documentation from edac_pci*.c to edac_pci.h

Several functions are documented at edac_pci.c and edac_pci_sysfs.c.

As we'll be including edac_pci.h at drivers-api book, move those,
in order for the kernel-doc markups be part of the API
documentation book.

As several of those kernel-doc macros are not in the right format,
fix them.
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent 5336f754
...@@ -28,13 +28,6 @@ static DEFINE_MUTEX(edac_pci_ctls_mutex); ...@@ -28,13 +28,6 @@ static DEFINE_MUTEX(edac_pci_ctls_mutex);
static LIST_HEAD(edac_pci_list); static LIST_HEAD(edac_pci_list);
static atomic_t pci_indexes = ATOMIC_INIT(0); static atomic_t pci_indexes = ATOMIC_INIT(0);
/*
* edac_pci_alloc_ctl_info
*
* The alloc() function for the 'edac_pci' control info
* structure. The chip driver will allocate one of these for each
* edac_pci it is going to control/register with the EDAC CORE.
*/
struct edac_pci_ctl_info *edac_pci_alloc_ctl_info(unsigned int sz_pvt, struct edac_pci_ctl_info *edac_pci_alloc_ctl_info(unsigned int sz_pvt,
const char *edac_pci_name) const char *edac_pci_name)
{ {
...@@ -65,16 +58,6 @@ struct edac_pci_ctl_info *edac_pci_alloc_ctl_info(unsigned int sz_pvt, ...@@ -65,16 +58,6 @@ struct edac_pci_ctl_info *edac_pci_alloc_ctl_info(unsigned int sz_pvt,
} }
EXPORT_SYMBOL_GPL(edac_pci_alloc_ctl_info); EXPORT_SYMBOL_GPL(edac_pci_alloc_ctl_info);
/*
* edac_pci_free_ctl_info()
*
* Last action on the pci control structure.
*
* call the remove sysfs information, which will unregister
* this control struct's kobj. When that kobj's ref count
* goes to zero, its release function will be call and then
* kfree() the memory.
*/
void edac_pci_free_ctl_info(struct edac_pci_ctl_info *pci) void edac_pci_free_ctl_info(struct edac_pci_ctl_info *pci)
{ {
edac_dbg(1, "\n"); edac_dbg(1, "\n");
...@@ -212,31 +195,12 @@ static void edac_pci_workq_function(struct work_struct *work_req) ...@@ -212,31 +195,12 @@ static void edac_pci_workq_function(struct work_struct *work_req)
mutex_unlock(&edac_pci_ctls_mutex); mutex_unlock(&edac_pci_ctls_mutex);
} }
/*
* edac_pci_alloc_index: Allocate a unique PCI index number
*
* Return:
* allocated index number
*
*/
int edac_pci_alloc_index(void) int edac_pci_alloc_index(void)
{ {
return atomic_inc_return(&pci_indexes) - 1; return atomic_inc_return(&pci_indexes) - 1;
} }
EXPORT_SYMBOL_GPL(edac_pci_alloc_index); EXPORT_SYMBOL_GPL(edac_pci_alloc_index);
/*
* edac_pci_add_device: Insert the 'edac_dev' structure into the
* edac_pci global list and create sysfs entries associated with
* edac_pci structure.
* @pci: pointer to the edac_device structure to be added to the list
* @edac_idx: A unique numeric identifier to be assigned to the
* 'edac_pci' structure.
*
* Return:
* 0 Success
* !0 Failure
*/
int edac_pci_add_device(struct edac_pci_ctl_info *pci, int edac_idx) int edac_pci_add_device(struct edac_pci_ctl_info *pci, int edac_idx)
{ {
edac_dbg(0, "\n"); edac_dbg(0, "\n");
...@@ -282,19 +246,6 @@ int edac_pci_add_device(struct edac_pci_ctl_info *pci, int edac_idx) ...@@ -282,19 +246,6 @@ int edac_pci_add_device(struct edac_pci_ctl_info *pci, int edac_idx)
} }
EXPORT_SYMBOL_GPL(edac_pci_add_device); EXPORT_SYMBOL_GPL(edac_pci_add_device);
/*
* edac_pci_del_device()
* Remove sysfs entries for specified edac_pci structure and
* then remove edac_pci structure from global list
*
* @dev:
* Pointer to 'struct device' representing edac_pci structure
* to remove
*
* Return:
* Pointer to removed edac_pci structure,
* or NULL if device not found
*/
struct edac_pci_ctl_info *edac_pci_del_device(struct device *dev) struct edac_pci_ctl_info *edac_pci_del_device(struct device *dev)
{ {
struct edac_pci_ctl_info *pci; struct edac_pci_ctl_info *pci;
...@@ -348,17 +299,6 @@ struct edac_pci_gen_data { ...@@ -348,17 +299,6 @@ struct edac_pci_gen_data {
int edac_idx; int edac_idx;
}; };
/*
* edac_pci_create_generic_ctl
*
* A generic constructor for a PCI parity polling device
* Some systems have more than one domain of PCI busses.
* For systems with one domain, then this API will
* provide for a generic poller.
*
* This routine calls the edac_pci_alloc_ctl_info() for
* the generic device, with default values
*/
struct edac_pci_ctl_info *edac_pci_create_generic_ctl(struct device *dev, struct edac_pci_ctl_info *edac_pci_create_generic_ctl(struct device *dev,
const char *mod_name) const char *mod_name)
{ {
...@@ -391,11 +331,6 @@ struct edac_pci_ctl_info *edac_pci_create_generic_ctl(struct device *dev, ...@@ -391,11 +331,6 @@ struct edac_pci_ctl_info *edac_pci_create_generic_ctl(struct device *dev,
} }
EXPORT_SYMBOL_GPL(edac_pci_create_generic_ctl); EXPORT_SYMBOL_GPL(edac_pci_create_generic_ctl);
/*
* edac_pci_release_generic_ctl
*
* The release function of a generic EDAC PCI polling device
*/
void edac_pci_release_generic_ctl(struct edac_pci_ctl_info *pci) void edac_pci_release_generic_ctl(struct edac_pci_ctl_info *pci)
{ {
edac_dbg(0, "pci mod=%s\n", pci->mod_name); edac_dbg(0, "pci mod=%s\n", pci->mod_name);
......
...@@ -153,21 +153,119 @@ static inline void pci_write_bits32(struct pci_dev *pdev, int offset, ...@@ -153,21 +153,119 @@ static inline void pci_write_bits32(struct pci_dev *pdev, int offset,
#endif /* CONFIG_PCI */ #endif /* CONFIG_PCI */
/*
* edac_pci APIs
*/
/**
* edac_pci_alloc_ctl_info:
* The alloc() function for the 'edac_pci' control info
* structure.
*
* @sz_pvt: size of the private info at struct &edac_pci_ctl_info
* @edac_pci_name: name of the PCI device
*
* The chip driver will allocate one of these for each
* edac_pci it is going to control/register with the EDAC CORE.
*
* Returns: a pointer to struct &edac_pci_ctl_info on success; %NULL otherwise.
*/
extern struct edac_pci_ctl_info *edac_pci_alloc_ctl_info(unsigned int sz_pvt, extern struct edac_pci_ctl_info *edac_pci_alloc_ctl_info(unsigned int sz_pvt,
const char *edac_pci_name); const char *edac_pci_name);
/**
* edac_pci_free_ctl_info():
* Last action on the pci control structure.
*
* @pci: pointer to struct &edac_pci_ctl_info
*
* Calls the remove sysfs information, which will unregister
* this control struct's kobj. When that kobj's ref count
* goes to zero, its release function will be call and then
* kfree() the memory.
*/
extern void edac_pci_free_ctl_info(struct edac_pci_ctl_info *pci); extern void edac_pci_free_ctl_info(struct edac_pci_ctl_info *pci);
/**
* edac_pci_alloc_index: Allocate a unique PCI index number
*
* Returns:
* allocated index number
*
*/
extern int edac_pci_alloc_index(void); extern int edac_pci_alloc_index(void);
/**
* edac_pci_add_device(): Insert the 'edac_dev' structure into the
* edac_pci global list and create sysfs entries associated with
* edac_pci structure.
*
* @pci: pointer to the edac_device structure to be added to the list
* @edac_idx: A unique numeric identifier to be assigned to the
* 'edac_pci' structure.
*
* Returns:
* 0 on Success, or an error code on failure
*/
extern int edac_pci_add_device(struct edac_pci_ctl_info *pci, int edac_idx); extern int edac_pci_add_device(struct edac_pci_ctl_info *pci, int edac_idx);
/**
* edac_pci_del_device()
* Remove sysfs entries for specified edac_pci structure and
* then remove edac_pci structure from global list
*
* @dev:
* Pointer to 'struct device' representing edac_pci structure
* to remove
*
* Returns:
* Pointer to removed edac_pci structure,
* or %NULL if device not found
*/
extern struct edac_pci_ctl_info *edac_pci_del_device(struct device *dev); extern struct edac_pci_ctl_info *edac_pci_del_device(struct device *dev);
/**
* edac_pci_create_generic_ctl()
* A generic constructor for a PCI parity polling device
* Some systems have more than one domain of PCI busses.
* For systems with one domain, then this API will
* provide for a generic poller.
*
* @dev: pointer to struct &device;
* @mod_name: name of the PCI device
*
* This routine calls the edac_pci_alloc_ctl_info() for
* the generic device, with default values
*
* Returns: Pointer to struct &edac_pci_ctl_info on success, %NULL on
* failure.
*/
extern struct edac_pci_ctl_info *edac_pci_create_generic_ctl( extern struct edac_pci_ctl_info *edac_pci_create_generic_ctl(
struct device *dev, struct device *dev,
const char *mod_name); const char *mod_name);
/**
* edac_pci_release_generic_ctl
* The release function of a generic EDAC PCI polling device
*
* @pci: pointer to struct &edac_pci_ctl_info
*/
extern void edac_pci_release_generic_ctl(struct edac_pci_ctl_info *pci); extern void edac_pci_release_generic_ctl(struct edac_pci_ctl_info *pci);
/**
* edac_pci_create_sysfs
* Create the controls/attributes for the specified EDAC PCI device
*
* @pci: pointer to struct &edac_pci_ctl_info
*/
extern int edac_pci_create_sysfs(struct edac_pci_ctl_info *pci); extern int edac_pci_create_sysfs(struct edac_pci_ctl_info *pci);
/**
* edac_pci_remove_sysfs()
* remove the controls and attributes for this EDAC PCI device
*
* @pci: pointer to struct &edac_pci_ctl_info
*/
extern void edac_pci_remove_sysfs(struct edac_pci_ctl_info *pci); extern void edac_pci_remove_sysfs(struct edac_pci_ctl_info *pci);
#endif #endif
...@@ -418,12 +418,6 @@ static void edac_pci_main_kobj_teardown(void) ...@@ -418,12 +418,6 @@ static void edac_pci_main_kobj_teardown(void)
} }
} }
/*
*
* edac_pci_create_sysfs
*
* Create the controls/attributes for the specified EDAC PCI device
*/
int edac_pci_create_sysfs(struct edac_pci_ctl_info *pci) int edac_pci_create_sysfs(struct edac_pci_ctl_info *pci)
{ {
int err; int err;
...@@ -459,11 +453,6 @@ int edac_pci_create_sysfs(struct edac_pci_ctl_info *pci) ...@@ -459,11 +453,6 @@ int edac_pci_create_sysfs(struct edac_pci_ctl_info *pci)
return err; return err;
} }
/*
* edac_pci_remove_sysfs
*
* remove the controls and attributes for this EDAC PCI device
*/
void edac_pci_remove_sysfs(struct edac_pci_ctl_info *pci) void edac_pci_remove_sysfs(struct edac_pci_ctl_info *pci)
{ {
edac_dbg(0, "index=%d\n", pci->pci_idx); edac_dbg(0, "index=%d\n", pci->pci_idx);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment