1/*
2 * Broadcom BCM63138 DSL SoCs Device Tree
3 */
4
5#include <dt-bindings/interrupt-controller/arm-gic.h>
6#include <dt-bindings/interrupt-controller/irq.h>
7
8#include "skeleton.dtsi"
9
10/ {
11	compatible = "brcm,bcm63138";
12	model = "Broadcom BCM63138 DSL SoC";
13	interrupt-parent = <&gic>;
14
15	aliases {
16		uart0 = &serial0;
17		uart1 = &serial1;
18	};
19
20	cpus {
21		#address-cells = <1>;
22		#size-cells = <0>;
23
24		cpu@0 {
25			device_type = "cpu";
26			compatible = "arm,cortex-a9";
27			next-level-cache = <&L2>;
28			reg = <0>;
29			enable-method = "brcm,bcm63138";
30		};
31
32		cpu@1 {
33			device_type = "cpu";
34			compatible = "arm,cortex-a9";
35			next-level-cache = <&L2>;
36			reg = <1>;
37			enable-method = "brcm,bcm63138";
38			resets = <&pmb0 4 1>;
39		};
40	};
41
42	clocks {
43		#address-cells = <1>;
44		#size-cells = <0>;
45
46		/* UBUS peripheral clock */
47		periph_clk: periph_clk {
48			#clock-cells = <0>;
49			compatible = "fixed-clock";
50			clock-frequency = <50000000>;
51			clock-output-names = "periph";
52		};
53
54		/* peripheral clock for system timer */
55		axi_clk: axi_clk {
56			#clock-cells = <0>;
57			compatible = "fixed-factor-clock";
58			clocks = <&armpll>;
59			clock-div = <2>;
60			clock-mult = <1>;
61		};
62
63		/* APB bus clock */
64		apb_clk: apb_clk {
65			#clock-cells = <0>;
66			compatible = "fixed-factor-clock";
67			clocks = <&armpll>;
68			clock-div = <4>;
69			clock-mult = <1>;
70		};
71	};
72
73	/* ARM bus */
74	axi@80000000 {
75		compatible = "simple-bus";
76		ranges = <0 0x80000000 0x784000>;
77		#address-cells = <1>;
78		#size-cells = <1>;
79
80		L2: cache-controller@1d000 {
81			compatible = "arm,pl310-cache";
82			reg = <0x1d000 0x1000>;
83			cache-unified;
84			cache-level = <2>;
85			cache-size = <524288>;
86			cache-sets = <1024>;
87			cache-line-size = <32>;
88			interrupts = <GIC_PPI 0 IRQ_TYPE_LEVEL_HIGH>;
89		};
90
91		scu: scu@1e000 {
92			compatible = "arm,cortex-a9-scu";
93			reg = <0x1e000 0x100>;
94		};
95
96		gic: interrupt-controller@1e100 {
97			compatible = "arm,cortex-a9-gic";
98			reg = <0x1f000 0x1000
99				0x1e100 0x100>;
100			#interrupt-cells = <3>;
101			#address-cells = <0>;
102			interrupt-controller;
103		};
104
105		global_timer: timer@1e200 {
106			compatible = "arm,cortex-a9-global-timer";
107			reg = <0x1e200 0x20>;
108			interrupts = <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>;
109			clocks = <&axi_clk>;
110		};
111
112		local_timer: local-timer@1e600 {
113			compatible = "arm,cortex-a9-twd-timer";
114			reg = <0x1e600 0x20>;
115			interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>;
116			clocks = <&axi_clk>;
117		};
118
119		twd_watchdog: watchdog@1e620 {
120			compatible = "arm,cortex-a9-twd-wdt";
121			reg = <0x1e620 0x20>;
122			interrupts = <GIC_PPI 14 IRQ_TYPE_LEVEL_HIGH>;
123		};
124
125		armpll: armpll {
126			#clock-cells = <0>;
127			compatible = "brcm,bcm63138-armpll";
128			clocks = <&periph_clk>;
129			reg = <0x20000 0xf00>;
130		};
131
132		pmb0: reset-controller@4800c0 {
133			compatible = "brcm,bcm63138-pmb";
134			reg = <0x4800c0 0x10>;
135			#reset-cells = <2>;
136		};
137
138		pmb1: reset-controller@4800e0 {
139			compatible = "brcm,bcm63138-pmb";
140			reg = <0x4800e0 0x10>;
141			#reset-cells = <2>;
142		};
143	};
144
145	/* Legacy UBUS base */
146	ubus@fffe8000 {
147		compatible = "simple-bus";
148		#address-cells = <1>;
149		#size-cells = <1>;
150		ranges = <0 0xfffe8000 0x8100>;
151
152		timer: timer@80 {
153			compatible = "brcm,bcm6328-timer", "syscon";
154			reg = <0x80 0x3c>;
155		};
156
157		serial0: serial@600 {
158			compatible = "brcm,bcm6345-uart";
159			reg = <0x600 0x1b>;
160			interrupts = <GIC_SPI 32 0>;
161			clocks = <&periph_clk>;
162			clock-names = "periph";
163			status = "disabled";
164		};
165
166		serial1: serial@620 {
167			compatible = "brcm,bcm6345-uart";
168			reg = <0x620 0x1b>;
169			interrupts = <GIC_SPI 33 0>;
170			clocks = <&periph_clk>;
171			clock-names = "periph";
172			status = "disabled";
173		};
174
175		nand: nand@2000 {
176			#address-cells = <1>;
177			#size-cells = <0>;
178			compatible = "brcm,nand-bcm63138", "brcm,brcmnand-v7.0", "brcm,brcmnand";
179			reg = <0x2000 0x600>, <0xf0 0x10>;
180			reg-names = "nand", "nand-int-base";
181			status = "disabled";
182			interrupts = <GIC_SPI 38 0>;
183			interrupt-names = "nand";
184		};
185
186		bootlut: bootlut@8000 {
187			compatible = "brcm,bcm63138-bootlut";
188			reg = <0x8000 0x50>;
189		};
190
191		reboot {
192			compatible = "syscon-reboot";
193			regmap = <&timer>;
194			offset = <0x34>;
195			mask = <1>;
196		};
197	};
198};
199