xref: /OK3568_Linux_fs/kernel/scripts/dtc/include-prefixes/arm/tango4-common.dtsi (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0
2*4882a593Smuzhiyun/*
3*4882a593Smuzhiyun * Based on Mans Rullgard's Tango3 DT
4*4882a593Smuzhiyun * https://github.com/mansr/linux-tangox
5*4882a593Smuzhiyun */
6*4882a593Smuzhiyun
7*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/arm-gic.h>
8*4882a593Smuzhiyun
9*4882a593Smuzhiyun#define  CPU_CLK	0
10*4882a593Smuzhiyun#define  SYS_CLK	1
11*4882a593Smuzhiyun#define  USB_CLK	2
12*4882a593Smuzhiyun#define SDIO_CLK	3
13*4882a593Smuzhiyun
14*4882a593Smuzhiyun/ {
15*4882a593Smuzhiyun	interrupt-parent = <&gic>;
16*4882a593Smuzhiyun	#address-cells = <1>;
17*4882a593Smuzhiyun	#size-cells = <1>;
18*4882a593Smuzhiyun
19*4882a593Smuzhiyun	periph_clk: periph_clk {
20*4882a593Smuzhiyun		compatible = "fixed-factor-clock";
21*4882a593Smuzhiyun		clocks = <&clkgen CPU_CLK>;
22*4882a593Smuzhiyun		clock-mult = <1>;
23*4882a593Smuzhiyun		clock-div  = <2>;
24*4882a593Smuzhiyun		#clock-cells = <0>;
25*4882a593Smuzhiyun	};
26*4882a593Smuzhiyun
27*4882a593Smuzhiyun	mpcore {
28*4882a593Smuzhiyun		compatible = "simple-bus";
29*4882a593Smuzhiyun		ranges = <0x00000000 0x20000000 0x2000>;
30*4882a593Smuzhiyun		#address-cells = <1>;
31*4882a593Smuzhiyun		#size-cells = <1>;
32*4882a593Smuzhiyun
33*4882a593Smuzhiyun		scu@0 {
34*4882a593Smuzhiyun			compatible = "arm,cortex-a9-scu";
35*4882a593Smuzhiyun			reg = <0x0 0x100>;
36*4882a593Smuzhiyun		};
37*4882a593Smuzhiyun
38*4882a593Smuzhiyun		twd@600 {
39*4882a593Smuzhiyun			compatible = "arm,cortex-a9-twd-timer";
40*4882a593Smuzhiyun			reg = <0x600 0x10>;
41*4882a593Smuzhiyun			interrupts = <GIC_PPI 13 IRQ_TYPE_EDGE_RISING>;
42*4882a593Smuzhiyun			clocks = <&periph_clk>;
43*4882a593Smuzhiyun			always-on;
44*4882a593Smuzhiyun		};
45*4882a593Smuzhiyun
46*4882a593Smuzhiyun		gic: interrupt-controller@1000 {
47*4882a593Smuzhiyun			compatible = "arm,cortex-a9-gic";
48*4882a593Smuzhiyun			#interrupt-cells = <3>;
49*4882a593Smuzhiyun			interrupt-controller;
50*4882a593Smuzhiyun			reg = <0x1000 0x1000>, <0x100 0x100>;
51*4882a593Smuzhiyun		};
52*4882a593Smuzhiyun	};
53*4882a593Smuzhiyun
54*4882a593Smuzhiyun	l2cc: cache-controller@20100000 {
55*4882a593Smuzhiyun		compatible = "arm,pl310-cache";
56*4882a593Smuzhiyun		reg = <0x20100000 0x1000>;
57*4882a593Smuzhiyun		cache-level = <2>;
58*4882a593Smuzhiyun		cache-unified;
59*4882a593Smuzhiyun	};
60*4882a593Smuzhiyun
61*4882a593Smuzhiyun	soc {
62*4882a593Smuzhiyun		compatible = "simple-bus";
63*4882a593Smuzhiyun		interrupt-parent = <&irq0>;
64*4882a593Smuzhiyun		#address-cells = <1>;
65*4882a593Smuzhiyun		#size-cells = <1>;
66*4882a593Smuzhiyun		ranges;
67*4882a593Smuzhiyun
68*4882a593Smuzhiyun		xtal: xtal {
69*4882a593Smuzhiyun			compatible = "fixed-clock";
70*4882a593Smuzhiyun			clock-frequency = <27000000>;
71*4882a593Smuzhiyun			#clock-cells = <0>;
72*4882a593Smuzhiyun		};
73*4882a593Smuzhiyun
74*4882a593Smuzhiyun		clkgen: clkgen@10000 {
75*4882a593Smuzhiyun			compatible = "sigma,tango4-clkgen";
76*4882a593Smuzhiyun			reg = <0x10000 0x100>;
77*4882a593Smuzhiyun			clocks = <&xtal>;
78*4882a593Smuzhiyun			#clock-cells = <1>;
79*4882a593Smuzhiyun		};
80*4882a593Smuzhiyun
81*4882a593Smuzhiyun		tick-counter@10048 {
82*4882a593Smuzhiyun			compatible = "sigma,tick-counter";
83*4882a593Smuzhiyun			reg = <0x10048 0x4>;
84*4882a593Smuzhiyun			clocks = <&xtal>;
85*4882a593Smuzhiyun		};
86*4882a593Smuzhiyun
87*4882a593Smuzhiyun		uart: serial@10700 {
88*4882a593Smuzhiyun			compatible = "ralink,rt2880-uart", "ns16550a";
89*4882a593Smuzhiyun			reg = <0x10700 0x30>;
90*4882a593Smuzhiyun			interrupts = <1 IRQ_TYPE_LEVEL_HIGH>;
91*4882a593Smuzhiyun			clock-frequency = <7372800>;
92*4882a593Smuzhiyun			reg-shift = <2>;
93*4882a593Smuzhiyun		};
94*4882a593Smuzhiyun
95*4882a593Smuzhiyun		watchdog@1fd00 {
96*4882a593Smuzhiyun			compatible = "sigma,smp8759-wdt";
97*4882a593Smuzhiyun			reg = <0x1fd00 8>;
98*4882a593Smuzhiyun			clocks = <&xtal>;
99*4882a593Smuzhiyun		};
100*4882a593Smuzhiyun
101*4882a593Smuzhiyun		mmc0: mmc@21000 {
102*4882a593Smuzhiyun			compatible = "arasan,sdhci-8.9a";
103*4882a593Smuzhiyun			reg = <0x21000 0x200>;
104*4882a593Smuzhiyun			clock-names = "clk_xin", "clk_ahb";
105*4882a593Smuzhiyun			clocks = <&clkgen SDIO_CLK>, <&clkgen SYS_CLK>;
106*4882a593Smuzhiyun			interrupts = <60 IRQ_TYPE_LEVEL_HIGH>;
107*4882a593Smuzhiyun		};
108*4882a593Smuzhiyun
109*4882a593Smuzhiyun		mmc1: mmc@21200 {
110*4882a593Smuzhiyun			compatible = "arasan,sdhci-8.9a";
111*4882a593Smuzhiyun			reg = <0x21200 0x200>;
112*4882a593Smuzhiyun			clock-names = "clk_xin", "clk_ahb";
113*4882a593Smuzhiyun			clocks = <&clkgen SDIO_CLK>, <&clkgen SYS_CLK>;
114*4882a593Smuzhiyun			interrupts = <8 IRQ_TYPE_LEVEL_HIGH>;
115*4882a593Smuzhiyun		};
116*4882a593Smuzhiyun
117*4882a593Smuzhiyun		usb0: usb@21400 {
118*4882a593Smuzhiyun			compatible = "chipidea,usb2";
119*4882a593Smuzhiyun			reg = <0x21400 0x200>;
120*4882a593Smuzhiyun			interrupts = <40 IRQ_TYPE_LEVEL_HIGH>;
121*4882a593Smuzhiyun			phys = <&usb0_phy>;
122*4882a593Smuzhiyun			phy-names = "usb-phy";
123*4882a593Smuzhiyun		};
124*4882a593Smuzhiyun
125*4882a593Smuzhiyun		usb0_phy: phy@21700 {
126*4882a593Smuzhiyun			compatible = "sigma,smp8642-usb-phy";
127*4882a593Smuzhiyun			reg = <0x21700 0x100>;
128*4882a593Smuzhiyun			#phy-cells = <0>;
129*4882a593Smuzhiyun			clocks = <&clkgen USB_CLK>;
130*4882a593Smuzhiyun		};
131*4882a593Smuzhiyun
132*4882a593Smuzhiyun		usb1: usb@25400 {
133*4882a593Smuzhiyun			compatible = "chipidea,usb2";
134*4882a593Smuzhiyun			reg = <0x25400 0x200>;
135*4882a593Smuzhiyun			interrupts = <7 IRQ_TYPE_LEVEL_HIGH>;
136*4882a593Smuzhiyun			phys = <&usb1_phy>;
137*4882a593Smuzhiyun			phy-names = "usb-phy";
138*4882a593Smuzhiyun		};
139*4882a593Smuzhiyun
140*4882a593Smuzhiyun		usb1_phy: phy@25700 {
141*4882a593Smuzhiyun			compatible = "sigma,smp8642-usb-phy";
142*4882a593Smuzhiyun			reg = <0x25700 0x100>;
143*4882a593Smuzhiyun			#phy-cells = <0>;
144*4882a593Smuzhiyun			clocks = <&clkgen USB_CLK>;
145*4882a593Smuzhiyun		};
146*4882a593Smuzhiyun
147*4882a593Smuzhiyun		eth0: ethernet@26000 {
148*4882a593Smuzhiyun			compatible = "sigma,smp8734-ethernet";
149*4882a593Smuzhiyun			reg = <0x26000 0x800>;
150*4882a593Smuzhiyun			interrupts = <38 IRQ_TYPE_LEVEL_HIGH>;
151*4882a593Smuzhiyun			clocks = <&clkgen SYS_CLK>;
152*4882a593Smuzhiyun		};
153*4882a593Smuzhiyun
154*4882a593Smuzhiyun		intc: interrupt-controller@6e000 {
155*4882a593Smuzhiyun			compatible = "sigma,smp8642-intc";
156*4882a593Smuzhiyun			reg = <0x6e000 0x400>;
157*4882a593Smuzhiyun			ranges = <0 0x6e000 0x400>;
158*4882a593Smuzhiyun			interrupt-parent = <&gic>;
159*4882a593Smuzhiyun			#address-cells = <1>;
160*4882a593Smuzhiyun			#size-cells = <1>;
161*4882a593Smuzhiyun
162*4882a593Smuzhiyun			irq0: irq0@0 {
163*4882a593Smuzhiyun				reg = <0x000 0x100>;
164*4882a593Smuzhiyun				interrupt-controller;
165*4882a593Smuzhiyun				#interrupt-cells = <2>;
166*4882a593Smuzhiyun				interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
167*4882a593Smuzhiyun			};
168*4882a593Smuzhiyun
169*4882a593Smuzhiyun			irq1: irq1@100 {
170*4882a593Smuzhiyun				reg = <0x100 0x100>;
171*4882a593Smuzhiyun				interrupt-controller;
172*4882a593Smuzhiyun				#interrupt-cells = <2>;
173*4882a593Smuzhiyun				interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
174*4882a593Smuzhiyun			};
175*4882a593Smuzhiyun
176*4882a593Smuzhiyun			irq2: irq2@300 {
177*4882a593Smuzhiyun				reg = <0x300 0x100>;
178*4882a593Smuzhiyun				interrupt-controller;
179*4882a593Smuzhiyun				#interrupt-cells = <2>;
180*4882a593Smuzhiyun				interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
181*4882a593Smuzhiyun			};
182*4882a593Smuzhiyun		};
183*4882a593Smuzhiyun	};
184*4882a593Smuzhiyun};
185