blob: b01950f76e20d034f12b56b3e6b67b59e814ba0d [file] [edit]
FPGA Manager DebugFS interface for FPGA reprogramming.
Alan Tull 2016
Each FPGA gets its own directory such as <debugfs>/fpga_manager/fpga0 and
three files:
- [RW] flags: flags as defined in fpga-mgr.h. For example:
$ echo 1 > /sys/kernel/debug/fpga_manager/fpga0/flags
- [RW] config_complete_timeout_us: time out in microseconds to wait for
FPGA to go to operating state after
region has been programmed.
$ echo 4 > /sys/kernel/debug/fpga_manager/fpga0/config_complete_timeout_us
- [RW] firmware_name: Name of an FPGA image firmware file. Writing initiates
a complete FPGA programming cycle. Note that the image
file must be in a directory on the firmware search path
such as /lib/firmware.
$ echo image.rbf > /sys/kernel/debug/fpga_manager/fpga0/firmware_name
- [WO] image: Raw FPGA image data. Writing the FPGA image data will
initiate a complete FPGA programming cycle. Data must
be written in one chunk, for example:
$ dd bs=10M if=./image.rbf of=/sys/kernel/debug/fpga_manager/fpga0/image
(where image.rbf < 10M)
To program the FPGA, write the flags (if needed), then use either the
firmware_name or image file to program.
This interface does not handle bridges or loading/unloading of soft IP device
drivers. This makes it really easy to mess things up by doing things like
reprogramming the hardware out from under a driver or reprogramming while a
bridge is enabled, causing gunk to go out on a cpu bus. It should go without
saying that this interface is for debug only. Not intended for production use.