xref: /linux/arch/arm/boot/dts/cirrus/ep93xx.dtsi (revision 3fd6c59042dbba50391e30862beac979491145fe)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Device Tree file for Cirrus Logic systems EP93XX SoC
4 */
5#include <dt-bindings/gpio/gpio.h>
6#include <dt-bindings/leds/common.h>
7#include <dt-bindings/input/input.h>
8#include <dt-bindings/clock/cirrus,ep9301-syscon.h>
9/ {
10	soc: soc {
11		compatible = "simple-bus";
12		ranges;
13		#address-cells = <1>;
14		#size-cells = <1>;
15
16		syscon: syscon@80930000 {
17			compatible = "cirrus,ep9301-syscon", "syscon";
18			reg = <0x80930000 0x1000>;
19
20			#clock-cells = <1>;
21			clocks = <&xtali>;
22
23			spi_default_pins: pins-spi {
24				function = "spi";
25				groups = "ssp";
26			};
27
28			ac97_default_pins: pins-ac97 {
29				function = "ac97";
30				groups = "ac97";
31			};
32
33			i2s_on_ssp_pins: pins-i2sonssp {
34				function = "i2s";
35				groups = "i2s_on_ssp";
36			};
37
38			i2s_on_ac97_pins: pins-i2sonac97 {
39				function = "i2s";
40				groups = "i2s_on_ac97";
41			};
42
43			gpio1_default_pins: pins-gpio1 {
44				function = "gpio";
45				groups = "gpio1agrp";
46			};
47
48			pwm1_default_pins: pins-pwm1 {
49				function = "pwm";
50				groups = "pwm1";
51			};
52
53			gpio2_default_pins: pins-gpio2 {
54				function = "gpio";
55				groups = "gpio2agrp";
56			};
57
58			gpio3_default_pins: pins-gpio3 {
59				function = "gpio";
60				groups = "gpio3agrp";
61			};
62
63			keypad_default_pins: pins-keypad {
64				function = "keypad";
65				groups = "keypadgrp";
66			};
67
68			gpio4_default_pins: pins-gpio4 {
69				function = "gpio";
70				groups = "gpio4agrp";
71			};
72
73			gpio6_default_pins: pins-gpio6 {
74				function = "gpio";
75				groups = "gpio6agrp";
76			};
77
78			gpio7_default_pins: pins-gpio7 {
79				function = "gpio";
80				groups = "gpio7agrp";
81			};
82
83			ide_default_pins: pins-ide {
84				function = "pata";
85				groups = "idegrp";
86			};
87
88			lcd_on_dram0_pins: pins-rasteronsdram0 {
89				function = "lcd";
90				groups = "rasteronsdram0grp";
91			};
92
93			lcd_on_dram3_pins: pins-rasteronsdram3 {
94				function = "lcd";
95				groups = "rasteronsdram3grp";
96			};
97		};
98
99		adc: adc@80900000 {
100			compatible = "cirrus,ep9301-adc";
101			reg = <0x80900000 0x28>;
102			clocks = <&syscon EP93XX_CLK_ADC>;
103			interrupt-parent = <&vic0>;
104			interrupts = <30>;
105			status = "disabled";
106		};
107
108		/*
109		 * The EP93XX expansion bus is a set of up to 7 each up to 16MB
110		 * windows in the 256MB space from 0x50000000 to 0x5fffffff.
111		 * But since we don't require to setup it in any way, we can
112		 * represent it as a simple-bus.
113		 */
114		ebi: bus@80080000 {
115			compatible = "simple-bus";
116			reg = <0x80080000 0x20>;
117			native-endian;
118			#address-cells = <1>;
119			#size-cells = <1>;
120			ranges;
121		};
122
123		dma0: dma-controller@80000000 {
124			compatible = "cirrus,ep9301-dma-m2p";
125			reg = <0x80000000 0x0040>,
126			      <0x80000040 0x0040>,
127			      <0x80000080 0x0040>,
128			      <0x800000c0 0x0040>,
129			      <0x80000240 0x0040>,
130			      <0x80000200 0x0040>,
131			      <0x800002c0 0x0040>,
132			      <0x80000280 0x0040>,
133			      <0x80000340 0x0040>,
134			      <0x80000300 0x0040>;
135			clocks = <&syscon EP93XX_CLK_M2P0>,
136				 <&syscon EP93XX_CLK_M2P1>,
137				 <&syscon EP93XX_CLK_M2P2>,
138				 <&syscon EP93XX_CLK_M2P3>,
139				 <&syscon EP93XX_CLK_M2P4>,
140				 <&syscon EP93XX_CLK_M2P5>,
141				 <&syscon EP93XX_CLK_M2P6>,
142				 <&syscon EP93XX_CLK_M2P7>,
143				 <&syscon EP93XX_CLK_M2P8>,
144				 <&syscon EP93XX_CLK_M2P9>;
145			clock-names = "m2p0", "m2p1",
146				      "m2p2", "m2p3",
147				      "m2p4", "m2p5",
148				      "m2p6", "m2p7",
149				      "m2p8", "m2p9";
150			interrupt-parent = <&vic0>;
151			interrupts = <7>, <8>, <9>, <10>, <11>,
152				<12>, <13>, <14>, <15>, <16>;
153			#dma-cells = <2>;
154		};
155
156		dma1: dma-controller@80000100 {
157			compatible = "cirrus,ep9301-dma-m2m";
158			reg = <0x80000100 0x0040>,
159			      <0x80000140 0x0040>;
160			clocks = <&syscon EP93XX_CLK_M2M0>,
161				 <&syscon EP93XX_CLK_M2M1>;
162			clock-names = "m2m0", "m2m1";
163			interrupt-parent = <&vic0>;
164			interrupts = <17>, <18>;
165			#dma-cells = <2>;
166		};
167
168		eth0: ethernet@80010000 {
169			compatible = "cirrus,ep9301-eth";
170			reg = <0x80010000 0x10000>;
171			interrupt-parent = <&vic1>;
172			interrupts = <7>;
173			mdio0: mdio {
174				#address-cells = <1>;
175				#size-cells = <0>;
176			};
177		};
178
179		gpio0: gpio@80840000 {
180			compatible = "cirrus,ep9301-gpio";
181			reg = <0x80840000 0x04>,
182			      <0x80840010 0x04>,
183			      <0x80840090 0x1c>;
184			reg-names = "data", "dir", "intr";
185			gpio-controller;
186			#gpio-cells = <2>;
187			interrupt-controller;
188			#interrupt-cells = <2>;
189			interrupt-parent = <&vic1>;
190			interrupts = <27>;
191		};
192
193		gpio1: gpio@80840004 {
194			compatible = "cirrus,ep9301-gpio";
195			reg = <0x80840004 0x04>,
196			      <0x80840014 0x04>,
197			      <0x808400ac 0x1c>;
198			reg-names = "data", "dir", "intr";
199			gpio-controller;
200			#gpio-cells = <2>;
201			interrupt-controller;
202			#interrupt-cells = <2>;
203			interrupt-parent = <&vic1>;
204			interrupts = <27>;
205		};
206
207		gpio2: gpio@80840008 {
208			compatible = "cirrus,ep9301-gpio";
209			reg = <0x80840008 0x04>,
210			      <0x80840018 0x04>;
211			reg-names = "data", "dir";
212			gpio-controller;
213			#gpio-cells = <2>;
214			pinctrl-names = "default";
215			pinctrl-0 = <&gpio2_default_pins>;
216		};
217
218		gpio3: gpio@8084000c {
219			compatible = "cirrus,ep9301-gpio";
220			reg = <0x8084000c 0x04>,
221			      <0x8084001c 0x04>;
222			reg-names = "data", "dir";
223			gpio-controller;
224			#gpio-cells = <2>;
225			pinctrl-names = "default";
226			pinctrl-0 = <&gpio3_default_pins>;
227		};
228
229		gpio4: gpio@80840020 {
230			compatible = "cirrus,ep9301-gpio";
231			reg = <0x80840020 0x04>,
232			      <0x80840024 0x04>;
233			reg-names = "data", "dir";
234			gpio-controller;
235			#gpio-cells = <2>;
236			pinctrl-names = "default";
237			pinctrl-0 = <&gpio4_default_pins>;
238		};
239
240		gpio5: gpio@80840030 {
241			compatible = "cirrus,ep9301-gpio";
242			reg = <0x80840030 0x04>,
243			      <0x80840034 0x04>,
244			      <0x8084004c 0x1c>;
245			reg-names = "data", "dir", "intr";
246			gpio-controller;
247			#gpio-cells = <2>;
248			interrupt-controller;
249			#interrupt-cells = <2>;
250			interrupts-extended = <&vic0 19>, <&vic0 20>,
251					      <&vic0 21>, <&vic0 22>,
252					      <&vic1 15>, <&vic1 16>,
253					      <&vic1 17>, <&vic1 18>;
254		};
255
256		gpio6: gpio@80840038 {
257			compatible = "cirrus,ep9301-gpio";
258			reg = <0x80840038 0x04>,
259			      <0x8084003c 0x04>;
260			reg-names = "data", "dir";
261			gpio-controller;
262			#gpio-cells = <2>;
263			pinctrl-names = "default";
264			pinctrl-0 = <&gpio6_default_pins>;
265		};
266
267		gpio7: gpio@80840040 {
268			compatible = "cirrus,ep9301-gpio";
269			reg = <0x80840040 0x04>,
270			      <0x80840044 0x04>;
271			reg-names = "data", "dir";
272			gpio-controller;
273			#gpio-cells = <2>;
274			pinctrl-names = "default";
275			pinctrl-0 = <&gpio7_default_pins>;
276		};
277
278		i2s: i2s@80820000 {
279			compatible = "cirrus,ep9301-i2s";
280			reg = <0x80820000 0x100>;
281			#sound-dai-cells = <0>;
282			interrupt-parent = <&vic1>;
283			interrupts = <28>;
284			clocks = <&syscon EP93XX_CLK_I2S_MCLK>,
285				 <&syscon EP93XX_CLK_I2S_SCLK>,
286				 <&syscon EP93XX_CLK_I2S_LRCLK>;
287			clock-names = "mclk", "sclk", "lrclk";
288			dmas = <&dma0 0 1>, <&dma0 0 2>;
289			dma-names = "tx", "rx";
290			status = "disabled";
291		};
292
293		ide: ide@800a0000 {
294			compatible = "cirrus,ep9312-pata";
295			reg = <0x800a0000 0x38>;
296			interrupt-parent = <&vic1>;
297			interrupts = <8>;
298			pinctrl-names = "default";
299			pinctrl-0 = <&ide_default_pins>;
300			status = "disabled";
301		};
302
303		vic0: interrupt-controller@800b0000 {
304			compatible = "arm,pl192-vic";
305			reg = <0x800b0000 0x1000>;
306			interrupt-controller;
307			#interrupt-cells = <1>;
308			valid-mask = <0x7ffffffc>;
309			valid-wakeup-mask = <0x0>;
310		};
311
312		vic1: interrupt-controller@800c0000 {
313			compatible = "arm,pl192-vic";
314			reg = <0x800c0000 0x1000>;
315			interrupt-controller;
316			#interrupt-cells = <1>;
317			valid-mask = <0x1fffffff>;
318			valid-wakeup-mask = <0x0>;
319		};
320
321		keypad: keypad@800f0000 {
322			compatible = "cirrus,ep9307-keypad";
323			reg = <0x800f0000 0x0c>;
324			interrupt-parent = <&vic0>;
325			interrupts = <29>;
326			clocks = <&syscon EP93XX_CLK_KEYPAD>;
327			pinctrl-names = "default";
328			pinctrl-0 = <&keypad_default_pins>;
329			linux,keymap =	<KEY_UP>,
330					<KEY_DOWN>,
331					<KEY_VOLUMEDOWN>,
332					<KEY_HOME>,
333					<KEY_RIGHT>,
334					<KEY_LEFT>,
335					<KEY_ENTER>,
336					<KEY_VOLUMEUP>,
337					<KEY_F6>,
338					<KEY_F8>,
339					<KEY_F9>,
340					<KEY_F10>,
341					<KEY_F1>,
342					<KEY_F2>,
343					<KEY_F3>,
344					<KEY_POWER>;
345		};
346
347		pwm0: pwm@80910000 {
348			compatible = "cirrus,ep9301-pwm";
349			reg = <0x80910000 0x10>;
350			clocks = <&syscon EP93XX_CLK_PWM>;
351			#pwm-cells = <3>;
352			status = "disabled";
353		};
354
355		pwm1: pwm@80910020 {
356			compatible = "cirrus,ep9301-pwm";
357			reg = <0x80910020 0x10>;
358			clocks = <&syscon EP93XX_CLK_PWM>;
359			#pwm-cells = <3>;
360			pinctrl-names = "default";
361			pinctrl-0 = <&pwm1_default_pins>;
362			status = "disabled";
363		};
364
365		rtc0: rtc@80920000 {
366			compatible = "cirrus,ep9301-rtc";
367			reg = <0x80920000 0x100>;
368		};
369
370		spi0: spi@808a0000 {
371			compatible = "cirrus,ep9301-spi";
372			reg = <0x808a0000 0x18>;
373			#address-cells = <1>;
374			#size-cells = <0>;
375			interrupt-parent = <&vic1>;
376			interrupts = <21>;
377			clocks = <&syscon EP93XX_CLK_SPI>;
378			pinctrl-names = "default";
379			pinctrl-0 = <&spi_default_pins>;
380			status = "disabled";
381		};
382
383		timer: timer@80810000 {
384			compatible = "cirrus,ep9301-timer";
385			reg = <0x80810000 0x100>;
386			interrupt-parent = <&vic1>;
387			interrupts = <19>;
388		};
389
390		uart0: serial@808c0000 {
391			compatible = "arm,pl011", "arm,primecell";
392			reg = <0x808c0000 0x1000>;
393			arm,primecell-periphid = <0x00041010>;
394			clocks = <&syscon EP93XX_CLK_UART1>, <&syscon EP93XX_CLK_UART>;
395			clock-names = "uartclk", "apb_pclk";
396			interrupt-parent = <&vic1>;
397			interrupts = <20>;
398			status = "disabled";
399		};
400
401		uart1: uart@808d0000 {
402			compatible = "arm,primecell";
403			reg = <0x808d0000 0x1000>;
404			arm,primecell-periphid = <0x00041010>;
405			clocks = <&syscon EP93XX_CLK_UART2>, <&syscon EP93XX_CLK_UART>;
406			clock-names = "apb:uart2", "apb_pclk";
407			interrupt-parent = <&vic1>;
408			interrupts = <22>;
409			status = "disabled";
410		};
411
412		uart2: uart@808b0000 {
413			compatible = "arm,primecell";
414			reg = <0x808b0000 0x1000>;
415			arm,primecell-periphid = <0x00041010>;
416			clocks = <&syscon EP93XX_CLK_UART3>, <&syscon EP93XX_CLK_UART>;
417			clock-names = "apb:uart3", "apb_pclk";
418			interrupt-parent = <&vic1>;
419			interrupts = <23>;
420			status = "disabled";
421		};
422
423		usb0: usb@80020000 {
424			compatible = "generic-ohci";
425			reg = <0x80020000 0x10000>;
426			interrupt-parent = <&vic1>;
427			interrupts = <24>;
428			clocks = <&syscon EP93XX_CLK_USB>;
429			status = "disabled";
430		};
431
432		watchdog0: watchdog@80940000 {
433			compatible = "cirrus,ep9301-wdt";
434			reg = <0x80940000 0x08>;
435		};
436	};
437
438	xtali: oscillator {
439		compatible = "fixed-clock";
440		#clock-cells = <0>;
441		clock-frequency = <14745600>;
442		clock-output-names = "xtali";
443	};
444};
445