1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * wm8650.dtsi - Device tree file for Wondermedia WM8650 SoC
4 *
5 * Copyright (C) 2012 Tony Prisk <linux@prisktech.co.nz>
6 */
7
8/ {
9	#address-cells = <1>;
10	#size-cells = <1>;
11	compatible = "wm,wm8650";
12
13	cpus {
14		#address-cells = <0>;
15		#size-cells = <0>;
16
17		cpu {
18			device_type = "cpu";
19			compatible = "arm,arm926ej-s";
20		};
21	};
22
23	memory {
24		device_type = "memory";
25		reg = <0x0 0x0>;
26	};
27
28 	aliases {
29		serial0 = &uart0;
30		serial1 = &uart1;
31	};
32
33	soc {
34		#address-cells = <1>;
35		#size-cells = <1>;
36		compatible = "simple-bus";
37		ranges;
38		interrupt-parent = <&intc0>;
39
40		intc0: interrupt-controller@d8140000 {
41			compatible = "via,vt8500-intc";
42			interrupt-controller;
43			reg = <0xd8140000 0x10000>;
44			#interrupt-cells = <1>;
45		};
46
47		/* Secondary IC cascaded to intc0 */
48		intc1: interrupt-controller@d8150000 {
49			compatible = "via,vt8500-intc";
50			interrupt-controller;
51			#interrupt-cells = <1>;
52			reg = <0xD8150000 0x10000>;
53			interrupts = <56 57 58 59 60 61 62 63>;
54		};
55
56		pinctrl: pinctrl@d8110000 {
57			compatible = "wm,wm8650-pinctrl";
58			reg = <0xd8110000 0x10000>;
59			interrupt-controller;
60			#interrupt-cells = <2>;
61			gpio-controller;
62			#gpio-cells = <2>;
63		};
64
65		pmc@d8130000 {
66			compatible = "via,vt8500-pmc";
67			reg = <0xd8130000 0x1000>;
68
69			clocks {
70				#address-cells = <1>;
71				#size-cells = <0>;
72
73				ref25: ref25M {
74					#clock-cells = <0>;
75					compatible = "fixed-clock";
76					clock-frequency = <25000000>;
77				};
78
79				ref24: ref24M {
80					#clock-cells = <0>;
81					compatible = "fixed-clock";
82					clock-frequency = <24000000>;
83				};
84
85				plla: plla {
86					#clock-cells = <0>;
87					compatible = "wm,wm8650-pll-clock";
88					clocks = <&ref25>;
89					reg = <0x200>;
90				};
91
92				pllb: pllb {
93					#clock-cells = <0>;
94					compatible = "wm,wm8650-pll-clock";
95					clocks = <&ref25>;
96					reg = <0x204>;
97				};
98
99				pllc: pllc {
100					#clock-cells = <0>;
101					compatible = "wm,wm8650-pll-clock";
102					clocks = <&ref25>;
103					reg = <0x208>;
104				};
105
106				plld: plld {
107					#clock-cells = <0>;
108					compatible = "wm,wm8650-pll-clock";
109					clocks = <&ref25>;
110					reg = <0x20c>;
111				};
112
113				plle: plle {
114					#clock-cells = <0>;
115					compatible = "wm,wm8650-pll-clock";
116					clocks = <&ref25>;
117					reg = <0x210>;
118				};
119
120				clkarm: arm {
121					#clock-cells = <0>;
122					compatible = "via,vt8500-device-clock";
123					clocks = <&plla>;
124					divisor-reg = <0x300>;
125				};
126
127				clkahb: ahb {
128					#clock-cells = <0>;
129					compatible = "via,vt8500-device-clock";
130					clocks = <&pllb>;
131					divisor-reg = <0x304>;
132				};
133
134				clkapb: apb {
135					#clock-cells = <0>;
136					compatible = "via,vt8500-device-clock";
137					clocks = <&pllb>;
138					divisor-reg = <0x320>;
139				};
140
141				clkddr: ddr {
142					#clock-cells = <0>;
143					compatible = "via,vt8500-device-clock";
144					clocks = <&plld>;
145					divisor-reg = <0x310>;
146				};
147
148				clkuart0: uart0 {
149 					#clock-cells = <0>;
150 					compatible = "via,vt8500-device-clock";
151					clocks = <&ref24>;
152					enable-reg = <0x250>;
153					enable-bit = <1>;
154 				};
155
156				clkuart1: uart1 {
157					#clock-cells = <0>;
158					compatible = "via,vt8500-device-clock";
159					clocks = <&ref24>;
160					enable-reg = <0x250>;
161					enable-bit = <2>;
162				};
163
164				clksdhc: sdhc {
165					#clock-cells = <0>;
166					compatible = "via,vt8500-device-clock";
167					clocks = <&pllb>;
168					divisor-reg = <0x328>;
169					divisor-mask = <0x3f>;
170					enable-reg = <0x254>;
171					enable-bit = <18>;
172				};
173			};
174		};
175
176		timer@d8130100 {
177			compatible = "via,vt8500-timer";
178			reg = <0xd8130100 0x28>;
179			interrupts = <36>;
180		};
181
182		ehci@d8007900 {
183			compatible = "via,vt8500-ehci";
184			reg = <0xd8007900 0x200>;
185			interrupts = <43>;
186		};
187
188		uhci@d8007b00 {
189			compatible = "platform-uhci";
190			reg = <0xd8007b00 0x200>;
191			interrupts = <43>;
192		};
193
194		sdhc@d800a000 {
195			compatible = "wm,wm8505-sdhc";
196			reg = <0xd800a000 0x400>;
197			interrupts = <20>, <21>;
198			clocks = <&clksdhc>;
199			bus-width = <4>;
200			sdon-inverted;
201		};
202
203		fb: fb@d8050800 {
204			compatible = "wm,wm8505-fb";
205			reg = <0xd8050800 0x200>;
206		};
207
208		ge_rops@d8050400 {
209			compatible = "wm,prizm-ge-rops";
210			reg = <0xd8050400 0x100>;
211		};
212
213		uart0: serial@d8200000 {
214			compatible = "via,vt8500-uart";
215			reg = <0xd8200000 0x1040>;
216			interrupts = <32>;
217			clocks = <&clkuart0>;
218			status = "disabled";
219		};
220
221		uart1: serial@d82b0000 {
222			compatible = "via,vt8500-uart";
223			reg = <0xd82b0000 0x1040>;
224			interrupts = <33>;
225			clocks = <&clkuart1>;
226			status = "disabled";
227		};
228
229		rtc@d8100000 {
230			compatible = "via,vt8500-rtc";
231			reg = <0xd8100000 0x10000>;
232			interrupts = <48>;
233		};
234
235		ethernet@d8004000 {
236			compatible = "via,vt8500-rhine";
237			reg = <0xd8004000 0x100>;
238			interrupts = <10>;
239		};
240	};
241};
242