Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / drivers / staging / gs_fpgaboot / README
diff --git a/kernel/drivers/staging/gs_fpgaboot/README b/kernel/drivers/staging/gs_fpgaboot/README
new file mode 100644 (file)
index 0000000..8d793c1
--- /dev/null
@@ -0,0 +1,70 @@
+==============================================================================
+Linux Driver Source for Xilinx FPGA firmware download
+==============================================================================
+
+
+TABLE OF CONTENTS.
+
+1.  SUMMARY
+2.  BACKGROUND
+3.  DESIGN
+4.  HOW TO USE
+5.  REFERENCE
+
+1. SUMMARY
+
+       - Download Xilinx FPGA firmware
+       - This module downloads Xilinx FPGA firmware using gpio pins.
+
+2. BACKGROUND
+
+       An FPGA (Field Programmable Gate Array) is a programmable hardware that is
+       used in various applications. Hardware design needs to programmed through
+       a dedicated device or CPU assisted way (serial or parallel).
+       This driver provides a way to download FPGA firmware.
+
+3. DESIGN
+
+       - load Xilinx FPGA bitstream format[1] firmware image file using
+         kernel firmware framework, request_firmware()
+       - program the Xilinx FPGA using SelectMAP (parallel) mode [2]
+       - FPGA prgram is done by gpio based bit-banging, as an example
+       - platform independent file: gs_fpgaboot.c
+       - platform dependent file: io.c
+
+4. HOW TO USE
+
+       $ insmod gs_fpga.ko file="xlinx_fpga_top_bitstream.bit"
+       $ rmmod gs_fpga
+
+5. USE CASE (from a mailing list discussion with Greg)
+
+       a. As a FPGA development support tool,
+       During FPGA firmware development, you need to download a new FPGA
+       image frequently.
+       You would do that with a dedicated JTAG, which usually a limited
+       resource in the lab.
+       However, if you use my driver, you don't have to have a dedicated JTAG.
+       This is a real gain :)
+
+       b. For the FPGA that runs without config after the download, which
+       doesn't talk to any of Linux interfaces (such as PCIE).
+
+       We download FPGA firmware from user triggered or some other way, and that's it.
+       Since that FPGA runs on its own, it doesn't require a linux driver
+       after the download.
+
+       c. For the FPGA that requires config after the download, which talk to
+       any of linux interfaces (such as PCIE)
+
+       Then, this type of FPGA config can be put into device tree and have a
+       separate driver (pcie or others), then THAT driver calls my driver to
+       download FPGA firmware during the Linux boot, the take over the device
+       through the interface.
+
+6. REFERENCE
+
+       1. Xilinx APP NOTE XAPP583:
+         http://www.xilinx.com/support/documentation/application_notes/xapp583-fpga-configuration.pdf
+       2. bitstream file info:
+         http://home.earthlink.net/~davesullins/software/bitinfo.html