123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- Functions Exported by fmc.ko
- ****************************
- The FMC core exports the usual 4 functions that are needed for a bus to
- work, and a few more:
- int fmc_driver_register(struct fmc_driver *drv);
- void fmc_driver_unregister(struct fmc_driver *drv);
- int fmc_device_register(struct fmc_device *fmc);
- void fmc_device_unregister(struct fmc_device *fmc);
- int fmc_device_register_n(struct fmc_device **fmc, int n);
- void fmc_device_unregister_n(struct fmc_device **fmc, int n);
- uint32_t fmc_readl(struct fmc_device *fmc, int offset);
- void fmc_writel(struct fmc_device *fmc, uint32_t val, int off);
- void *fmc_get_drvdata(struct fmc_device *fmc);
- void fmc_set_drvdata(struct fmc_device *fmc, void *data);
- int fmc_reprogram(struct fmc_device *f, struct fmc_driver *d, char *gw,
- int sdb_entry);
- The data structure that describe a device is detailed in *note FMC
- Device::, the one that describes a driver is detailed in *note FMC
- Driver::. Please note that structures of type fmc_device must be
- allocated by the caller, but must not be released after unregistering.
- The fmc-bus itself takes care of releasing the structure when their use
- count reaches zero - actually, the device model does that in lieu of us.
- The functions to register and unregister n devices are meant to be used
- by carriers that host more than one mezzanine. The devices must all be
- registered at the same time because if the FPGA is reprogrammed, all
- devices in the array are affected. Usually, the driver matching the
- first device will reprogram the FPGA, so other devices must know they
- are already driven by a reprogrammed FPGA.
- If a carrier hosts slots that are driven by different FPGA devices, it
- should register as a group only mezzanines that are driven by the same
- FPGA, for the reason outlined above.
- Finally, the fmc_reprogram function calls the reprogram method (see
- *note The API Offered by Carriers:: and also scans the memory area for
- an SDB tree. You can pass -1 as sdb_entry to disable such scan.
- Otherwise, the function fails if no tree is found at the specified
- entry point. The function is meant to factorize common code, and by
- the time you read this it is already used by the spec-sw and fine-delay
- modules.
|