Linux Audio

Check our new training course

Loading...
Note: File does not exist in v6.13.7.
  1/*
  2 * Copyright 2016 Linaro Ltd
  3 *
  4 * Permission is hereby granted, free of charge, to any person obtaining a copy
  5 * of this software and associated documentation files (the "Software"), to deal
  6 * in the Software without restriction, including without limitation the rights
  7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  8 * copies of the Software, and to permit persons to whom the Software is
  9 * furnished to do so, subject to the following conditions:
 10 *
 11 * The above copyright notice and this permission notice shall be included in
 12 * all copies or substantial portions of the Software.
 13 *
 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
 17 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 20 * THE SOFTWARE.
 21 */
 22
 23#include <dt-bindings/interrupt-controller/irq.h>
 24#include <dt-bindings/gpio/gpio.h>
 25
 26/ {
 27	#address-cells = <1>;
 28	#size-cells = <1>;
 29	compatible = "arm,realview-eb";
 30
 31	chosen { };
 32
 33	aliases {
 34		serial0 = &serial0;
 35		serial1 = &serial1;
 36		serial2 = &serial2;
 37		serial3 = &serial3;
 38		i2c0 = &i2c;
 39	};
 40
 41	memory {
 42		device_type = "memory";
 43		/* 128 MiB memory @ 0x0 */
 44		reg = <0x00000000 0x08000000>;
 45	};
 46
 47	/* The voltage to the MMC card is hardwired at 3.3V */
 48	vmmc: fixedregulator@0 {
 49		compatible = "regulator-fixed";
 50		regulator-name = "vmmc";
 51		regulator-min-microvolt = <3300000>;
 52		regulator-max-microvolt = <3300000>;
 53		regulator-boot-on;
 54        };
 55
 56	xtal24mhz: xtal24mhz@24M {
 57		#clock-cells = <0>;
 58		compatible = "fixed-clock";
 59		clock-frequency = <24000000>;
 60	};
 61
 62	timclk: timclk@1M {
 63		#clock-cells = <0>;
 64		compatible = "fixed-factor-clock";
 65		clock-div = <24>;
 66		clock-mult = <1>;
 67		clocks = <&xtal24mhz>;
 68	};
 69
 70	mclk: mclk@24M {
 71		#clock-cells = <0>;
 72		compatible = "fixed-factor-clock";
 73		clock-div = <1>;
 74		clock-mult = <1>;
 75		clocks = <&xtal24mhz>;
 76	};
 77
 78	kmiclk: kmiclk@24M {
 79		#clock-cells = <0>;
 80		compatible = "fixed-factor-clock";
 81		clock-div = <1>;
 82		clock-mult = <1>;
 83		clocks = <&xtal24mhz>;
 84	};
 85
 86	sspclk: sspclk@24M {
 87		#clock-cells = <0>;
 88		compatible = "fixed-factor-clock";
 89		clock-div = <1>;
 90		clock-mult = <1>;
 91		clocks = <&xtal24mhz>;
 92	};
 93
 94	uartclk: uartclk@24M {
 95		#clock-cells = <0>;
 96		compatible = "fixed-factor-clock";
 97		clock-div = <1>;
 98		clock-mult = <1>;
 99		clocks = <&xtal24mhz>;
100	};
101
102	wdogclk: wdogclk@24M {
103		#clock-cells = <0>;
104		compatible = "fixed-factor-clock";
105		clock-div = <1>;
106		clock-mult = <1>;
107		clocks = <&xtal24mhz>;
108	};
109
110	/* FIXME: this actually hangs off the PLL clocks */
111	pclk: pclk@0 {
112		#clock-cells = <0>;
113		compatible = "fixed-clock";
114		clock-frequency = <0>;
115	};
116
117	flash0@40000000 {
118		/* 2 * 32MiB NOR Flash memory */
119		compatible = "arm,versatile-flash", "cfi-flash";
120		reg = <0x40000000 0x04000000>;
121		bank-width = <4>;
122		partitions {
123			compatible = "arm,arm-firmware-suite";
124		};
125	};
126
127	flash1@44000000 {
128		/* 2 * 32MiB NOR Flash memory */
129		compatible = "arm,versatile-flash", "cfi-flash";
130		reg = <0x44000000 0x04000000>;
131		bank-width = <4>;
132		partitions {
133			compatible = "arm,arm-firmware-suite";
134		};
135	};
136
137	/* SMSC LAN91C111 ethernet with PHY and EEPROM */
138	ethernet: ethernet@4e000000 {
139		compatible = "smsc,lan91c111";
140		reg = <0x4e000000 0x10000>;
141		/*
142		 * This means the adapter can be accessed with 8, 16 or
143		 * 32 bit reads/writes.
144		 */
145		reg-io-width = <7>;
146	};
147
148	usb: usb@4f000000 {
149		compatible = "nxp,usb-isp1761";
150		reg = <0x4f000000 0x20000>;
151		dr_mode = "peripheral";
152	};
153
154	bridge {
155		compatible = "ti,ths8134a", "ti,ths8134";
156		#address-cells = <1>;
157		#size-cells = <0>;
158
159		ports {
160			#address-cells = <1>;
161			#size-cells = <0>;
162
163			port@0 {
164				reg = <0>;
165
166				vga_bridge_in: endpoint {
167					remote-endpoint = <&clcd_pads>;
168				};
169			};
170
171			port@1 {
172				reg = <1>;
173
174				vga_bridge_out: endpoint {
175					remote-endpoint = <&vga_con_in>;
176				};
177			};
178		};
179	};
180
181	vga {
182		compatible = "vga-connector";
183
184		port {
185			vga_con_in: endpoint {
186				remote-endpoint = <&vga_bridge_out>;
187			};
188		};
189	};
190
191	/* These peripherals are inside the FPGA */
192	fpga {
193		#address-cells = <1>;
194		#size-cells = <1>;
195		compatible = "simple-bus";
196		ranges;
197
198		syscon: syscon@10000000 {
199			compatible = "arm,realview-eb-syscon", "syscon", "simple-mfd";
200			reg = <0x10000000 0x1000>;
201
202			led@08.0 {
203				compatible = "register-bit-led";
204				offset = <0x08>;
205				mask = <0x01>;
206				label = "versatile:0";
207				linux,default-trigger = "heartbeat";
208				default-state = "on";
209			};
210			led@08.1 {
211				compatible = "register-bit-led";
212				offset = <0x08>;
213				mask = <0x02>;
214				label = "versatile:1";
215				linux,default-trigger = "mmc0";
216				default-state = "off";
217			};
218			led@08.2 {
219				compatible = "register-bit-led";
220				offset = <0x08>;
221				mask = <0x04>;
222				label = "versatile:2";
223				linux,default-trigger = "cpu0";
224				default-state = "off";
225			};
226			led@08.3 {
227				compatible = "register-bit-led";
228				offset = <0x08>;
229				mask = <0x08>;
230				label = "versatile:3";
231				default-state = "off";
232			};
233			led@08.4 {
234				compatible = "register-bit-led";
235				offset = <0x08>;
236				mask = <0x10>;
237				label = "versatile:4";
238				default-state = "off";
239			};
240			led@08.5 {
241				compatible = "register-bit-led";
242				offset = <0x08>;
243				mask = <0x20>;
244				label = "versatile:5";
245				default-state = "off";
246			};
247			led@08.6 {
248				compatible = "register-bit-led";
249				offset = <0x08>;
250				mask = <0x40>;
251				label = "versatile:6";
252				default-state = "off";
253			};
254			led@08.7 {
255				compatible = "register-bit-led";
256				offset = <0x08>;
257				mask = <0x80>;
258				label = "versatile:7";
259				default-state = "off";
260			};
261			oscclk0: osc0@0c {
262				compatible = "arm,syscon-icst307";
263				#clock-cells = <0>;
264				lock-offset = <0x20>;
265				vco-offset = <0x0C>;
266				clocks = <&xtal24mhz>;
267			};
268			oscclk1: osc1@10 {
269				compatible = "arm,syscon-icst307";
270				#clock-cells = <0>;
271				lock-offset = <0x20>;
272				vco-offset = <0x10>;
273				clocks = <&xtal24mhz>;
274			};
275			oscclk2: osc2@14 {
276				compatible = "arm,syscon-icst307";
277				#clock-cells = <0>;
278				lock-offset = <0x20>;
279				vco-offset = <0x14>;
280				clocks = <&xtal24mhz>;
281			};
282			oscclk3: osc3@18 {
283				compatible = "arm,syscon-icst307";
284				#clock-cells = <0>;
285				lock-offset = <0x20>;
286				vco-offset = <0x18>;
287				clocks = <&xtal24mhz>;
288			};
289			oscclk4: osc4@1c {
290				compatible = "arm,syscon-icst307";
291				#clock-cells = <0>;
292				lock-offset = <0x20>;
293				vco-offset = <0x1c>;
294				clocks = <&xtal24mhz>;
295			};
296		};
297
298		i2c: i2c@10002000 {
299			#address-cells = <1>;
300			#size-cells = <0>;
301			compatible = "arm,versatile-i2c";
302			reg = <0x10002000 0x1000>;
303
304			rtc@68 {
305				compatible = "dallas,ds1338";
306				reg = <0x68>;
307			};
308		};
309
310		aaci: aaci@10004000 {
311			compatible = "arm,pl041", "arm,primecell";
312			reg = <0x10004000 0x1000>;
313			clocks = <&pclk>;
314			clock-names = "apb_pclk";
315		};
316
317		mmc: mmcsd@10005000 {
318			compatible = "arm,pl18x", "arm,primecell";
319			reg = <0x10005000 0x1000>;
320
321			/* Due to frequent FIFO overruns, use just 500 kHz */
322			max-frequency = <500000>;
323			bus-width = <4>;
324			cap-sd-highspeed;
325			cap-mmc-highspeed;
326			clocks = <&mclk>, <&pclk>;
327			clock-names = "mclk", "apb_pclk";
328			vmmc-supply = <&vmmc>;
329			cd-gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;
330			wp-gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
331		};
332
333		kmi0: kmi@10006000 {
334			compatible = "arm,pl050", "arm,primecell";
335			reg = <0x10006000 0x1000>;
336			clocks = <&kmiclk>, <&pclk>;
337			clock-names = "KMIREFCLK", "apb_pclk";
338		};
339
340		kmi1: kmi@10007000 {
341			compatible = "arm,pl050", "arm,primecell";
342			reg = <0x10007000 0x1000>;
343			clocks = <&kmiclk>, <&pclk>;
344			clock-names = "KMIREFCLK", "apb_pclk";
345		};
346
347		charlcd: fpga_charlcd: charlcd@10008000 {
348			compatible = "arm,versatile-lcd";
349			reg = <0x10008000 0x1000>;
350			clocks = <&pclk>;
351			clock-names = "apb_pclk";
352		};
353
354		serial0: serial@10009000 {
355			compatible = "arm,pl011", "arm,primecell";
356			reg = <0x10009000 0x1000>;
357			clocks = <&uartclk>, <&pclk>;
358			clock-names = "uartclk", "apb_pclk";
359		};
360
361		serial1: serial@1000a000 {
362			compatible = "arm,pl011", "arm,primecell";
363			reg = <0x1000a000 0x1000>;
364			clocks = <&uartclk>, <&pclk>;
365			clock-names = "uartclk", "apb_pclk";
366		};
367
368		serial2: serial@1000b000 {
369			compatible = "arm,pl011", "arm,primecell";
370			reg = <0x1000b000 0x1000>;
371			clocks = <&uartclk>, <&pclk>;
372			clock-names = "uartclk", "apb_pclk";
373		};
374
375		serial3: serial@1000c000 {
376			compatible = "arm,pl011", "arm,primecell";
377			reg = <0x1000c000 0x1000>;
378			clocks = <&uartclk>, <&pclk>;
379			clock-names = "uartclk", "apb_pclk";
380		};
381
382		ssp: spi@1000d000 {
383			compatible = "arm,pl022", "arm,primecell";
384			reg = <0x1000d000 0x1000>;
385			clocks = <&sspclk>, <&pclk>;
386			clock-names = "SSPCLK", "apb_pclk";
387		};
388
389		wdog: watchdog@10010000 {
390			compatible = "arm,sp805", "arm,primecell";
391			reg = <0x10010000 0x1000>;
392			clocks = <&wdogclk>, <&pclk>;
393			clock-names = "wdog_clk", "apb_pclk";
394			status = "disabled";
395		};
396
397		timer01: timer@10011000 {
398			compatible = "arm,sp804", "arm,primecell";
399			reg = <0x10011000 0x1000>;
400			clocks = <&timclk>, <&timclk>, <&pclk>;
401			clock-names = "timer1", "timer2", "apb_pclk";
402		};
403
404		timer23: timer@10012000 {
405			compatible = "arm,sp804", "arm,primecell";
406			reg = <0x10012000 0x1000>;
407			clocks = <&timclk>, <&timclk>, <&pclk>;
408			clock-names = "timer1", "timer2", "apb_pclk";
409		};
410
411		gpio0: gpio@10013000 {
412			compatible = "arm,pl061", "arm,primecell";
413			reg = <0x10013000 0x1000>;
414			gpio-controller;
415			#gpio-cells = <2>;
416			interrupt-controller;
417			#interrupt-cells = <2>;
418			clocks = <&pclk>;
419			clock-names = "apb_pclk";
420		};
421
422		gpio1: gpio@10014000 {
423			compatible = "arm,pl061", "arm,primecell";
424			reg = <0x10014000 0x1000>;
425			gpio-controller;
426			#gpio-cells = <2>;
427			interrupt-controller;
428			#interrupt-cells = <2>;
429			clocks = <&pclk>;
430			clock-names = "apb_pclk";
431		};
432
433		gpio2: gpio@10015000 {
434			compatible = "arm,pl061", "arm,primecell";
435			reg = <0x10015000 0x1000>;
436			gpio-controller;
437			#gpio-cells = <2>;
438			interrupt-controller;
439			#interrupt-cells = <2>;
440			clocks = <&pclk>;
441			clock-names = "apb_pclk";
442		};
443
444		rtc: rtc@10017000 {
445			compatible = "arm,pl031", "arm,primecell";
446			reg = <0x10017000 0x1000>;
447			clocks = <&pclk>;
448			clock-names = "apb_pclk";
449		};
450
451		clcd: clcd@10020000 {
452			compatible = "arm,pl111", "arm,primecell";
453			reg = <0x10020000 0x1000>;
454			interrupt-names = "combined";
455			clocks = <&oscclk0>, <&pclk>;
456			clock-names = "clcdclk", "apb_pclk";
457			/* 1024x768 16bpp @65MHz works fine */
458			max-memory-bandwidth = <95000000>;
459
460			port {
461				clcd_pads: endpoint {
462					remote-endpoint = <&vga_bridge_in>;
463					arm,pl11x,tft-r0g0b0-pads = <0 8 16>;
464				};
465			};
466		};
467	};
468};