Back to home page

OSCL-LXR

 
 

    


0001 Xilinx Slave Serial SPI FPGA Manager
0002 
0003 Xilinx Spartan-6 and 7 Series FPGAs support a method of loading the
0004 bitstream over what is referred to as "slave serial" interface.
0005 The slave serial link is not technically SPI, and might require extra
0006 circuits in order to play nicely with other SPI slaves on the same bus.
0007 
0008 See:
0009 - https://www.xilinx.com/support/documentation/user_guides/ug380.pdf
0010 - https://www.xilinx.com/support/documentation/user_guides/ug470_7Series_Config.pdf
0011 - https://www.xilinx.com/support/documentation/application_notes/xapp583-fpga-configuration.pdf
0012 
0013 Required properties:
0014 - compatible: should contain "xlnx,fpga-slave-serial"
0015 - reg: spi chip select of the FPGA
0016 - prog_b-gpios: config pin (referred to as PROGRAM_B in the manual)
0017 - done-gpios: config status pin (referred to as DONE in the manual)
0018 
0019 Optional properties:
0020 - init-b-gpios: initialization status and configuration error pin
0021                 (referred to as INIT_B in the manual)
0022 
0023 Example for full FPGA configuration:
0024 
0025         fpga-region0 {
0026                 compatible = "fpga-region";
0027                 fpga-mgr = <&fpga_mgr_spi>;
0028                 #address-cells = <0x1>;
0029                 #size-cells = <0x1>;
0030         };
0031 
0032         spi1: spi@10680 {
0033                 compatible = "marvell,armada-xp-spi", "marvell,orion-spi";
0034                 pinctrl-0 = <&spi0_pins>;
0035                 pinctrl-names = "default";
0036                 #address-cells = <1>;
0037                 #size-cells = <0>;
0038                 cell-index = <1>;
0039                 interrupts = <92>;
0040                 clocks = <&coreclk 0>;
0041 
0042                 fpga_mgr_spi: fpga-mgr@0 {
0043                         compatible = "xlnx,fpga-slave-serial";
0044                         spi-max-frequency = <60000000>;
0045                         spi-cpha;
0046                         reg = <0>;
0047                         prog_b-gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
0048                         init-b-gpios = <&gpio0 28 GPIO_ACTIVE_LOW>;
0049                         done-gpios = <&gpio0 9 GPIO_ACTIVE_HIGH>;
0050                 };
0051         };