drivers/fmc: change registration prototype
PATCH v3 4/5 drivers/fmc: change registration prototype
From: Federico Vaga <[email protected]>
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 Federico Vaga <[email protected]>
Tested-by Pat Riehecky <[email protected]>
---
V3 (Alessandro): fixed From line in patch, added alessandro's acked-by
V2 (Pat): added Tested-by and incorrect From line
V1 (Pat): picked from ohwr.org repo, where most fmc users pick from.
drivers/fmc/fmc-core.c | 15 ++++++++++++++- include/linux/fmc.h | 13 +++++++++++-- 2 files changed, 25 insertions(+), 3 deletions(-)
drivers/fmc/fmc-core.c +14 -1
@@ -199,7 +199,8 @@ EXPORT_SYMBOL(fmc_driver_unregister);* When a device set is registered, all eeproms must be read * 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;uint32_t device_id;
@@ -313,8 +314,20 @@ int fmc_device_register_n(struct fmc_device **devs, int n)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); +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) {return fmc_device_register_n (&fmc,1 );
include/linux/fmc.h +11 -2
@@ -220,14 +220,23 @@ static inline void fmc_set_drvdata(struct fmc_device *fmc, void *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 void fmc_driver_unregister (struct fmc_driver *drv);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); -/* 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_gw (struct fmc_device **devs,int n, +struct fmc_gateware *gw);extern void fmc_device_unregister_n (struct fmc_device **devs,int n);/* Internal cross-calls between files; not exported to other modules */
Signature · 1 line
2.1.4