diff options
Diffstat (limited to 'drivers/firmware/zynqmp-fpga.c')
-rw-r--r-- | drivers/firmware/zynqmp-fpga.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/drivers/firmware/zynqmp-fpga.c b/drivers/firmware/zynqmp-fpga.c index a76600d4c9..63d7398fd4 100644 --- a/drivers/firmware/zynqmp-fpga.c +++ b/drivers/firmware/zynqmp-fpga.c @@ -252,13 +252,7 @@ static int fpgamgr_program_finish(struct firmware_handler *fh) body_length / sizeof(u32)); else memcpy((u32 *)buf_aligned, body, body_length); - - if (mgr->features & ZYNQMP_PM_FEATURE_SIZE_NOT_NEEDED) { - buf_size = body_length; - } else { - buf_aligned[body_length / sizeof(*buf_aligned)] = body_length; - buf_size = addr + body_length; - } + buf_aligned[body_length / sizeof(*buf_aligned)] = body_length; addr = dma_map_single(&mgr->dev, buf_aligned, body_length + sizeof(buf_size), DMA_TO_DEVICE); @@ -267,6 +261,11 @@ static int fpgamgr_program_finish(struct firmware_handler *fh) goto err_free_dma; } + if (mgr->features & ZYNQMP_PM_FEATURE_SIZE_NOT_NEEDED) + buf_size = body_length; + else + buf_size = addr + body_length; + status = mgr->eemi_ops->fpga_load((u64)addr, buf_size, flags); dma_unmap_single(&mgr->dev, addr, body_length + sizeof(buf_size), DMA_TO_DEVICE); |