xref: /freebsd-src/sys/contrib/device-tree/Bindings/fpga/xilinx-slave-serial.txt (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
1*c66ec88fSEmmanuel VadotXilinx Slave Serial SPI FPGA Manager
2*c66ec88fSEmmanuel Vadot
3*c66ec88fSEmmanuel VadotXilinx Spartan-6 and 7 Series FPGAs support a method of loading the
4*c66ec88fSEmmanuel Vadotbitstream over what is referred to as "slave serial" interface.
5*c66ec88fSEmmanuel VadotThe slave serial link is not technically SPI, and might require extra
6*c66ec88fSEmmanuel Vadotcircuits in order to play nicely with other SPI slaves on the same bus.
7*c66ec88fSEmmanuel Vadot
8*c66ec88fSEmmanuel VadotSee:
9*c66ec88fSEmmanuel Vadot- https://www.xilinx.com/support/documentation/user_guides/ug380.pdf
10*c66ec88fSEmmanuel Vadot- https://www.xilinx.com/support/documentation/user_guides/ug470_7Series_Config.pdf
11*c66ec88fSEmmanuel Vadot- https://www.xilinx.com/support/documentation/application_notes/xapp583-fpga-configuration.pdf
12*c66ec88fSEmmanuel Vadot
13*c66ec88fSEmmanuel VadotRequired properties:
14*c66ec88fSEmmanuel Vadot- compatible: should contain "xlnx,fpga-slave-serial"
15*c66ec88fSEmmanuel Vadot- reg: spi chip select of the FPGA
16*c66ec88fSEmmanuel Vadot- prog_b-gpios: config pin (referred to as PROGRAM_B in the manual)
17*c66ec88fSEmmanuel Vadot- done-gpios: config status pin (referred to as DONE in the manual)
18*c66ec88fSEmmanuel Vadot
19*c66ec88fSEmmanuel VadotOptional properties:
20*c66ec88fSEmmanuel Vadot- init-b-gpios: initialization status and configuration error pin
21*c66ec88fSEmmanuel Vadot                (referred to as INIT_B in the manual)
22*c66ec88fSEmmanuel Vadot
23*c66ec88fSEmmanuel VadotExample for full FPGA configuration:
24*c66ec88fSEmmanuel Vadot
25*c66ec88fSEmmanuel Vadot	fpga-region0 {
26*c66ec88fSEmmanuel Vadot		compatible = "fpga-region";
27*c66ec88fSEmmanuel Vadot		fpga-mgr = <&fpga_mgr_spi>;
28*c66ec88fSEmmanuel Vadot		#address-cells = <0x1>;
29*c66ec88fSEmmanuel Vadot		#size-cells = <0x1>;
30*c66ec88fSEmmanuel Vadot	};
31*c66ec88fSEmmanuel Vadot
32*c66ec88fSEmmanuel Vadot	spi1: spi@10680 {
33*c66ec88fSEmmanuel Vadot		compatible = "marvell,armada-xp-spi", "marvell,orion-spi";
34*c66ec88fSEmmanuel Vadot		pinctrl-0 = <&spi0_pins>;
35*c66ec88fSEmmanuel Vadot		pinctrl-names = "default";
36*c66ec88fSEmmanuel Vadot		#address-cells = <1>;
37*c66ec88fSEmmanuel Vadot		#size-cells = <0>;
38*c66ec88fSEmmanuel Vadot		cell-index = <1>;
39*c66ec88fSEmmanuel Vadot		interrupts = <92>;
40*c66ec88fSEmmanuel Vadot		clocks = <&coreclk 0>;
41*c66ec88fSEmmanuel Vadot
42*c66ec88fSEmmanuel Vadot		fpga_mgr_spi: fpga-mgr@0 {
43*c66ec88fSEmmanuel Vadot			compatible = "xlnx,fpga-slave-serial";
44*c66ec88fSEmmanuel Vadot			spi-max-frequency = <60000000>;
45*c66ec88fSEmmanuel Vadot			spi-cpha;
46*c66ec88fSEmmanuel Vadot			reg = <0>;
47*c66ec88fSEmmanuel Vadot			prog_b-gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
48*c66ec88fSEmmanuel Vadot			init-b-gpios = <&gpio0 28 GPIO_ACTIVE_LOW>;
49*c66ec88fSEmmanuel Vadot			done-gpios = <&gpio0 9 GPIO_ACTIVE_HIGH>;
50*c66ec88fSEmmanuel Vadot		};
51*c66ec88fSEmmanuel Vadot	};
52