![Alan Tull](/assets/img/avatar_default.png)
fpga-mgr has three methods for programming FPGAs, depending on whether the image is in a scatter gather list, a contiguous buffer, or a firmware file. This makes it difficult to write upper layers as the caller has to assume whether the FPGA image is in a sg table, as a single buffer, or a firmware file. This commit moves these parameters to struct fpga_image_info and adds a single function for programming fpgas. New functions: * fpga_mgr_load - given fpga manager and struct fpga_image_info, program the fpga. * fpga_image_info_alloc - alloc a struct fpga_image_info. * fpga_image_info_free - free a struct fpga_image_info. These three functions are unexported: * fpga_mgr_buf_load_sg * fpga_mgr_buf_load * fpga_mgr_firmware_load Also use devm_kstrdup to copy firmware_name so we aren't making assumptions about where it comes from when allocing/freeing the struct fpga_image_info. API documentation has been updated and a new document for FPGA region has been added. Signed-off-by: Alan Tull <atull@kernel.org> Acked-by: Moritz Fischer <mdf@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
24 lines
1 KiB
Plaintext
24 lines
1 KiB
Plaintext
Linux kernel FPGA support
|
|
|
|
Alan Tull 2017
|
|
|
|
The main point of this project has been to separate the out the upper layers
|
|
that know when to reprogram a FPGA from the lower layers that know how to
|
|
reprogram a specific FPGA device. The intention is to make this manufacturer
|
|
agnostic, understanding that of course the FPGA images are very device specific
|
|
themselves.
|
|
|
|
The framework in the kernel includes:
|
|
* low level FPGA manager drivers that know how to program a specific device
|
|
* the fpga-mgr framework they are registered with
|
|
* low level FPGA bridge drivers for hard/soft bridges which are intended to
|
|
be disable during FPGA programming
|
|
* the fpga-bridge framework they are registered with
|
|
* the fpga-region framework which associates and controls managers and bridges
|
|
as reconfigurable regions
|
|
* the of-fpga-region support for reprogramming FPGAs when device tree overlays
|
|
are applied.
|
|
|
|
I would encourage you the user to add code that creates FPGA regions rather
|
|
that trying to control managers and bridges separately.
|