2 * Device Tree file for Cortina systems Gemini SoC
5 /include/ "skeleton.dtsi"
7 #include <dt-bindings/interrupt-controller/irq.h>
8 #include <dt-bindings/clock/cortina,gemini-clock.h>
9 #include <dt-bindings/reset/cortina,gemini-reset.h>
10 #include <dt-bindings/gpio/gpio.h>
17 compatible = "simple-bus";
18 interrupt-parent = <&intcon>;
21 compatible = "cortina,gemini-flash", "cfi-flash";
23 pinctrl-names = "default";
24 pinctrl-0 = <&pflash_default_pins>;
31 syscon: syscon@40000000 {
32 compatible = "cortina,gemini-syscon",
33 "syscon", "simple-mfd";
34 reg = <0x40000000 0x1000>;
39 compatible = "syscon-reboot";
41 /* GLOBAL_RESET register */
43 /* RESET_GLOBAL | RESET_CPU1 */
48 compatible = "cortina,gemini-pinctrl";
50 /* Hog the DRAM pins */
51 pinctrl-names = "default";
52 pinctrl-0 = <&dram_default_pins>, <&system_default_pins>,
53 <&vcontrol_default_pins>;
55 dram_default_pins: pinctrl-dram {
61 rtc_default_pins: pinctrl-rtc {
67 power_default_pins: pinctrl-power {
73 cir_default_pins: pinctrl-cir {
79 system_default_pins: pinctrl-system {
85 vcontrol_default_pins: pinctrl-vcontrol {
87 function = "vcontrol";
88 groups = "vcontrolgrp";
91 ice_default_pins: pinctrl-ice {
97 uart_default_pins: pinctrl-uart {
100 groups = "uartrxtxgrp";
103 pflash_default_pins: pinctrl-pflash {
106 groups = "pflashgrp";
109 usb_default_pins: pinctrl-usb {
115 gmii_default_pins: pinctrl-gmii {
121 pci_default_pins: pinctrl-pci {
127 sata_default_pins: pinctrl-sata {
133 /* Activate both groups of pins for this state */
134 sata_and_ide_pins: pinctrl-sata-ide {
148 compatible = "cortina,gemini-watchdog";
149 reg = <0x41000000 0x1000>;
150 interrupts = <3 IRQ_TYPE_LEVEL_HIGH>;
151 resets = <&syscon GEMINI_RESET_WDOG>;
152 clocks = <&syscon GEMINI_CLK_APB>;
155 uart0: serial@42000000 {
156 compatible = "ns16550a";
157 reg = <0x42000000 0x100>;
158 resets = <&syscon GEMINI_RESET_UART>;
159 clocks = <&syscon GEMINI_CLK_UART>;
160 interrupts = <18 IRQ_TYPE_LEVEL_HIGH>;
161 pinctrl-names = "default";
162 pinctrl-0 = <&uart_default_pins>;
167 compatible = "faraday,fttmr010";
168 reg = <0x43000000 0x1000>;
169 interrupt-parent = <&intcon>;
170 interrupts = <14 IRQ_TYPE_EDGE_FALLING>, /* Timer 1 */
171 <15 IRQ_TYPE_EDGE_FALLING>, /* Timer 2 */
172 <16 IRQ_TYPE_EDGE_FALLING>; /* Timer 3 */
173 resets = <&syscon GEMINI_RESET_TIMER>;
174 /* APB clock or RTC clock */
175 clocks = <&syscon GEMINI_CLK_APB>, <&syscon GEMINI_CLK_RTC>;
176 clock-names = "PCLK", "EXTCLK";
181 compatible = "cortina,gemini-rtc";
182 reg = <0x45000000 0x100>;
183 interrupts = <17 IRQ_TYPE_LEVEL_HIGH>;
184 resets = <&syscon GEMINI_RESET_RTC>;
185 clocks = <&syscon GEMINI_CLK_APB>, <&syscon GEMINI_CLK_RTC>;
186 clock-names = "PCLK", "EXTCLK";
187 pinctrl-names = "default";
188 pinctrl-0 = <&rtc_default_pins>;
191 sata: sata@46000000 {
192 compatible = "cortina,gemini-sata-bridge";
193 reg = <0x46000000 0x100>;
194 resets = <&syscon GEMINI_RESET_SATA0>,
195 <&syscon GEMINI_RESET_SATA1>;
196 reset-names = "sata0", "sata1";
197 clocks = <&syscon GEMINI_CLK_GATE_SATA0>,
198 <&syscon GEMINI_CLK_GATE_SATA1>;
199 clock-names = "SATA0_PCLK", "SATA1_PCLK";
201 * This defines the special "ide" state that needs
202 * to be explicitly enabled to enable the IDE pins,
203 * as these pins are normally used for other things.
205 pinctrl-names = "default", "ide";
206 pinctrl-0 = <&sata_default_pins>;
207 pinctrl-1 = <&sata_and_ide_pins>;
212 intcon: interrupt-controller@48000000 {
213 compatible = "faraday,ftintc010";
214 reg = <0x48000000 0x1000>;
215 resets = <&syscon GEMINI_RESET_INTCON0>;
216 interrupt-controller;
217 #interrupt-cells = <2>;
220 power-controller@4b000000 {
221 compatible = "cortina,gemini-power-controller";
222 reg = <0x4b000000 0x100>;
223 interrupts = <26 IRQ_TYPE_EDGE_RISING>;
224 pinctrl-names = "default";
225 pinctrl-0 = <&power_default_pins>;
228 gpio0: gpio@4d000000 {
229 compatible = "cortina,gemini-gpio", "faraday,ftgpio010";
230 reg = <0x4d000000 0x100>;
231 interrupts = <22 IRQ_TYPE_LEVEL_HIGH>;
232 resets = <&syscon GEMINI_RESET_GPIO0>;
233 clocks = <&syscon GEMINI_CLK_APB>;
236 interrupt-controller;
237 #interrupt-cells = <2>;
240 gpio1: gpio@4e000000 {
241 compatible = "cortina,gemini-gpio", "faraday,ftgpio010";
242 reg = <0x4e000000 0x100>;
243 interrupts = <23 IRQ_TYPE_LEVEL_HIGH>;
244 resets = <&syscon GEMINI_RESET_GPIO1>;
245 clocks = <&syscon GEMINI_CLK_APB>;
248 interrupt-controller;
249 #interrupt-cells = <2>;
252 gpio2: gpio@4f000000 {
253 compatible = "cortina,gemini-gpio", "faraday,ftgpio010";
254 reg = <0x4f000000 0x100>;
255 interrupts = <24 IRQ_TYPE_LEVEL_HIGH>;
256 resets = <&syscon GEMINI_RESET_GPIO2>;
257 clocks = <&syscon GEMINI_CLK_APB>;
260 interrupt-controller;
261 #interrupt-cells = <2>;
265 compatible = "cortina,gemini-pci", "faraday,ftpci100";
267 * The first 256 bytes in the IO range is actually used
268 * to configure the host bridge.
270 reg = <0x50000000 0x100>;
271 resets = <&syscon GEMINI_RESET_PCI>;
272 clocks = <&syscon GEMINI_CLK_GATE_PCI>, <&syscon GEMINI_CLK_PCI>;
273 clock-names = "PCLK", "PCICLK";
274 pinctrl-names = "default";
275 pinctrl-0 = <&pci_default_pins>;
276 #address-cells = <3>;
278 #interrupt-cells = <1>;
281 bus-range = <0x00 0xff>;
282 /* PCI ranges mappings */
284 /* 1MiB I/O space 0x50000000-0x500fffff */
285 <0x01000000 0 0 0x50000000 0 0x00100000>,
286 /* 128MiB non-prefetchable memory 0x58000000-0x5fffffff */
287 <0x02000000 0 0x58000000 0x58000000 0 0x08000000>;
291 /* 128MiB at 0x00000000-0x07ffffff */
292 <0x02000000 0 0x00000000 0x00000000 0 0x08000000>,
293 /* 64MiB at 0x00000000-0x03ffffff */
294 <0x02000000 0 0x00000000 0x00000000 0 0x04000000>,
295 /* 64MiB at 0x00000000-0x03ffffff */
296 <0x02000000 0 0x00000000 0x00000000 0 0x04000000>;
299 * This PCI host bridge variant has a cascaded interrupt
300 * controller embedded in the host bridge.
302 pci_intc: interrupt-controller {
303 interrupt-parent = <&intcon>;
304 interrupts = <8 IRQ_TYPE_LEVEL_HIGH>;
305 interrupt-controller;
306 #address-cells = <0>;
307 #interrupt-cells = <1>;
312 compatible = "cortina,gemini-pata", "faraday,ftide010";
313 reg = <0x63000000 0x1000>;
314 interrupts = <4 IRQ_TYPE_EDGE_RISING>;
315 resets = <&syscon GEMINI_RESET_IDE>;
316 clocks = <&syscon GEMINI_CLK_GATE_IDE>;
317 clock-names = "PCLK";
323 compatible = "cortina,gemini-pata", "faraday,ftide010";
324 reg = <0x63400000 0x1000>;
325 interrupts = <5 IRQ_TYPE_EDGE_RISING>;
326 resets = <&syscon GEMINI_RESET_IDE>;
327 clocks = <&syscon GEMINI_CLK_GATE_IDE>;
328 clock-names = "PCLK";
333 dma-controller@67000000 {
334 compatible = "faraday,ftdma020", "arm,pl080", "arm,primecell";
335 /* Faraday Technology FTDMAC020 variant */
336 arm,primecell-periphid = <0x0003b080>;
337 reg = <0x67000000 0x1000>;
338 interrupts = <9 IRQ_TYPE_EDGE_RISING>;
339 resets = <&syscon GEMINI_RESET_DMAC>;
340 clocks = <&syscon GEMINI_CLK_AHB>;
341 clock-names = "apb_pclk";
342 /* Bus interface AHB1 (AHB0) is totally tilted */
343 lli-bus-interface-ahb2;
344 mem-bus-interface-ahb2;
345 memcpy-burst-size = <256>;
346 memcpy-bus-width = <32>;