Commit 15b1b0f0 authored by Federico Vaga's avatar Federico Vaga Committed by Greg Kroah-Hartman

drivers/fmc: change registration prototype

Permit use of either fmc_device_register_n or fmc_device_register_n_gw
depending on the type of device in use.
Signed-off-by: default avatarFederico Vaga <federico.vaga@cern.ch>
Tested-by: default avatarPat Riehecky <riehecky@fnal.gov>
Acked-by: default avatarAlessandro Rubini <rubini@gnudd.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 2071a3e9
...@@ -199,7 +199,8 @@ EXPORT_SYMBOL(fmc_driver_unregister); ...@@ -199,7 +199,8 @@ EXPORT_SYMBOL(fmc_driver_unregister);
* When a device set is registered, all eeproms must be read * When a device set is registered, all eeproms must be read
* and all FRUs must be parsed * and all FRUs must be parsed
*/ */
int fmc_device_register_n(struct fmc_device **devs, int n) int fmc_device_register_n_gw(struct fmc_device **devs, int n,
struct fmc_gateware *gw)
{ {
struct fmc_device *fmc, **devarray; struct fmc_device *fmc, **devarray;
uint32_t device_id; uint32_t device_id;
...@@ -313,8 +314,20 @@ int fmc_device_register_n(struct fmc_device **devs, int n) ...@@ -313,8 +314,20 @@ int fmc_device_register_n(struct fmc_device **devs, int n)
return ret; return ret;
} }
EXPORT_SYMBOL(fmc_device_register_n_gw);
int fmc_device_register_n(struct fmc_device **devs, int n)
{
return fmc_device_register_n_gw(devs, n, NULL);
}
EXPORT_SYMBOL(fmc_device_register_n); EXPORT_SYMBOL(fmc_device_register_n);
int fmc_device_register_gw(struct fmc_device *fmc, struct fmc_gateware *gw)
{
return fmc_device_register_n_gw(&fmc, 1, gw);
}
EXPORT_SYMBOL(fmc_device_register_gw);
int fmc_device_register(struct fmc_device *fmc) int fmc_device_register(struct fmc_device *fmc)
{ {
return fmc_device_register_n(&fmc, 1); return fmc_device_register_n(&fmc, 1);
......
...@@ -220,14 +220,23 @@ static inline void fmc_set_drvdata(struct fmc_device *fmc, void *data) ...@@ -220,14 +220,23 @@ static inline void fmc_set_drvdata(struct fmc_device *fmc, void *data)
dev_set_drvdata(&fmc->dev, data); dev_set_drvdata(&fmc->dev, data);
} }
/* The 4 access points */ struct fmc_gateware {
void *bitstream;
unsigned long len;
};
/* The 5 access points */
extern int fmc_driver_register(struct fmc_driver *drv); extern int fmc_driver_register(struct fmc_driver *drv);
extern void fmc_driver_unregister(struct fmc_driver *drv); extern void fmc_driver_unregister(struct fmc_driver *drv);
extern int fmc_device_register(struct fmc_device *tdev); extern int fmc_device_register(struct fmc_device *tdev);
extern int fmc_device_register_gw(struct fmc_device *tdev,
struct fmc_gateware *gw);
extern void fmc_device_unregister(struct fmc_device *tdev); extern void fmc_device_unregister(struct fmc_device *tdev);
/* Two more for device sets, all driven by the same FPGA */ /* Three more for device sets, all driven by the same FPGA */
extern int fmc_device_register_n(struct fmc_device **devs, int n); extern int fmc_device_register_n(struct fmc_device **devs, int n);
extern int fmc_device_register_n_gw(struct fmc_device **devs, int n,
struct fmc_gateware *gw);
extern void fmc_device_unregister_n(struct fmc_device **devs, int n); extern void fmc_device_unregister_n(struct fmc_device **devs, int n);
/* Internal cross-calls between files; not exported to other modules */ /* Internal cross-calls between files; not exported to other modules */
......
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