From: Alan Tull <atull@kernel.org>
To: Moritz Fischer <moritz.fischer@ettus.com>
Cc: Alan Tull <atull@kernel.org>,
linux-kernel@vger.kernel.org, linux-fpga@vger.kernel.org
Subject: [RFC 1/5] doc: fpga: add document for the fdt FPGA header
Date: Mon, 24 Jul 2017 14:49:11 -0500 [thread overview]
Message-ID: <1500925755-5727-2-git-send-email-atull@kernel.org> (raw)
In-Reply-To: <1500925755-5727-1-git-send-email-atull@kernel.org>
Add a document for the open source fdt FPGA header.
Signed-off-by: Alan Tull <atull@kernel.org>
---
| 103 +++++++++++++++++++++++++++++++++++++
1 file changed, 103 insertions(+)
create mode 100644 Documentation/fpga/fpga-header.txt
--git a/Documentation/fpga/fpga-header.txt b/Documentation/fpga/fpga-header.txt
new file mode 100644
index 0000000..0045f63
--- /dev/null
+++ b/Documentation/fpga/fpga-header.txt
@@ -0,0 +1,103 @@
+Open source FPGA image headers
+
+Alan Tull 2017
+
+CONTENTS
+- Introduction
+- Format
+- Example
+- Using mkimage
+
+Introduction
+============
+
+Open source FPGA image headers have been added to allow FPGA image specific
+information to be included with the image. The header format is a simplified
+form of u-boot FIT images and can be expanded as real use cases are raised.
+As all the FPGA kernel frameworks are intended to be vendor agnostic, so also
+is the header. As libfdt's licensing is permissive, this header is also
+intended to be useful for OS's other than Linux such that the FPGA image need
+not be rebuilt for use under another OS.
+
+Format
+======
+
+The format of the header is a reduced FIT-like header, so it can be built
+using mkimage. The header is a FDT followed by two optional binary data
+sections: a Device Tree overlay and a raw FPGA image. When the image is
+applied to a FPGA region, first the FPGA is programmed (if the raw image is
+present) and then the DT overlay, if present, is applied. If the DT overlay
+is eliminated, this header format may be used on systems running without
+Device Tree.
+
+Example
+=======
+
+/dts-v1/;
+
+/ {
+ description = "Program FPGA image and apply DT overlay";
+ #address-cells = <1>;
+
+ images {
+ fdt@1 {
+ description = "Flattened Device Tree blob";
+ type = "flat_dt";
+ data = /incbin/("/some/path/persona0.dtb");
+ };
+ fpga@1 {
+ description = "FPGA image";
+ type = "fpga";
+ data = /incbin/("/some/path/persona0.rbf");
+ partial-fpga-config;
+ region-unfreeze-timeout-us = <4>;
+ region-freeze-timeout-us = <4>;
+ config-complete-timeout-us = <100>;
+ };
+ };
+};
+
+This format is compatible with FIT, but leaves out a few things that were not
+needed. The compression property is left out (assuming none). The
+'configurations' section is left out since there is only one possible
+configuration presented here. If we see an actual use case for
+configurations in the future, we could expand to support it seamlessly.
+
+Any FPGA image info must be included in the FPGA image section. FPGA image
+info properties are defined in the fpga-region.txt Device Tree binding
+document at ../devicetree/bindings/fpga/fpga-region.txt.
+
+The FPGA image section has to come last.
+
+Using mkimage
+=============
+
+If the above example is named persona0.its, it can be compiled by using
+mkimage as follows. The output file is persona0.fit.
+
+ mkimage -f persona0.its persona0.fit
+
+Applying the image
+==================
+
+A sysfs attribute 'firmware_name' is added for each FPGA region.
+
+To apply the image:
+
+ echo persona.fit > /sys/class/fpga_region/region0/firmware_name
+
+To free up the region for reprogramming:
+
+ echo > /sys/class/fpga_region/region0/firmware_name
+
+FPGA Region API Function
+========================
+
+An API for FPGA region has been added:
+
+ int fpga_region_fdt_image_apply(struct fpga_region *region)
+
+This function will parse the header of a FPGA image and do the programming
+and apply the DT overlay. The FPGA image is presented as a scatter gather
+table, a contiguous buffer, or name of a firmware file in the region's FPGA
+image info (region->info).
--
2.7.4
next prev parent reply other threads:[~2017-07-24 19:49 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-24 19:49 [RFC 0/5] Open source FPGA image header Alan Tull
2017-07-24 19:49 ` Alan Tull [this message]
2017-07-24 19:49 ` [RFC 2/5] doc: fpga: add sysfs document for fpga region Alan Tull
2017-07-24 19:49 ` [RFC 3/5] fpga: add dev to fpga_image_info Alan Tull
2017-07-24 19:49 ` [RFC 4/5] fpga-region: new function fpga_region_free Alan Tull
2017-07-24 19:49 ` [RFC 5/5] fpga-region support for fdt headers on fpga images Alan Tull
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1500925755-5727-2-git-send-email-atull@kernel.org \
--to=atull@kernel.org \
--cc=linux-fpga@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=moritz.fischer@ettus.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).