blob: 4bed1f914a9b4f91ba3ed767ae46f67f8af50e16 [file] [log] [blame]
Philippe Reynesea1a7de2019-01-31 18:57:35 +01001// SPDX-License-Identifier: GPL-2.0+
2/*
3 * Copyright (C) 2019 Philippe Reynes <philippe.reynes@softathome.com>
William Zhang61546e72022-08-22 11:19:44 -07004 * Copyright 2022 Broadcom Ltd.
Philippe Reynesea1a7de2019-01-31 18:57:35 +01005 */
6
William Zhang61546e72022-08-22 11:19:44 -07007#include <dt-bindings/interrupt-controller/irq.h>
8#include <dt-bindings/interrupt-controller/arm-gic.h>
Philippe Reynesea1a7de2019-01-31 18:57:35 +01009
10/ {
William Zhang61546e72022-08-22 11:19:44 -070011 compatible = "brcm,bcm63158", "brcm,bcmbca";
Philippe Reynesea1a7de2019-01-31 18:57:35 +010012 #address-cells = <2>;
13 #size-cells = <2>;
14
William Zhang61546e72022-08-22 11:19:44 -070015 interrupt-parent = <&gic>;
Kursad Oneyb2983d12019-08-14 15:18:36 +020016
Philippe Reynesea1a7de2019-01-31 18:57:35 +010017 cpus {
18 #address-cells = <2>;
19 #size-cells = <0>;
Philippe Reynesea1a7de2019-01-31 18:57:35 +010020
William Zhang61546e72022-08-22 11:19:44 -070021 B53_0: cpu@0 {
22 compatible = "brcm,brahma-b53";
Philippe Reynesea1a7de2019-01-31 18:57:35 +010023 device_type = "cpu";
24 reg = <0x0 0x0>;
William Zhang61546e72022-08-22 11:19:44 -070025 next-level-cache = <&L2_0>;
26 enable-method = "psci";
Philippe Reynesea1a7de2019-01-31 18:57:35 +010027 };
28
William Zhang61546e72022-08-22 11:19:44 -070029 B53_1: cpu@1 {
30 compatible = "brcm,brahma-b53";
Philippe Reynesea1a7de2019-01-31 18:57:35 +010031 device_type = "cpu";
32 reg = <0x0 0x1>;
William Zhang61546e72022-08-22 11:19:44 -070033 next-level-cache = <&L2_0>;
34 enable-method = "psci";
Philippe Reynesea1a7de2019-01-31 18:57:35 +010035 };
36
William Zhang61546e72022-08-22 11:19:44 -070037 B53_2: cpu@2 {
38 compatible = "brcm,brahma-b53";
Philippe Reynesea1a7de2019-01-31 18:57:35 +010039 device_type = "cpu";
40 reg = <0x0 0x2>;
William Zhang61546e72022-08-22 11:19:44 -070041 next-level-cache = <&L2_0>;
42 enable-method = "psci";
Philippe Reynesea1a7de2019-01-31 18:57:35 +010043 };
44
William Zhang61546e72022-08-22 11:19:44 -070045 B53_3: cpu@3 {
46 compatible = "brcm,brahma-b53";
Philippe Reynesea1a7de2019-01-31 18:57:35 +010047 device_type = "cpu";
48 reg = <0x0 0x3>;
William Zhang61546e72022-08-22 11:19:44 -070049 next-level-cache = <&L2_0>;
50 enable-method = "psci";
Philippe Reynesea1a7de2019-01-31 18:57:35 +010051 };
52
William Zhang61546e72022-08-22 11:19:44 -070053 L2_0: l2-cache0 {
Philippe Reynesea1a7de2019-01-31 18:57:35 +010054 compatible = "cache";
Philippe Reynesea1a7de2019-01-31 18:57:35 +010055 };
56 };
57
William Zhang61546e72022-08-22 11:19:44 -070058 timer {
59 compatible = "arm,armv8-timer";
60 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
61 <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
62 <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
63 <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
64 };
Philippe Reynesea1a7de2019-01-31 18:57:35 +010065
William Zhang61546e72022-08-22 11:19:44 -070066 pmu: pmu {
67 compatible = "arm,cortex-a53-pmu";
68 interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
69 <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
70 <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
71 <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
72 interrupt-affinity = <&B53_0>, <&B53_1>,
73 <&B53_2>, <&B53_3>;
74 };
75
76 clocks {
Simon Glass8c103c32023-02-13 08:56:33 -070077 bootph-all;
William Zhang61546e72022-08-22 11:19:44 -070078 periph_clk: periph-clk {
Philippe Reynesea1a7de2019-01-31 18:57:35 +010079 compatible = "fixed-clock";
80 #clock-cells = <0>;
William Zhang61546e72022-08-22 11:19:44 -070081 clock-frequency = <200000000>;
Philippe Reynesea1a7de2019-01-31 18:57:35 +010082 };
Philippe Reynesea1e9c02019-05-03 19:43:08 +020083
Kursad Oneyb2983d12019-08-14 15:18:36 +020084 hsspi_pll: hsspi-pll {
85 compatible = "fixed-factor-clock";
86 #clock-cells = <0>;
William Zhang61546e72022-08-22 11:19:44 -070087 clocks = <&periph_clk>;
Kursad Oneyb2983d12019-08-14 15:18:36 +020088 clock-mult = <2>;
89 clock-div = <1>;
90 };
91
William Zhang61546e72022-08-22 11:19:44 -070092 uart_clk: uart-clk {
93 compatible = "fixed-factor-clock";
Philippe Reynesea1e9c02019-05-03 19:43:08 +020094 #clock-cells = <0>;
William Zhang61546e72022-08-22 11:19:44 -070095 clocks = <&periph_clk>;
96 clock-div = <4>;
97 clock-mult = <1>;
98 };
99
100 wdt_clk: wdt-clk {
101 compatible = "fixed-factor-clock";
102 #clock-cells = <0>;
103 clocks = <&periph_clk>;
104 clock-div = <4>;
105 clock-mult = <1>;
Philippe Reynesea1e9c02019-05-03 19:43:08 +0200106 };
Philippe Reynesea1a7de2019-01-31 18:57:35 +0100107 };
108
William Zhang61546e72022-08-22 11:19:44 -0700109 psci {
110 compatible = "arm,psci-0.2";
111 method = "smc";
112 };
113
114 axi@81000000 {
Philippe Reynesea1a7de2019-01-31 18:57:35 +0100115 compatible = "simple-bus";
William Zhang61546e72022-08-22 11:19:44 -0700116 #address-cells = <1>;
117 #size-cells = <1>;
118 ranges = <0x0 0x0 0x81000000 0x8000>;
119
120 gic: interrupt-controller@1000 {
121 compatible = "arm,gic-400";
122 #interrupt-cells = <3>;
123 interrupt-controller;
124 interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
125 reg = <0x1000 0x1000>,
126 <0x2000 0x2000>,
127 <0x4000 0x2000>,
128 <0x6000 0x2000>;
129 };
130 };
131
132 bus@ff800000 {
133 compatible = "simple-bus";
134 #address-cells = <1>;
135 #size-cells = <1>;
136 ranges = <0x0 0x0 0xff800000 0x800000>;
Simon Glass8c103c32023-02-13 08:56:33 -0700137 bootph-all;
Philippe Reynesea1a7de2019-01-31 18:57:35 +0100138
William Zhang61546e72022-08-22 11:19:44 -0700139 uart0: serial@12000 {
Philippe Reynesea1a7de2019-01-31 18:57:35 +0100140 compatible = "arm,pl011", "arm,primecell";
William Zhang61546e72022-08-22 11:19:44 -0700141 reg = <0x12000 0x1000>;
142 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
143 clocks = <&uart_clk>, <&uart_clk>;
144 clock-names = "uartclk", "apb_pclk";
Philippe Reynesea1a7de2019-01-31 18:57:35 +0100145 status = "disabled";
146 };
Philippe Reynes2f4a6862019-01-31 18:57:38 +0100147
William Zhang61546e72022-08-22 11:19:44 -0700148 leds: led-controller@800 {
Philippe Reynescfbb03b2019-03-22 17:02:06 +0100149 compatible = "brcm,bcm6858-leds";
William Zhang61546e72022-08-22 11:19:44 -0700150 reg = <0x800 0xe4>;
Philippe Reynescfbb03b2019-03-22 17:02:06 +0100151
152 status = "disabled";
153 };
154
William Zhang61546e72022-08-22 11:19:44 -0700155 wdt1: watchdog@480 {
Philippe Reynes2f4a6862019-01-31 18:57:38 +0100156 compatible = "brcm,bcm6345-wdt";
William Zhang61546e72022-08-22 11:19:44 -0700157 reg = <0x480 0x14>;
158 clocks = <&wdt_clk>;
Philippe Reynes2f4a6862019-01-31 18:57:38 +0100159 };
160
William Zhang61546e72022-08-22 11:19:44 -0700161 wdt2: watchdog@4c0 {
Philippe Reynes2f4a6862019-01-31 18:57:38 +0100162 compatible = "brcm,bcm6345-wdt";
William Zhang61546e72022-08-22 11:19:44 -0700163 reg = <0x4c0 0x14>;
164 clocks = <&wdt_clk>;
Philippe Reynes2f4a6862019-01-31 18:57:38 +0100165 };
166
167 wdt-reboot {
168 compatible = "wdt-reboot";
169 wdt = <&wdt1>;
170 };
Philippe Reynes938f10b2019-03-07 11:36:42 +0100171
William Zhang61546e72022-08-22 11:19:44 -0700172 gpio0: gpio-controller@500 {
Philippe Reynes938f10b2019-03-07 11:36:42 +0100173 compatible = "brcm,bcm6345-gpio";
William Zhang61546e72022-08-22 11:19:44 -0700174 reg = <0x500 0x4>,
175 <0x520 0x4>;
Philippe Reynes938f10b2019-03-07 11:36:42 +0100176 gpio-controller;
177 #gpio-cells = <2>;
178
179 status = "disabled";
180 };
181
William Zhang61546e72022-08-22 11:19:44 -0700182 gpio1: gpio-controller@504 {
Philippe Reynes938f10b2019-03-07 11:36:42 +0100183 compatible = "brcm,bcm6345-gpio";
William Zhang61546e72022-08-22 11:19:44 -0700184 reg = <0x504 0x4>,
185 <0x524 0x4>;
Philippe Reynes938f10b2019-03-07 11:36:42 +0100186 gpio-controller;
187 #gpio-cells = <2>;
188
189 status = "disabled";
190 };
191
William Zhang61546e72022-08-22 11:19:44 -0700192 gpio2: gpio-controller@508 {
Philippe Reynes938f10b2019-03-07 11:36:42 +0100193 compatible = "brcm,bcm6345-gpio";
William Zhang61546e72022-08-22 11:19:44 -0700194 reg = <0x508 0x4>,
195 <0x528 0x4>;
Philippe Reynes938f10b2019-03-07 11:36:42 +0100196 gpio-controller;
197 #gpio-cells = <2>;
198
199 status = "disabled";
200 };
201
William Zhang61546e72022-08-22 11:19:44 -0700202 gpio3: gpio-controller@50c {
Philippe Reynes938f10b2019-03-07 11:36:42 +0100203 compatible = "brcm,bcm6345-gpio";
William Zhang61546e72022-08-22 11:19:44 -0700204 reg = <0x50c 0x4>,
205 <0x52c 0x4>;
Philippe Reynes938f10b2019-03-07 11:36:42 +0100206 gpio-controller;
207 #gpio-cells = <2>;
208
209 status = "disabled";
210 };
211
William Zhang61546e72022-08-22 11:19:44 -0700212 gpio4: gpio-controller@510 {
Philippe Reynes938f10b2019-03-07 11:36:42 +0100213 compatible = "brcm,bcm6345-gpio";
William Zhang61546e72022-08-22 11:19:44 -0700214 reg = <0x510 0x4>,
215 <0x530 0x4>;
Philippe Reynes938f10b2019-03-07 11:36:42 +0100216 gpio-controller;
217 #gpio-cells = <2>;
218
219 status = "disabled";
220 };
221
William Zhang61546e72022-08-22 11:19:44 -0700222 gpio5: gpio-controller@514 {
Philippe Reynes938f10b2019-03-07 11:36:42 +0100223 compatible = "brcm,bcm6345-gpio";
William Zhang61546e72022-08-22 11:19:44 -0700224 reg = <0x514 0x4>,
225 <0x534 0x4>;
Philippe Reynes938f10b2019-03-07 11:36:42 +0100226 gpio-controller;
227 #gpio-cells = <2>;
228
229 status = "disabled";
230 };
231
William Zhang61546e72022-08-22 11:19:44 -0700232 gpio6: gpio-controller@518 {
Philippe Reynes938f10b2019-03-07 11:36:42 +0100233 compatible = "brcm,bcm6345-gpio";
William Zhang61546e72022-08-22 11:19:44 -0700234 reg = <0x518 0x4>,
235 <0x538 0x4>;
Philippe Reynes938f10b2019-03-07 11:36:42 +0100236 gpio-controller;
237 #gpio-cells = <2>;
238
239 status = "disabled";
240 };
241
William Zhang61546e72022-08-22 11:19:44 -0700242 gpio7: gpio-controller@51c {
Philippe Reynes938f10b2019-03-07 11:36:42 +0100243 compatible = "brcm,bcm6345-gpio";
William Zhang61546e72022-08-22 11:19:44 -0700244 reg = <0x51c 0x4>,
245 <0x53c 0x4>;
Philippe Reynes938f10b2019-03-07 11:36:42 +0100246 gpio-controller;
247 #gpio-cells = <2>;
248
249 status = "disabled";
250 };
Philippe Reynes6242e9a2019-03-15 15:14:45 +0100251
William Zhang61546e72022-08-22 11:19:44 -0700252 hsspi: spi-controller@1000 {
Kursad Oneyb2983d12019-08-14 15:18:36 +0200253 compatible = "brcm,bcm6328-hsspi";
254 #address-cells = <1>;
255 #size-cells = <0>;
William Zhang61546e72022-08-22 11:19:44 -0700256 reg = <0x1000 0x600>;
Kursad Oneyb2983d12019-08-14 15:18:36 +0200257 clocks = <&hsspi_pll>, <&hsspi_pll>;
258 clock-names = "hsspi", "pll";
259 spi-max-frequency = <100000000>;
260 num-cs = <8>;
261
262 status = "disabled";
263 };
264
William Zhang61546e72022-08-22 11:19:44 -0700265 nand: nand-controller@1800 {
Philippe Reynes6242e9a2019-03-15 15:14:45 +0100266 compatible = "brcm,nand-bcm63158",
267 "brcm,brcmnand-v5.0",
268 "brcm,brcmnand";
269 reg-names = "nand", "nand-int-base", "nand-cache";
William Zhang61546e72022-08-22 11:19:44 -0700270 reg = <0x1800 0x180>,
271 <0x2000 0x10>,
272 <0x1c00 0x200>;
Philippe Reynes6242e9a2019-03-15 15:14:45 +0100273 parameter-page-big-endian = <0>;
274
275 status = "disabled";
276 };
Philippe Reynesea1a7de2019-01-31 18:57:35 +0100277 };
278};