diff mbox series

[v5,4/4] fpga: use reimage ops in fpga_mgr_load()

Message ID 20210625195849.837976-6-trix@redhat.com (mailing list archive)
State New
Headers show
Series generalize fpga_mgr_load | expand

Commit Message

Tom Rix June 25, 2021, 7:58 p.m. UTC
From: Tom Rix <trix@redhat.com>

If the fpga_image_info flags FPGA_MGR_REIMAGE bit is set
swap out the reconfig ops for the reimage ops and do
the load.

Signed-off-by: Tom Rix <trix@redhat.com>
---
 drivers/fpga/fpga-mgr.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Xu Yilun June 28, 2021, 7:03 a.m. UTC | #1
On Fri, Jun 25, 2021 at 12:58:49PM -0700, trix@redhat.com wrote:
> From: Tom Rix <trix@redhat.com>
> 
> If the fpga_image_info flags FPGA_MGR_REIMAGE bit is set
> swap out the reconfig ops for the reimage ops and do
> the load.
> 
> Signed-off-by: Tom Rix <trix@redhat.com>
> ---
>  drivers/fpga/fpga-mgr.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/fpga/fpga-mgr.c b/drivers/fpga/fpga-mgr.c
> index c8a6bfa037933..5e53a0508087a 100644
> --- a/drivers/fpga/fpga-mgr.c
> +++ b/drivers/fpga/fpga-mgr.c
> @@ -419,6 +419,9 @@ int fpga_mgr_load(struct fpga_manager *mgr, struct fpga_image_info *info)
>  {
>  	const struct fpga_manager_update_ops *uops = &mgr->mops->reconfig;
>  
> +	if (info->flags & FPGA_MGR_REIMAGE)
> +		uops = &mgr->mops->reimage;
> +

So seems there is no big difference on processing 'reconfig' & 'reimage'
in FPGA mgr framework. We may not have to introduce 2 sets of ops in
fpga_mgr.

Could we just reuse the fpga_mgr_ops for reimage? The
fpga_mgr_ops.write_init() will pass the fpga_image_info to device driver,
and driver could be aware of the REIMAGE flag. Just like the handling of
other flags in fpga_image_info.

Thanks,
Yilun

>  	if (info->sgt)
>  		return fpga_mgr_buf_load_sg(mgr, info, info->sgt, uops);
>  	if (info->buf && info->count)
> -- 
> 2.26.3
diff mbox series

Patch

diff --git a/drivers/fpga/fpga-mgr.c b/drivers/fpga/fpga-mgr.c
index c8a6bfa037933..5e53a0508087a 100644
--- a/drivers/fpga/fpga-mgr.c
+++ b/drivers/fpga/fpga-mgr.c
@@ -419,6 +419,9 @@  int fpga_mgr_load(struct fpga_manager *mgr, struct fpga_image_info *info)
 {
 	const struct fpga_manager_update_ops *uops = &mgr->mops->reconfig;
 
+	if (info->flags & FPGA_MGR_REIMAGE)
+		uops = &mgr->mops->reimage;
+
 	if (info->sgt)
 		return fpga_mgr_buf_load_sg(mgr, info, info->sgt, uops);
 	if (info->buf && info->count)