Linux Audio

Check our new training course

Real-Time Linux with PREEMPT_RT training

Feb 18-20, 2025
Register
Loading...
v5.4
  1// SPDX-License-Identifier: (GPL-2.0 OR MIT)
  2/*
  3 * Device Tree Include file for Marvell Armada 1500-mini (Berlin BG2CD) SoC
  4 *
  5 * Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
  6 *
  7 * based on GPL'ed 2.6 kernel sources
  8 *  (c) Marvell International Ltd.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  9 */
 10
 
 11#include <dt-bindings/clock/berlin2.h>
 12#include <dt-bindings/interrupt-controller/arm-gic.h>
 13
 14/ {
 15	model = "Marvell Armada 1500-mini (BG2CD) SoC";
 16	compatible = "marvell,berlin2cd", "marvell,berlin";
 17	#address-cells = <1>;
 18	#size-cells = <1>;
 19
 20	aliases {
 21		serial0 = &uart0;
 22		serial1 = &uart1;
 23	};
 24
 25	cpus {
 26		#address-cells = <1>;
 27		#size-cells = <0>;
 28
 29		cpu: cpu@0 {
 30			compatible = "arm,cortex-a9";
 31			device_type = "cpu";
 32			next-level-cache = <&l2>;
 33			reg = <0>;
 34
 35			clocks = <&chip_clk CLKID_CPU>;
 36			clock-latency = <100000>;
 37			operating-points = <
 38				/* kHz    uV */
 39				800000  1200000
 40				600000  1200000
 41			>;
 42		};
 43	};
 44
 45	pmu {
 46		compatible = "arm,cortex-a9-pmu";
 47		interrupt-parent = <&gic>;
 48		interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
 49	};
 50
 51	refclk: oscillator {
 52		compatible = "fixed-clock";
 53		#clock-cells = <0>;
 54		clock-frequency = <25000000>;
 55	};
 56
 57	soc@f7000000 {
 58		compatible = "simple-bus";
 59		#address-cells = <1>;
 60		#size-cells = <1>;
 61		interrupt-parent = <&gic>;
 62
 63		ranges = <0 0xf7000000 0x1000000>;
 64
 
 
 
 
 
 65		sdhci0: sdhci@ab0000 {
 66			compatible = "mrvl,pxav3-mmc";
 67			reg = <0xab0000 0x200>;
 68			clocks = <&chip_clk CLKID_SDIO0XIN>, <&chip_clk CLKID_SDIO0>;
 69			clock-names = "io", "core";
 70			interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
 71			status = "disabled";
 72		};
 73
 74		l2: l2-cache-controller@ac0000 {
 75			compatible = "arm,pl310-cache";
 76			reg = <0xac0000 0x1000>;
 77			cache-unified;
 78			cache-level = <2>;
 79		};
 80
 81		snoop-control-unit@ad0000 {
 82			compatible = "arm,cortex-a9-scu";
 83			reg = <0xad0000 0x100>;
 84		};
 85
 86		gic: interrupt-controller@ad1000 {
 87			compatible = "arm,cortex-a9-gic";
 88			reg = <0xad1000 0x1000>, <0xad0100 0x0100>;
 89			interrupt-controller;
 90			#interrupt-cells = <3>;
 91		};
 92
 93		global-timer@ad0200 {
 94			compatible = "arm,cortex-a9-global-timer";
 95			reg = <0xad0200 0x20>;
 96			interrupts = <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_EDGE_RISING)>;
 97			clocks = <&chip_clk CLKID_TWD>;
 98		};
 99
100		local-timer@ad0600 {
101			compatible = "arm,cortex-a9-twd-timer";
102			reg = <0xad0600 0x20>;
103			interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_EDGE_RISING)>;
104			clocks = <&chip_clk CLKID_TWD>;
105		};
106
107		local-wdt@ad0620 {
108			compatible = "arm,cortex-a9-twd-wdt";
109			reg = <0xad0620 0x20>;
110			interrupts = <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_EDGE_RISING)>;
111			clocks = <&chip_clk CLKID_TWD>;
112		};
113
114		usb_phy0: usb-phy@b74000 {
115			compatible = "marvell,berlin2cd-usb-phy";
116			reg = <0xb74000 0x128>;
117			#phy-cells = <0>;
118			resets = <&chip_rst 0x178 23>;
119			status = "disabled";
120		};
121
122		usb_phy1: usb-phy@b78000 {
123			compatible = "marvell,berlin2cd-usb-phy";
124			reg = <0xb78000 0x128>;
125			#phy-cells = <0>;
126			resets = <&chip_rst 0x178 24>;
127			status = "disabled";
128		};
129
130		eth1: ethernet@b90000 {
131			compatible = "marvell,pxa168-eth";
132			reg = <0xb90000 0x10000>;
133			clocks = <&chip_clk CLKID_GETH1>;
134			interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
135			/* set by bootloader */
136			local-mac-address = [00 00 00 00 00 00];
137			#address-cells = <1>;
138			#size-cells = <0>;
139			phy-connection-type = "mii";
140			phy-handle = <&ethphy1>;
141			status = "disabled";
142
143			ethphy1: ethernet-phy@0 {
144				reg = <0>;
145			};
146		};
147
148		eth0: ethernet@e50000 {
149			compatible = "marvell,pxa168-eth";
150			reg = <0xe50000 0x10000>;
151			clocks = <&chip_clk CLKID_GETH0>;
152			interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
153			/* set by bootloader */
154			local-mac-address = [00 00 00 00 00 00];
155			#address-cells = <1>;
156			#size-cells = <0>;
157			phy-connection-type = "mii";
158			phy-handle = <&ethphy0>;
159			status = "disabled";
160
161			ethphy0: ethernet-phy@0 {
162				reg = <0>;
163			};
164		};
165
166		apb@e80000 {
167			compatible = "simple-bus";
168			#address-cells = <1>;
169			#size-cells = <1>;
170
171			ranges = <0 0xe80000 0x10000>;
172			interrupt-parent = <&aic>;
173
174			gpio0: gpio@400 {
175				compatible = "snps,dw-apb-gpio";
176				reg = <0x0400 0x400>;
177				#address-cells = <1>;
178				#size-cells = <0>;
179
180				porta: gpio-port@0 {
181					compatible = "snps,dw-apb-gpio-port";
182					gpio-controller;
183					#gpio-cells = <2>;
184					snps,nr-gpios = <8>;
185					reg = <0>;
186					interrupt-controller;
187					#interrupt-cells = <2>;
188					interrupts = <0>;
189				};
190			};
191
192			gpio1: gpio@800 {
193				compatible = "snps,dw-apb-gpio";
194				reg = <0x0800 0x400>;
195				#address-cells = <1>;
196				#size-cells = <0>;
197
198				portb: gpio-port@1 {
199					compatible = "snps,dw-apb-gpio-port";
200					gpio-controller;
201					#gpio-cells = <2>;
202					snps,nr-gpios = <8>;
203					reg = <0>;
204					interrupt-controller;
205					#interrupt-cells = <2>;
206					interrupts = <1>;
207				};
208			};
209
210			gpio2: gpio@c00 {
211				compatible = "snps,dw-apb-gpio";
212				reg = <0x0c00 0x400>;
213				#address-cells = <1>;
214				#size-cells = <0>;
215
216				portc: gpio-port@2 {
217					compatible = "snps,dw-apb-gpio-port";
218					gpio-controller;
219					#gpio-cells = <2>;
220					snps,nr-gpios = <8>;
221					reg = <0>;
222					interrupt-controller;
223					#interrupt-cells = <2>;
224					interrupts = <2>;
225				};
226			};
227
228			gpio3: gpio@1000 {
229				compatible = "snps,dw-apb-gpio";
230				reg = <0x1000 0x400>;
231				#address-cells = <1>;
232				#size-cells = <0>;
233
234				portd: gpio-port@3 {
235					compatible = "snps,dw-apb-gpio-port";
236					gpio-controller;
237					#gpio-cells = <2>;
238					snps,nr-gpios = <8>;
239					reg = <0>;
240					interrupt-controller;
241					#interrupt-cells = <2>;
242					interrupts = <3>;
243				};
244			};
245
246			i2c0: i2c@1400 {
247				compatible = "snps,designware-i2c";
248				#address-cells = <1>;
249				#size-cells = <0>;
250				reg = <0x1400 0x100>;
251				interrupts = <16>;
252				clocks = <&chip_clk CLKID_CFG>;
253				status = "disabled";
254			};
255
256			i2c1: i2c@1800 {
257				compatible = "snps,designware-i2c";
258				#address-cells = <1>;
259				#size-cells = <0>;
260				reg = <0x1800 0x100>;
261				interrupts = <17>;
262				clocks = <&chip_clk CLKID_CFG>;
263				status = "disabled";
264			};
265
266			spi0: spi@1c00 {
267				compatible = "snps,dw-apb-ssi";
268				#address-cells = <1>;
269				#size-cells = <0>;
270				reg = <0x1c00 0x100>;
271				interrupts = <4>;
272				clocks = <&chip_clk CLKID_CFG>;
273				status = "disabled";
274			};
275
276			wdt4: watchdog@2000 {
277				compatible = "snps,dw-wdt";
278				reg = <0x2000 0x100>;
279				clocks = <&chip_clk CLKID_CFG>;
280				interrupts = <5>;
281				status = "disabled";
282			};
283
284			wdt5: watchdog@2400 {
285				compatible = "snps,dw-wdt";
286				reg = <0x2400 0x100>;
287				clocks = <&chip_clk CLKID_CFG>;
288				interrupts = <6>;
289				status = "disabled";
290			};
291
292			wdt6: watchdog@2800 {
293				compatible = "snps,dw-wdt";
294				reg = <0x2800 0x100>;
295				clocks = <&chip_clk CLKID_CFG>;
296				interrupts = <7>;
297				status = "disabled";
298			};
299
300			timer0: timer@2c00 {
301				compatible = "snps,dw-apb-timer";
302				reg = <0x2c00 0x14>;
303				interrupts = <8>;
304				clocks = <&chip_clk CLKID_CFG>;
305				clock-names = "timer";
306				status = "okay";
307			};
308
309			timer1: timer@2c14 {
310				compatible = "snps,dw-apb-timer";
311				reg = <0x2c14 0x14>;
312				interrupts = <9>;
313				clocks = <&chip_clk CLKID_CFG>;
314				clock-names = "timer";
315				status = "okay";
316			};
317
318			timer2: timer@2c28 {
319				compatible = "snps,dw-apb-timer";
320				reg = <0x2c28 0x14>;
321				interrupts = <10>;
322				clocks = <&chip_clk CLKID_CFG>;
323				clock-names = "timer";
324				status = "disabled";
325			};
326
327			timer3: timer@2c3c {
328				compatible = "snps,dw-apb-timer";
329				reg = <0x2c3c 0x14>;
330				interrupts = <11>;
331				clocks = <&chip_clk CLKID_CFG>;
332				clock-names = "timer";
333				status = "disabled";
334			};
335
336			timer4: timer@2c50 {
337				compatible = "snps,dw-apb-timer";
338				reg = <0x2c50 0x14>;
339				interrupts = <12>;
340				clocks = <&chip_clk CLKID_CFG>;
341				clock-names = "timer";
342				status = "disabled";
343			};
344
345			timer5: timer@2c64 {
346				compatible = "snps,dw-apb-timer";
347				reg = <0x2c64 0x14>;
348				interrupts = <13>;
349				clocks = <&chip_clk CLKID_CFG>;
350				clock-names = "timer";
351				status = "disabled";
352			};
353
354			timer6: timer@2c78 {
355				compatible = "snps,dw-apb-timer";
356				reg = <0x2c78 0x14>;
357				interrupts = <14>;
358				clocks = <&chip_clk CLKID_CFG>;
359				clock-names = "timer";
360				status = "disabled";
361			};
362
363			timer7: timer@2c8c {
364				compatible = "snps,dw-apb-timer";
365				reg = <0x2c8c 0x14>;
366				interrupts = <15>;
367				clocks = <&chip_clk CLKID_CFG>;
368				clock-names = "timer";
369				status = "disabled";
370			};
371
372			aic: interrupt-controller@3000 {
373				compatible = "snps,dw-apb-ictl";
374				reg = <0x3000 0xc00>;
375				interrupt-controller;
376				#interrupt-cells = <1>;
377				interrupt-parent = <&gic>;
378				interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
379			};
380		};
381
382		chip: chip-control@ea0000 {
383			compatible = "simple-mfd", "syscon";
384			reg = <0xea0000 0x400>;
385
386			chip_clk: clock {
387				compatible = "marvell,berlin2-clk";
388				#clock-cells = <1>;
389				clocks = <&refclk>;
390				clock-names = "refclk";
391			};
392
393			soc_pinctrl: pin-controller {
394				compatible = "marvell,berlin2cd-soc-pinctrl";
395
396				uart0_pmux: uart0-pmux {
397					groups = "G6";
398					function = "uart0";
399				};
400			};
401
402			chip_rst: reset {
403				compatible = "marvell,berlin2-reset";
404				#reset-cells = <2>;
405			};
406		};
407
408		usb0: usb@ed0000 {
409			compatible = "chipidea,usb2";
410			reg = <0xed0000 0x200>;
411			interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
412			clocks = <&chip_clk CLKID_USB0>;
413			phys = <&usb_phy0>;
414			phy-names = "usb-phy";
415			status = "disabled";
416		};
417
418		usb1: usb@ee0000 {
419			compatible = "chipidea,usb2";
420			reg = <0xee0000 0x200>;
421			interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
422			clocks = <&chip_clk CLKID_USB1>;
423			phys = <&usb_phy1>;
424			phy-names = "usb-phy";
425			status = "disabled";
426		};
427
428		pwm: pwm@f20000 {
429			compatible = "marvell,berlin-pwm";
430			reg = <0xf20000 0x40>;
431			clocks = <&chip_clk CLKID_CFG>;
432			#pwm-cells = <3>;
433		};
434
435		apb@fc0000 {
436			compatible = "simple-bus";
437			#address-cells = <1>;
438			#size-cells = <1>;
439
440			ranges = <0 0xfc0000 0x10000>;
441			interrupt-parent = <&sic>;
442
443			wdt0: watchdog@1000 {
444				compatible = "snps,dw-wdt";
445				reg = <0x1000 0x100>;
446				clocks = <&refclk>;
447				interrupts = <0>;
448			};
449
450			wdt1: watchdog@2000 {
451				compatible = "snps,dw-wdt";
452				reg = <0x2000 0x100>;
453				clocks = <&refclk>;
454				interrupts = <1>;
455				status = "disabled";
456			};
457
458			wdt2: watchdog@3000 {
459				compatible = "snps,dw-wdt";
460				reg = <0x3000 0x100>;
461				clocks = <&refclk>;
462				interrupts = <2>;
463				status = "disabled";
464			};
465
466			sm_gpio1: gpio@5000 {
467				compatible = "snps,dw-apb-gpio";
468				reg = <0x5000 0x400>;
469				#address-cells = <1>;
470				#size-cells = <0>;
471
472				portf: gpio-port@5 {
473					compatible = "snps,dw-apb-gpio-port";
474					gpio-controller;
475					#gpio-cells = <2>;
476					snps,nr-gpios = <8>;
477					reg = <0>;
478				};
479			};
480
481			spi1: spi@6000 {
482				compatible = "snps,dw-apb-ssi";
483				#address-cells = <1>;
484				#size-cells = <0>;
485				reg = <0x6000 0x100>;
486				clocks = <&refclk>;
487				interrupts = <5>;
488				status = "disabled";
489			};
490
491			i2c2: i2c@7000 {
492				compatible = "snps,designware-i2c";
493				#address-cells = <1>;
494				#size-cells = <0>;
495				reg = <0x7000 0x100>;
496				interrupts = <6>;
497				clocks = <&refclk>;
498				status = "disabled";
499			};
500
501			i2c3: i2c@8000 {
502				compatible = "snps,designware-i2c";
503				#address-cells = <1>;
504				#size-cells = <0>;
505				reg = <0x8000 0x100>;
506				interrupts = <7>;
507				clocks = <&refclk>;
508				status = "disabled";
509			};
510
511			sm_gpio0: gpio@c000 {
512				compatible = "snps,dw-apb-gpio";
513				reg = <0xc000 0x400>;
514				#address-cells = <1>;
515				#size-cells = <0>;
516
517				porte: gpio-port@4 {
518					compatible = "snps,dw-apb-gpio-port";
519					gpio-controller;
520					#gpio-cells = <2>;
521					snps,nr-gpios = <8>;
522					reg = <0>;
523				};
524			};
525
526			uart0: serial@9000 {
527				compatible = "snps,dw-apb-uart";
528				reg = <0x9000 0x100>;
529				reg-shift = <2>;
530				reg-io-width = <1>;
531				interrupts = <8>;
532				clocks = <&refclk>;
533				pinctrl-0 = <&uart0_pmux>;
534				pinctrl-names = "default";
535				status = "disabled";
536			};
537
538			uart1: serial@a000 {
539				compatible = "snps,dw-apb-uart";
540				reg = <0xa000 0x100>;
541				reg-shift = <2>;
542				reg-io-width = <1>;
543				interrupts = <9>;
544				clocks = <&refclk>;
545				status = "disabled";
546			};
547
548			uart2: serial@b000 {
549				compatible = "snps,dw-apb-uart";
550				reg = <0xb000 0x100>;
551				reg-shift = <2>;
552				reg-io-width = <1>;
553				interrupts = <10>;
554				clocks = <&refclk>;
555				status = "disabled";
556			};
557
558			sysctrl: system-controller@d000 {
559				compatible = "simple-mfd", "syscon";
560				reg = <0xd000 0x100>;
561
562				sys_pinctrl: pin-controller {
563					compatible = "marvell,berlin2cd-system-pinctrl";
564				};
565
566				adc: adc {
567					compatible = "marvell,berlin2-adc";
568					interrupts = <12>, <14>;
569					interrupt-names = "adc", "tsen";
570				};
571			};
572
573			sic: interrupt-controller@e000 {
574				compatible = "snps,dw-apb-ictl";
575				reg = <0xe000 0x400>;
576				interrupt-controller;
577				#interrupt-cells = <1>;
578				interrupt-parent = <&gic>;
579				interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
580			};
581		};
582	};
583};
v4.6
 
  1/*
  2 * Device Tree Include file for Marvell Armada 1500-mini (Berlin BG2CD) SoC
  3 *
  4 * Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
  5 *
  6 * based on GPL'ed 2.6 kernel sources
  7 *  (c) Marvell International Ltd.
  8 *
  9 * This file is dual-licensed: you can use it either under the terms
 10 * of the GPL or the X11 license, at your option. Note that this dual
 11 * licensing only applies to this file, and not this project as a
 12 * whole.
 13 *
 14 *  a) This file is licensed under the terms of the GNU General Public
 15 *     License version 2. This program is licensed "as is" without any
 16 *     warranty of any kind, whether express or implied.
 17 *
 18 * Or, alternatively,
 19 *
 20 *  b) Permission is hereby granted, free of charge, to any person
 21 *     obtaining a copy of this software and associated documentation
 22 *     files (the "Software"), to deal in the Software without
 23 *     restriction, including without limitation the rights to use,
 24 *     copy, modify, merge, publish, distribute, sublicense, and/or
 25 *     sell copies of the Software, and to permit persons to whom the
 26 *     Software is furnished to do so, subject to the following
 27 *     conditions:
 28 *
 29 *     The above copyright notice and this permission notice shall be
 30 *     included in all copies or substantial portions of the Software.
 31 *
 32 *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 33 *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 34 *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 35 *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 36 *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 37 *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 38 *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 39 *     OTHER DEALINGS IN THE SOFTWARE.
 40 */
 41
 42#include "skeleton.dtsi"
 43#include <dt-bindings/clock/berlin2.h>
 44#include <dt-bindings/interrupt-controller/arm-gic.h>
 45
 46/ {
 47	model = "Marvell Armada 1500-mini (BG2CD) SoC";
 48	compatible = "marvell,berlin2cd", "marvell,berlin";
 
 
 49
 50	aliases {
 51		serial0 = &uart0;
 52		serial1 = &uart1;
 53	};
 54
 55	cpus {
 56		#address-cells = <1>;
 57		#size-cells = <0>;
 58
 59		cpu@0 {
 60			compatible = "arm,cortex-a9";
 61			device_type = "cpu";
 62			next-level-cache = <&l2>;
 63			reg = <0>;
 64
 65			clocks = <&chip_clk CLKID_CPU>;
 66			clock-latency = <100000>;
 67			operating-points = <
 68				/* kHz    uV */
 69				800000  1200000
 70				600000  1200000
 71			>;
 72		};
 73	};
 74
 
 
 
 
 
 
 75	refclk: oscillator {
 76		compatible = "fixed-clock";
 77		#clock-cells = <0>;
 78		clock-frequency = <25000000>;
 79	};
 80
 81	soc {
 82		compatible = "simple-bus";
 83		#address-cells = <1>;
 84		#size-cells = <1>;
 85		interrupt-parent = <&gic>;
 86
 87		ranges = <0 0xf7000000 0x1000000>;
 88
 89		pmu {
 90			compatible = "arm,cortex-a9-pmu";
 91			interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
 92		};
 93
 94		sdhci0: sdhci@ab0000 {
 95			compatible = "mrvl,pxav3-mmc";
 96			reg = <0xab0000 0x200>;
 97			clocks = <&chip_clk CLKID_SDIO0XIN>, <&chip_clk CLKID_SDIO0>;
 98			clock-names = "io", "core";
 99			interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
100			status = "disabled";
101		};
102
103		l2: l2-cache-controller@ac0000 {
104			compatible = "arm,pl310-cache";
105			reg = <0xac0000 0x1000>;
106			cache-unified;
107			cache-level = <2>;
108		};
109
 
 
 
 
 
110		gic: interrupt-controller@ad1000 {
111			compatible = "arm,cortex-a9-gic";
112			reg = <0xad1000 0x1000>, <0xad0100 0x0100>;
113			interrupt-controller;
114			#interrupt-cells = <3>;
115		};
116
 
 
 
 
 
 
 
117		local-timer@ad0600 {
118			compatible = "arm,cortex-a9-twd-timer";
119			reg = <0xad0600 0x20>;
120			interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_HIGH)>;
 
 
 
 
 
 
 
121			clocks = <&chip_clk CLKID_TWD>;
122		};
123
124		usb_phy0: usb-phy@b74000 {
125			compatible = "marvell,berlin2cd-usb-phy";
126			reg = <0xb74000 0x128>;
127			#phy-cells = <0>;
128			resets = <&chip_rst 0x178 23>;
129			status = "disabled";
130		};
131
132		usb_phy1: usb-phy@b78000 {
133			compatible = "marvell,berlin2cd-usb-phy";
134			reg = <0xb78000 0x128>;
135			#phy-cells = <0>;
136			resets = <&chip_rst 0x178 24>;
137			status = "disabled";
138		};
139
140		eth1: ethernet@b90000 {
141			compatible = "marvell,pxa168-eth";
142			reg = <0xb90000 0x10000>;
143			clocks = <&chip_clk CLKID_GETH1>;
144			interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
145			/* set by bootloader */
146			local-mac-address = [00 00 00 00 00 00];
147			#address-cells = <1>;
148			#size-cells = <0>;
149			phy-connection-type = "mii";
150			phy-handle = <&ethphy1>;
151			status = "disabled";
152
153			ethphy1: ethernet-phy@0 {
154				reg = <0>;
155			};
156		};
157
158		eth0: ethernet@e50000 {
159			compatible = "marvell,pxa168-eth";
160			reg = <0xe50000 0x10000>;
161			clocks = <&chip_clk CLKID_GETH0>;
162			interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
163			/* set by bootloader */
164			local-mac-address = [00 00 00 00 00 00];
165			#address-cells = <1>;
166			#size-cells = <0>;
167			phy-connection-type = "mii";
168			phy-handle = <&ethphy0>;
169			status = "disabled";
170
171			ethphy0: ethernet-phy@0 {
172				reg = <0>;
173			};
174		};
175
176		apb@e80000 {
177			compatible = "simple-bus";
178			#address-cells = <1>;
179			#size-cells = <1>;
180
181			ranges = <0 0xe80000 0x10000>;
182			interrupt-parent = <&aic>;
183
184			gpio0: gpio@0400 {
185				compatible = "snps,dw-apb-gpio";
186				reg = <0x0400 0x400>;
187				#address-cells = <1>;
188				#size-cells = <0>;
189
190				porta: gpio-port@0 {
191					compatible = "snps,dw-apb-gpio-port";
192					gpio-controller;
193					#gpio-cells = <2>;
194					snps,nr-gpios = <8>;
195					reg = <0>;
196					interrupt-controller;
197					#interrupt-cells = <2>;
198					interrupts = <0>;
199				};
200			};
201
202			gpio1: gpio@0800 {
203				compatible = "snps,dw-apb-gpio";
204				reg = <0x0800 0x400>;
205				#address-cells = <1>;
206				#size-cells = <0>;
207
208				portb: gpio-port@1 {
209					compatible = "snps,dw-apb-gpio-port";
210					gpio-controller;
211					#gpio-cells = <2>;
212					snps,nr-gpios = <8>;
213					reg = <0>;
214					interrupt-controller;
215					#interrupt-cells = <2>;
216					interrupts = <1>;
217				};
218			};
219
220			gpio2: gpio@0c00 {
221				compatible = "snps,dw-apb-gpio";
222				reg = <0x0c00 0x400>;
223				#address-cells = <1>;
224				#size-cells = <0>;
225
226				portc: gpio-port@2 {
227					compatible = "snps,dw-apb-gpio-port";
228					gpio-controller;
229					#gpio-cells = <2>;
230					snps,nr-gpios = <8>;
231					reg = <0>;
232					interrupt-controller;
233					#interrupt-cells = <2>;
234					interrupts = <2>;
235				};
236			};
237
238			gpio3: gpio@1000 {
239				compatible = "snps,dw-apb-gpio";
240				reg = <0x1000 0x400>;
241				#address-cells = <1>;
242				#size-cells = <0>;
243
244				portd: gpio-port@3 {
245					compatible = "snps,dw-apb-gpio-port";
246					gpio-controller;
247					#gpio-cells = <2>;
248					snps,nr-gpios = <8>;
249					reg = <0>;
250					interrupt-controller;
251					#interrupt-cells = <2>;
252					interrupts = <3>;
253				};
254			};
255
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
256			timer0: timer@2c00 {
257				compatible = "snps,dw-apb-timer";
258				reg = <0x2c00 0x14>;
259				interrupts = <8>;
260				clocks = <&chip_clk CLKID_CFG>;
261				clock-names = "timer";
262				status = "okay";
263			};
264
265			timer1: timer@2c14 {
266				compatible = "snps,dw-apb-timer";
267				reg = <0x2c14 0x14>;
268				interrupts = <9>;
269				clocks = <&chip_clk CLKID_CFG>;
270				clock-names = "timer";
271				status = "okay";
272			};
273
274			timer2: timer@2c28 {
275				compatible = "snps,dw-apb-timer";
276				reg = <0x2c28 0x14>;
277				interrupts = <10>;
278				clocks = <&chip_clk CLKID_CFG>;
279				clock-names = "timer";
280				status = "disabled";
281			};
282
283			timer3: timer@2c3c {
284				compatible = "snps,dw-apb-timer";
285				reg = <0x2c3c 0x14>;
286				interrupts = <11>;
287				clocks = <&chip_clk CLKID_CFG>;
288				clock-names = "timer";
289				status = "disabled";
290			};
291
292			timer4: timer@2c50 {
293				compatible = "snps,dw-apb-timer";
294				reg = <0x2c50 0x14>;
295				interrupts = <12>;
296				clocks = <&chip_clk CLKID_CFG>;
297				clock-names = "timer";
298				status = "disabled";
299			};
300
301			timer5: timer@2c64 {
302				compatible = "snps,dw-apb-timer";
303				reg = <0x2c64 0x14>;
304				interrupts = <13>;
305				clocks = <&chip_clk CLKID_CFG>;
306				clock-names = "timer";
307				status = "disabled";
308			};
309
310			timer6: timer@2c78 {
311				compatible = "snps,dw-apb-timer";
312				reg = <0x2c78 0x14>;
313				interrupts = <14>;
314				clocks = <&chip_clk CLKID_CFG>;
315				clock-names = "timer";
316				status = "disabled";
317			};
318
319			timer7: timer@2c8c {
320				compatible = "snps,dw-apb-timer";
321				reg = <0x2c8c 0x14>;
322				interrupts = <15>;
323				clocks = <&chip_clk CLKID_CFG>;
324				clock-names = "timer";
325				status = "disabled";
326			};
327
328			aic: interrupt-controller@3000 {
329				compatible = "snps,dw-apb-ictl";
330				reg = <0x3000 0xc00>;
331				interrupt-controller;
332				#interrupt-cells = <1>;
333				interrupt-parent = <&gic>;
334				interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
335			};
336		};
337
338		chip: chip-control@ea0000 {
339			compatible = "simple-mfd", "syscon";
340			reg = <0xea0000 0x400>;
341
342			chip_clk: clock {
343				compatible = "marvell,berlin2-clk";
344				#clock-cells = <1>;
345				clocks = <&refclk>;
346				clock-names = "refclk";
347			};
348
349			soc_pinctrl: pin-controller {
350				compatible = "marvell,berlin2cd-soc-pinctrl";
351
352				uart0_pmux: uart0-pmux {
353					groups = "G6";
354					function = "uart0";
355				};
356			};
357
358			chip_rst: reset {
359				compatible = "marvell,berlin2-reset";
360				#reset-cells = <2>;
361			};
362		};
363
364		usb0: usb@ed0000 {
365			compatible = "chipidea,usb2";
366			reg = <0xed0000 0x200>;
367			interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
368			clocks = <&chip_clk CLKID_USB0>;
369			phys = <&usb_phy0>;
370			phy-names = "usb-phy";
371			status = "disabled";
372		};
373
374		usb1: usb@ee0000 {
375			compatible = "chipidea,usb2";
376			reg = <0xee0000 0x200>;
377			interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
378			clocks = <&chip_clk CLKID_USB1>;
379			phys = <&usb_phy1>;
380			phy-names = "usb-phy";
381			status = "disabled";
382		};
383
384		pwm: pwm@f20000 {
385			compatible = "marvell,berlin-pwm";
386			reg = <0xf20000 0x40>;
387			clocks = <&chip_clk CLKID_CFG>;
388			#pwm-cells = <3>;
389		};
390
391		apb@fc0000 {
392			compatible = "simple-bus";
393			#address-cells = <1>;
394			#size-cells = <1>;
395
396			ranges = <0 0xfc0000 0x10000>;
397			interrupt-parent = <&sic>;
398
399			wdt0: watchdog@1000 {
400				compatible = "snps,dw-wdt";
401				reg = <0x1000 0x100>;
402				clocks = <&refclk>;
403				interrupts = <0>;
404			};
405
406			wdt1: watchdog@2000 {
407				compatible = "snps,dw-wdt";
408				reg = <0x2000 0x100>;
409				clocks = <&refclk>;
410				interrupts = <1>;
411				status = "disabled";
412			};
413
414			wdt2: watchdog@3000 {
415				compatible = "snps,dw-wdt";
416				reg = <0x3000 0x100>;
417				clocks = <&refclk>;
418				interrupts = <2>;
419				status = "disabled";
420			};
421
422			sm_gpio1: gpio@5000 {
423				compatible = "snps,dw-apb-gpio";
424				reg = <0x5000 0x400>;
425				#address-cells = <1>;
426				#size-cells = <0>;
427
428				portf: gpio-port@5 {
429					compatible = "snps,dw-apb-gpio-port";
430					gpio-controller;
431					#gpio-cells = <2>;
432					snps,nr-gpios = <8>;
433					reg = <0>;
434				};
435			};
436
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
437			sm_gpio0: gpio@c000 {
438				compatible = "snps,dw-apb-gpio";
439				reg = <0xc000 0x400>;
440				#address-cells = <1>;
441				#size-cells = <0>;
442
443				porte: gpio-port@4 {
444					compatible = "snps,dw-apb-gpio-port";
445					gpio-controller;
446					#gpio-cells = <2>;
447					snps,nr-gpios = <8>;
448					reg = <0>;
449				};
450			};
451
452			uart0: serial@9000 {
453				compatible = "snps,dw-apb-uart";
454				reg = <0x9000 0x100>;
455				reg-shift = <2>;
456				reg-io-width = <1>;
457				interrupts = <8>;
458				clocks = <&refclk>;
459				pinctrl-0 = <&uart0_pmux>;
460				pinctrl-names = "default";
461				status = "disabled";
462			};
463
464			uart1: serial@a000 {
465				compatible = "snps,dw-apb-uart";
466				reg = <0xa000 0x100>;
467				reg-shift = <2>;
468				reg-io-width = <1>;
469				interrupts = <9>;
470				clocks = <&refclk>;
471				status = "disabled";
472			};
473
 
 
 
 
 
 
 
 
 
 
474			sysctrl: system-controller@d000 {
475				compatible = "simple-mfd", "syscon";
476				reg = <0xd000 0x100>;
477
478				sys_pinctrl: pin-controller {
479					compatible = "marvell,berlin2cd-system-pinctrl";
 
 
 
 
 
 
480				};
481			};
482
483			sic: interrupt-controller@e000 {
484				compatible = "snps,dw-apb-ictl";
485				reg = <0xe000 0x400>;
486				interrupt-controller;
487				#interrupt-cells = <1>;
488				interrupt-parent = <&gic>;
489				interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
490			};
491		};
492	};
493};