1/*
2 * Abilis Systems TB10X SOC device tree
3 *
4 * Copyright (C) Abilis Systems 2013
5 *
6 * Author: Christian Ruppert <christian.ruppert@abilis.com>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
20 */
21
22
23/ {
24	compatible		= "abilis,arc-tb10x";
25	#address-cells		= <1>;
26	#size-cells		= <1>;
27
28	cpus {
29		#address-cells = <1>;
30		#size-cells = <0>;
31		cpu@0 {
32			device_type = "cpu";
33			compatible = "snps,arc770d";
34			reg = <0>;
35		};
36	};
37
38	/* TIMER0 with interrupt for clockevent */
39	timer0 {
40		compatible = "snps,arc-timer";
41		interrupts = <3>;
42		interrupt-parent = <&intc>;
43		clocks = <&cpu_clk>;
44	};
45
46	/* TIMER1 for free running clocksource */
47	timer1 {
48		compatible = "snps,arc-timer";
49		clocks = <&cpu_clk>;
50	};
51
52	soc100 {
53		#address-cells	= <1>;
54		#size-cells	= <1>;
55		device_type	= "soc";
56		ranges		= <0xfe000000 0xfe000000 0x02000000
57				0x000F0000 0x000F0000 0x00010000>;
58		compatible	= "abilis,tb10x", "simple-bus";
59
60		pll0: oscillator {
61			compatible = "fixed-clock";
62			#clock-cells = <0>;
63			clock-output-names = "pll0";
64		};
65		cpu_clk: clkdiv_cpu {
66			compatible = "fixed-factor-clock";
67			#clock-cells = <0>;
68			clocks = <&pll0>;
69			clock-output-names = "cpu_clk";
70		};
71		ahb_clk: clkdiv_ahb {
72			compatible = "fixed-factor-clock";
73			#clock-cells = <0>;
74			clocks = <&pll0>;
75			clock-output-names = "ahb_clk";
76		};
77
78		iomux: iomux@FF10601c {
79			compatible = "abilis,tb10x-iomux";
80			#gpio-range-cells = <3>;
81			reg = <0xFF10601c 0x4>;
82		};
83
84		intc: interrupt-controller {
85			compatible = "snps,arc700-intc";
86			interrupt-controller;
87			#interrupt-cells = <1>;
88		};
89		tb10x_ictl: pic@fe002000 {
90			compatible = "abilis,tb10x-ictl";
91			reg = <0xFE002000 0x20>;
92			interrupt-controller;
93			#interrupt-cells = <2>;
94			interrupt-parent = <&intc>;
95			interrupts = <5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
96					20 21 22 23 24 25 26 27 28 29 30 31>;
97		};
98
99		uart@FF100000 {
100			compatible = "snps,dw-apb-uart";
101			reg = <0xFF100000 0x100>;
102			clock-frequency = <166666666>;
103			interrupts = <25 8>;
104			reg-shift = <2>;
105			reg-io-width = <4>;
106			interrupt-parent = <&tb10x_ictl>;
107		};
108		ethernet@FE100000 {
109			compatible = "snps,dwmac-3.70a","snps,dwmac";
110			reg = <0xFE100000 0x1058>;
111			interrupt-parent = <&tb10x_ictl>;
112			interrupts = <6 8>;
113			interrupt-names = "macirq";
114			clocks = <&ahb_clk>;
115			clock-names = "stmmaceth";
116		};
117		dma@FE000000 {
118			compatible = "snps,dma-spear1340";
119			reg = <0xFE000000 0x400>;
120			interrupt-parent = <&tb10x_ictl>;
121			interrupts = <14 8>;
122			dma-channels = <6>;
123			dma-requests = <0>;
124			dma-masters = <1>;
125			#dma-cells = <3>;
126			chan_allocation_order = <0>;
127			chan_priority = <1>;
128			block_size = <0x7ff>;
129			data_width = <2>;
130			clocks = <&ahb_clk>;
131			clock-names = "hclk";
132		};
133
134		i2c0: i2c@FF120000 {
135			#address-cells = <1>;
136			#size-cells = <0>;
137			compatible = "snps,designware-i2c";
138			reg = <0xFF120000 0x1000>;
139			interrupt-parent = <&tb10x_ictl>;
140			interrupts = <12 8>;
141			clocks = <&ahb_clk>;
142		};
143		i2c1: i2c@FF121000 {
144			#address-cells = <1>;
145			#size-cells = <0>;
146			compatible = "snps,designware-i2c";
147			reg = <0xFF121000 0x1000>;
148			interrupt-parent = <&tb10x_ictl>;
149			interrupts = <12 8>;
150			clocks = <&ahb_clk>;
151		};
152		i2c2: i2c@FF122000 {
153			#address-cells = <1>;
154			#size-cells = <0>;
155			compatible = "snps,designware-i2c";
156			reg = <0xFF122000 0x1000>;
157			interrupt-parent = <&tb10x_ictl>;
158			interrupts = <12 8>;
159			clocks = <&ahb_clk>;
160		};
161		i2c3: i2c@FF123000 {
162			#address-cells = <1>;
163			#size-cells = <0>;
164			compatible = "snps,designware-i2c";
165			reg = <0xFF123000 0x1000>;
166			interrupt-parent = <&tb10x_ictl>;
167			interrupts = <12 8>;
168			clocks = <&ahb_clk>;
169		};
170		i2c4: i2c@FF124000 {
171			#address-cells = <1>;
172			#size-cells = <0>;
173			compatible = "snps,designware-i2c";
174			reg = <0xFF124000 0x1000>;
175			interrupt-parent = <&tb10x_ictl>;
176			interrupts = <12 8>;
177			clocks = <&ahb_clk>;
178		};
179
180		spi0: spi@0xFE010000 {
181			#address-cells = <1>;
182			#size-cells = <0>;
183			cell-index = <0>;
184			compatible = "abilis,tb100-spi";
185			num-cs = <1>;
186			reg = <0xFE010000 0x20>;
187			interrupt-parent = <&tb10x_ictl>;
188			interrupts = <26 8>;
189			clocks = <&ahb_clk>;
190		};
191		spi1: spi@0xFE011000 {
192			#address-cells = <1>;
193			#size-cells = <0>;
194			cell-index = <1>;
195			compatible = "abilis,tb100-spi";
196			num-cs = <2>;
197			reg = <0xFE011000 0x20>;
198			interrupt-parent = <&tb10x_ictl>;
199			interrupts = <10 8>;
200			clocks = <&ahb_clk>;
201		};
202
203		tb10x_tsm: tb10x-tsm@ff316000 {
204			compatible = "abilis,tb100-tsm";
205			reg = <0xff316000 0x400>;
206			interrupt-parent = <&tb10x_ictl>;
207			interrupts = <17 8>;
208			output-clkdiv = <4>;
209			global-packet-delay = <0x21>;
210			port-packet-delay = <0>;
211		};
212		tb10x_stream_proc: tb10x-stream-proc {
213			compatible = "abilis,tb100-streamproc";
214			reg =   <0xfff00000 0x200>,
215				<0x000f0000 0x10000>,
216				<0xfff00200 0x105>,
217				<0xff10600c 0x1>,
218				<0xfe001018 0x1>;
219			reg-names =     "mbox",
220					"sp_iccm",
221					"mbox_irq",
222					"cpuctrl",
223					"a6it_int_force";
224			interrupt-parent = <&tb10x_ictl>;
225			interrupts = <20 2>, <19 2>;
226			interrupt-names = "cmd_irq", "event_irq";
227		};
228		tb10x_mdsc0: tb10x-mdscr@FF300000 {
229			compatible = "abilis,tb100-mdscr";
230			reg = <0xFF300000 0x7000>;
231			tb100-mdscr-manage-tsin;
232		};
233		tb10x_mscr0: tb10x-mdscr@FF307000 {
234			compatible = "abilis,tb100-mdscr";
235			reg = <0xFF307000 0x7000>;
236		};
237		tb10x_scr0: tb10x-mdscr@ff30e000 {
238			compatible = "abilis,tb100-mdscr";
239			reg = <0xFF30e000 0x4000>;
240			tb100-mdscr-manage-tsin;
241		};
242		tb10x_scr1: tb10x-mdscr@ff312000 {
243			compatible = "abilis,tb100-mdscr";
244			reg = <0xFF312000 0x4000>;
245			tb100-mdscr-manage-tsin;
246		};
247		tb10x_wfb: tb10x-wfb@ff319000 {
248			compatible = "abilis,tb100-wfb";
249			reg = <0xff319000 0x1000>;
250			interrupt-parent = <&tb10x_ictl>;
251			interrupts = <16 8>;
252		};
253	};
254};
255