xref: /freebsd-src/sys/contrib/device-tree/Bindings/arm/gemini.txt (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
1*c66ec88fSEmmanuel VadotCortina systems Gemini platforms
2*c66ec88fSEmmanuel Vadot
3*c66ec88fSEmmanuel VadotThe Gemini SoC is the project name for an ARMv4 FA525-based SoC originally
4*c66ec88fSEmmanuel Vadotproduced by Storlink Semiconductor around 2005. The company was renamed
5*c66ec88fSEmmanuel Vadotlater renamed Storm Semiconductor. The chip product name is Storlink SL3516.
6*c66ec88fSEmmanuel VadotIt was derived from earlier products from Storm named SL3316 (Centroid) and
7*c66ec88fSEmmanuel VadotSL3512 (Bulverde).
8*c66ec88fSEmmanuel Vadot
9*c66ec88fSEmmanuel VadotStorm Semiconductor was acquired by Cortina Systems in 2008 and the SoC was
10*c66ec88fSEmmanuel Vadotproduced and used for NAS and similar usecases. In 2014 Cortina Systems was
11*c66ec88fSEmmanuel Vadotin turn acquired by Inphi, who seem to have discontinued this product family.
12*c66ec88fSEmmanuel Vadot
13*c66ec88fSEmmanuel VadotMany of the IP blocks used in the SoC comes from Faraday Technology.
14*c66ec88fSEmmanuel Vadot
15*c66ec88fSEmmanuel VadotRequired properties (in root node):
16*c66ec88fSEmmanuel Vadot	compatible = "cortina,gemini";
17*c66ec88fSEmmanuel Vadot
18*c66ec88fSEmmanuel VadotRequired nodes:
19*c66ec88fSEmmanuel Vadot
20*c66ec88fSEmmanuel Vadot- soc: the SoC should be represented by a simple bus encompassing all the
21*c66ec88fSEmmanuel Vadot  onchip devices, this is referred to as the soc bus node.
22*c66ec88fSEmmanuel Vadot
23*c66ec88fSEmmanuel Vadot- syscon: the soc bus node must have a system controller node pointing to the
24*c66ec88fSEmmanuel Vadot  global control registers, with the compatible string
25*c66ec88fSEmmanuel Vadot  "cortina,gemini-syscon", "syscon";
26*c66ec88fSEmmanuel Vadot
27*c66ec88fSEmmanuel Vadot  Required properties on the syscon:
28*c66ec88fSEmmanuel Vadot  - reg: syscon register location and size.
29*c66ec88fSEmmanuel Vadot  - #clock-cells: should be set to <1> - the system controller is also a
30*c66ec88fSEmmanuel Vadot                  clock provider.
31*c66ec88fSEmmanuel Vadot  - #reset-cells: should be set to <1> - the system controller is also a
32*c66ec88fSEmmanuel Vadot                  reset line provider.
33*c66ec88fSEmmanuel Vadot
34*c66ec88fSEmmanuel Vadot  The clock sources have shorthand defines in the include file:
35*c66ec88fSEmmanuel Vadot  <dt-bindings/clock/cortina,gemini-clock.h>
36*c66ec88fSEmmanuel Vadot
37*c66ec88fSEmmanuel Vadot  The reset lines have shorthand defines in the include file:
38*c66ec88fSEmmanuel Vadot  <dt-bindings/reset/cortina,gemini-reset.h>
39*c66ec88fSEmmanuel Vadot
40*c66ec88fSEmmanuel Vadot- timer: the soc bus node must have a timer node pointing to the SoC timer
41*c66ec88fSEmmanuel Vadot  block, with the compatible string "cortina,gemini-timer"
42*c66ec88fSEmmanuel Vadot  See: clocksource/cortina,gemini-timer.txt
43*c66ec88fSEmmanuel Vadot
44*c66ec88fSEmmanuel Vadot- interrupt-controller: the sob bus node must have an interrupt controller
45*c66ec88fSEmmanuel Vadot  node pointing to the SoC interrupt controller block, with the compatible
46*c66ec88fSEmmanuel Vadot  string "cortina,gemini-interrupt-controller"
47*c66ec88fSEmmanuel Vadot  See interrupt-controller/cortina,gemini-interrupt-controller.txt
48*c66ec88fSEmmanuel Vadot
49*c66ec88fSEmmanuel VadotExample:
50*c66ec88fSEmmanuel Vadot
51*c66ec88fSEmmanuel Vadot/ {
52*c66ec88fSEmmanuel Vadot	model = "Foo Gemini Machine";
53*c66ec88fSEmmanuel Vadot	compatible = "cortina,gemini";
54*c66ec88fSEmmanuel Vadot	#address-cells = <1>;
55*c66ec88fSEmmanuel Vadot	#size-cells = <1>;
56*c66ec88fSEmmanuel Vadot
57*c66ec88fSEmmanuel Vadot	memory {
58*c66ec88fSEmmanuel Vadot		device_type = "memory";
59*c66ec88fSEmmanuel Vadot		reg = <0x00000000 0x8000000>;
60*c66ec88fSEmmanuel Vadot	};
61*c66ec88fSEmmanuel Vadot
62*c66ec88fSEmmanuel Vadot	soc {
63*c66ec88fSEmmanuel Vadot		#address-cells = <1>;
64*c66ec88fSEmmanuel Vadot		#size-cells = <1>;
65*c66ec88fSEmmanuel Vadot		ranges;
66*c66ec88fSEmmanuel Vadot		compatible = "simple-bus";
67*c66ec88fSEmmanuel Vadot		interrupt-parent = <&intcon>;
68*c66ec88fSEmmanuel Vadot
69*c66ec88fSEmmanuel Vadot		syscon: syscon@40000000 {
70*c66ec88fSEmmanuel Vadot			compatible = "cortina,gemini-syscon", "syscon";
71*c66ec88fSEmmanuel Vadot			reg = <0x40000000 0x1000>;
72*c66ec88fSEmmanuel Vadot			#clock-cells = <1>;
73*c66ec88fSEmmanuel Vadot			#reset-cells = <1>;
74*c66ec88fSEmmanuel Vadot		};
75*c66ec88fSEmmanuel Vadot
76*c66ec88fSEmmanuel Vadot		uart0: serial@42000000 {
77*c66ec88fSEmmanuel Vadot			compatible = "ns16550a";
78*c66ec88fSEmmanuel Vadot			reg = <0x42000000 0x100>;
79*c66ec88fSEmmanuel Vadot			resets = <&syscon GEMINI_RESET_UART>;
80*c66ec88fSEmmanuel Vadot			clocks = <&syscon GEMINI_CLK_UART>;
81*c66ec88fSEmmanuel Vadot			interrupts = <18 IRQ_TYPE_LEVEL_HIGH>;
82*c66ec88fSEmmanuel Vadot			reg-shift = <2>;
83*c66ec88fSEmmanuel Vadot		};
84*c66ec88fSEmmanuel Vadot
85*c66ec88fSEmmanuel Vadot		timer@43000000 {
86*c66ec88fSEmmanuel Vadot			compatible = "cortina,gemini-timer";
87*c66ec88fSEmmanuel Vadot			reg = <0x43000000 0x1000>;
88*c66ec88fSEmmanuel Vadot			interrupt-parent = <&intcon>;
89*c66ec88fSEmmanuel Vadot			interrupts = <14 IRQ_TYPE_EDGE_FALLING>, /* Timer 1 */
90*c66ec88fSEmmanuel Vadot				     <15 IRQ_TYPE_EDGE_FALLING>, /* Timer 2 */
91*c66ec88fSEmmanuel Vadot				     <16 IRQ_TYPE_EDGE_FALLING>; /* Timer 3 */
92*c66ec88fSEmmanuel Vadot			resets = <&syscon GEMINI_RESET_TIMER>;
93*c66ec88fSEmmanuel Vadot			/* APB clock or RTC clock */
94*c66ec88fSEmmanuel Vadot			clocks = <&syscon GEMINI_CLK_APB>,
95*c66ec88fSEmmanuel Vadot				 <&syscon GEMINI_CLK_RTC>;
96*c66ec88fSEmmanuel Vadot			clock-names = "PCLK", "EXTCLK";
97*c66ec88fSEmmanuel Vadot			syscon = <&syscon>;
98*c66ec88fSEmmanuel Vadot		};
99*c66ec88fSEmmanuel Vadot
100*c66ec88fSEmmanuel Vadot		intcon: interrupt-controller@48000000 {
101*c66ec88fSEmmanuel Vadot			compatible = "cortina,gemini-interrupt-controller";
102*c66ec88fSEmmanuel Vadot			reg = <0x48000000 0x1000>;
103*c66ec88fSEmmanuel Vadot			resets = <&syscon GEMINI_RESET_INTCON0>;
104*c66ec88fSEmmanuel Vadot			interrupt-controller;
105*c66ec88fSEmmanuel Vadot			#interrupt-cells = <2>;
106*c66ec88fSEmmanuel Vadot		};
107*c66ec88fSEmmanuel Vadot	};
108*c66ec88fSEmmanuel Vadot};
109