xref: /freebsd/sys/contrib/device-tree/Bindings/mips/img/xilfpga.txt (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
1*c66ec88fSEmmanuel VadotImagination University Program MIPSfpga
2*c66ec88fSEmmanuel Vadot=======================================
3*c66ec88fSEmmanuel Vadot
4*c66ec88fSEmmanuel VadotUnder the Imagination University Program, a microAptiv UP core has been
5*c66ec88fSEmmanuel Vadotreleased for academic usage.
6*c66ec88fSEmmanuel Vadot
7*c66ec88fSEmmanuel VadotAs we are dealing with a MIPS core instantiated on an FPGA, specifications
8*c66ec88fSEmmanuel Vadotare fluid and can be varied in RTL.
9*c66ec88fSEmmanuel Vadot
10*c66ec88fSEmmanuel VadotThis binding document is provided as baseline guidance for the example
11*c66ec88fSEmmanuel Vadotproject provided by IMG.
12*c66ec88fSEmmanuel Vadot
13*c66ec88fSEmmanuel VadotThe example project runs on the Nexys4DDR board by Digilent powered by
14*c66ec88fSEmmanuel Vadotthe ARTIX-7 FPGA by Xilinx.
15*c66ec88fSEmmanuel Vadot
16*c66ec88fSEmmanuel VadotRelevant details about the example project and the Nexys4DDR board:
17*c66ec88fSEmmanuel Vadot
18*c66ec88fSEmmanuel Vadot- microAptiv UP core m14Kc
19*c66ec88fSEmmanuel Vadot- 50MHz clock speed
20*c66ec88fSEmmanuel Vadot- 128Mbyte DDR RAM	at 0x0000_0000
21*c66ec88fSEmmanuel Vadot- 8Kbyte RAM		at 0x1000_0000
22*c66ec88fSEmmanuel Vadot- axi_intc		at 0x1020_0000
23*c66ec88fSEmmanuel Vadot- axi_uart16550		at 0x1040_0000
24*c66ec88fSEmmanuel Vadot- axi_gpio		at 0x1060_0000
25*c66ec88fSEmmanuel Vadot- axi_i2c		at 0x10A0_0000
26*c66ec88fSEmmanuel Vadot- custom_gpio		at 0x10C0_0000
27*c66ec88fSEmmanuel Vadot- axi_ethernetlite	at 0x10E0_0000
28*c66ec88fSEmmanuel Vadot- 8Kbyte BootRAM	at 0x1FC0_0000
29*c66ec88fSEmmanuel Vadot
30*c66ec88fSEmmanuel VadotRequired properties:
31*c66ec88fSEmmanuel Vadot--------------------
32*c66ec88fSEmmanuel Vadot - compatible: Must include "digilent,nexys4ddr","img,xilfpga".
33*c66ec88fSEmmanuel Vadot
34*c66ec88fSEmmanuel VadotCPU nodes:
35*c66ec88fSEmmanuel Vadot----------
36*c66ec88fSEmmanuel VadotA "cpus" node is required.  Required properties:
37*c66ec88fSEmmanuel Vadot - #address-cells: Must be 1.
38*c66ec88fSEmmanuel Vadot - #size-cells: Must be 0.
39*c66ec88fSEmmanuel VadotA CPU sub-node is also required for at least CPU 0. Required properties:
40*c66ec88fSEmmanuel Vadot - device_type: Must be "cpu".
41*c66ec88fSEmmanuel Vadot - compatible: Must be "mips,m14Kc".
42*c66ec88fSEmmanuel Vadot - reg: Must be <0>.
43*c66ec88fSEmmanuel Vadot - clocks: phandle to ext clock for fixed-clock received by MIPS core.
44*c66ec88fSEmmanuel Vadot
45*c66ec88fSEmmanuel VadotExample:
46*c66ec88fSEmmanuel Vadot
47*c66ec88fSEmmanuel Vadot	compatible = "img,xilfpga","digilent,nexys4ddr";
48*c66ec88fSEmmanuel Vadot	cpus {
49*c66ec88fSEmmanuel Vadot		#address-cells = <1>;
50*c66ec88fSEmmanuel Vadot		#size-cells = <0>;
51*c66ec88fSEmmanuel Vadot
52*c66ec88fSEmmanuel Vadot		cpu0: cpu@0 {
53*c66ec88fSEmmanuel Vadot			device_type = "cpu";
54*c66ec88fSEmmanuel Vadot			compatible = "mips,m14Kc";
55*c66ec88fSEmmanuel Vadot			reg = <0>;
56*c66ec88fSEmmanuel Vadot			clocks	= <&ext>;
57*c66ec88fSEmmanuel Vadot		};
58*c66ec88fSEmmanuel Vadot	};
59*c66ec88fSEmmanuel Vadot
60*c66ec88fSEmmanuel Vadot	ext: ext {
61*c66ec88fSEmmanuel Vadot		compatible = "fixed-clock";
62*c66ec88fSEmmanuel Vadot		#clock-cells = <0>;
63*c66ec88fSEmmanuel Vadot		clock-frequency = <50000000>;
64*c66ec88fSEmmanuel Vadot	};
65*c66ec88fSEmmanuel Vadot
66*c66ec88fSEmmanuel VadotBoot protocol:
67*c66ec88fSEmmanuel Vadot--------------
68*c66ec88fSEmmanuel Vadot
69*c66ec88fSEmmanuel VadotThe BootRAM is a writeable "RAM" in FPGA at 0x1FC0_0000.
70*c66ec88fSEmmanuel VadotThis is for easy reprogrammibility via JTAG.
71*c66ec88fSEmmanuel Vadot
72*c66ec88fSEmmanuel VadotThe BootRAM initializes the cache and the axi_uart peripheral.
73*c66ec88fSEmmanuel Vadot
74*c66ec88fSEmmanuel VadotDDR initialization is already handled by a HW IP block.
75*c66ec88fSEmmanuel Vadot
76*c66ec88fSEmmanuel VadotWhen the example project bitstream is loaded, the cpu_reset button
77*c66ec88fSEmmanuel Vadotneeds to be pressed.
78*c66ec88fSEmmanuel Vadot
79*c66ec88fSEmmanuel VadotThe bootram initializes the cache and axi_uart.
80*c66ec88fSEmmanuel VadotThen outputs MIPSFPGA\n\r on the serial port on the Nexys4DDR board.
81*c66ec88fSEmmanuel Vadot
82*c66ec88fSEmmanuel VadotAt this point, the board is ready to load the Linux kernel
83*c66ec88fSEmmanuel Vadotvmlinux file via JTAG.
84