|
@@ -0,0 +1,54 @@
|
|
|
+Introduction
|
|
|
+============
|
|
|
+
|
|
|
+The FPGA subsystem supports reprogramming FPGAs dynamically under
|
|
|
+Linux. Some of the core intentions of the FPGA subsystems are:
|
|
|
+
|
|
|
+* The FPGA subsystem is vendor agnostic.
|
|
|
+
|
|
|
+* The FPGA subsystem separates upper layers (userspace interfaces and
|
|
|
+ enumeration) from lower layers that know how to program a specific
|
|
|
+ FPGA.
|
|
|
+
|
|
|
+* Code should not be shared between upper and lower layers. This
|
|
|
+ should go without saying. If that seems necessary, there's probably
|
|
|
+ framework functionality that that can be added that will benefit
|
|
|
+ other users. Write the linux-fpga mailing list and maintainers and
|
|
|
+ seek out a solution that expands the framework for broad reuse.
|
|
|
+
|
|
|
+* Generally, when adding code, think of the future. Plan for re-use.
|
|
|
+
|
|
|
+The framework in the kernel is divided into:
|
|
|
+
|
|
|
+FPGA Manager
|
|
|
+------------
|
|
|
+
|
|
|
+If you are adding a new FPGA or a new method of programming a FPGA,
|
|
|
+this is the subsystem for you. Low level FPGA manager drivers contain
|
|
|
+the knowledge of how to program a specific device. This subsystem
|
|
|
+includes the framework in fpga-mgr.c and the low level drivers that
|
|
|
+are registered with it.
|
|
|
+
|
|
|
+FPGA Bridge
|
|
|
+-----------
|
|
|
+
|
|
|
+FPGA Bridges prevent spurious signals from going out of a FPGA or a
|
|
|
+region of a FPGA during programming. They are disabled before
|
|
|
+programming begins and re-enabled afterwards. An FPGA bridge may be
|
|
|
+actual hard hardware that gates a bus to a cpu or a soft ("freeze")
|
|
|
+bridge in FPGA fabric that surrounds a partial reconfiguration region
|
|
|
+of an FPGA. This subsystem includes fpga-bridge.c and the low level
|
|
|
+drivers that are registered with it.
|
|
|
+
|
|
|
+FPGA Region
|
|
|
+-----------
|
|
|
+
|
|
|
+If you are adding a new interface to the FPGA framework, add it on top
|
|
|
+of a FPGA region to allow the most reuse of your interface.
|
|
|
+
|
|
|
+The FPGA Region framework (fpga-region.c) associates managers and
|
|
|
+bridges as reconfigurable regions. A region may refer to the whole
|
|
|
+FPGA in full reconfiguration or to a partial reconfiguration region.
|
|
|
+
|
|
|
+The Device Tree FPGA Region support (of-fpga-region.c) handles
|
|
|
+reprogramming FPGAs when device tree overlays are applied.
|