[PATCH v16 0/6] Device Tree support for FPGA programming
From: atull
Date: Fri Feb 05 2016 - 16:32:18 EST
From: Alan Tull <atull@xxxxxxxxxxxxxxxxxxxxx>
v16 Refactors the FPGA Area and FPGA Bus into single thing called an
FPGA Region and eliminates using simple-bus. I'm using the word
"region" as it's a term is used in the literature of both the major
FPGA manufacturors.
Changes for v16:
* Refactor the FPGA Area and FPGA Bus into a FPGA Region.
* Don't use simple-bus.
* FPGA Managers and FPGA Bridges are now specified by phandle using the
"fpga-mgr" and "fpga-bridges" properties. fpga-bridges can specify
more than one bridge.
* Device Tree overlays should be targeted to a FPGA Region.
* The overlays need only contain firmware-name and the child nodes.
* To model a system containing >1 partial reconfiguration region,
an overlay could add FPGA Regions to the base FPGA Regions.
* Child FPGA Regions inherit the parent FGPA Manager, but specify
their own set of bridges if needes as partial reconfig regions
will likely need their own bridges.
* All this is discussed in bindings/fpga/fpga-region.txt
One other highlight:
The little engine that runs this thing is a reconfig notifier
in fpga-region.c. This notifier that will program an FPGA if a
"firmware-name" property gets added to a fpga-region. Then
it will call of_platform_populate(). The current behavior in Linux
when a DT overlay is applied is that the reconfig notifications
go out in heirarchical order: first notifications are for the
properties, then notifications for the child nodes. So an overlay
that adds a 'firmware-name' property and some child nodes to a
fpga-region will cause FPGA programming and child node
populating in the right order.
One issue with the dynamic DT stuff:
I've tried returning and error from the notifier if FPGA programming
fails; the error is noted on the console, but the child nodes
get probed anyway.
Alan Tull (6):
fpga: add bindings document for fpga region
add sysfs document for fpga bridge class
ARM: socfpga: add bindings document for fpga bridge drivers
fpga: add fpga bridge framework
fpga: fpga-region: device tree control for FPGA
ARM: socfpga: fpga bridge driver support
Documentation/ABI/testing/sysfs-class-fpga-bridge | 11 +
.../bindings/fpga/altera-fpga2sdram-bridge.txt | 15 +
.../bindings/fpga/altera-hps2fpga-bridge.txt | 47 ++
.../devicetree/bindings/fpga/fpga-region.txt | 348 +++++++++++++++
drivers/fpga/Kconfig | 21 +
drivers/fpga/Makefile | 7 +
drivers/fpga/altera-fpga2sdram.c | 174 ++++++++
drivers/fpga/altera-hps2fpga.c | 213 +++++++++
drivers/fpga/fpga-bridge.c | 388 +++++++++++++++++
drivers/fpga/fpga-region.c | 460 ++++++++++++++++++++
include/linux/fpga/fpga-bridge.h | 55 +++
11 files changed, 1739 insertions(+)
create mode 100644 Documentation/ABI/testing/sysfs-class-fpga-bridge
create mode 100644 Documentation/devicetree/bindings/fpga/altera-fpga2sdram-bridge.txt
create mode 100644 Documentation/devicetree/bindings/fpga/altera-hps2fpga-bridge.txt
create mode 100644 Documentation/devicetree/bindings/fpga/fpga-region.txt
create mode 100644 drivers/fpga/altera-fpga2sdram.c
create mode 100644 drivers/fpga/altera-hps2fpga.c
create mode 100644 drivers/fpga/fpga-bridge.c
create mode 100644 drivers/fpga/fpga-region.c
create mode 100644 include/linux/fpga/fpga-bridge.h
--
1.7.9.5