Commit 8fda123d authored by Federico Vaga's avatar Federico Vaga

kernel: carrier can program FPGA on registration

Signed-off-by: Federico Vaga's avatarFederico Vaga <federico.vaga@cern.ch>
parent 8b131b4e
...@@ -280,6 +280,21 @@ int fmc_device_register_n_gw(struct fmc_device **devs, int n, ...@@ -280,6 +280,21 @@ int fmc_device_register_n_gw(struct fmc_device **devs, int n,
else else
dev_set_name(&fmc->dev, "%s-%04x", fmc->mezzanine_name, dev_set_name(&fmc->dev, "%s-%04x", fmc->mezzanine_name,
device_id); device_id);
if (gw) {
/*
* The carrier already know the bitstream to load
* for this set of FMC mezzanines.
*/
ret = fmc->op->reprogram_raw(fmc, NULL,
gw->bitstream, gw->len);
if (ret) {
dev_warn(fmc->hwdev,
"Invalid gateware for FMC mezzanine\n");
goto out;
}
}
ret = device_add(&fmc->dev); ret = device_add(&fmc->dev);
if (ret < 0) { if (ret < 0) {
dev_err(fmc->hwdev, "Slot %i: Failed in registering " dev_err(fmc->hwdev, "Slot %i: Failed in registering "
...@@ -300,9 +315,6 @@ int fmc_device_register_n_gw(struct fmc_device **devs, int n, ...@@ -300,9 +315,6 @@ int fmc_device_register_n_gw(struct fmc_device **devs, int n,
out1: out1:
device_del(&fmc->dev); device_del(&fmc->dev);
out: out:
fmc_free_id_info(fmc);
put_device(&fmc->dev);
kfree(devarray); kfree(devarray);
for (i--; i >= 0; i--) { for (i--; i >= 0; i--) {
fmc_debug_exit(devs[i]); fmc_debug_exit(devs[i]);
......
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