blob: 42b442aec9f4fdd8147b0c33cb1b22e155b00762 [file] [log] [blame]
William Zhangeceeac82022-08-05 18:25:13 -07001// SPDX-License-Identifier: GPL-2.0
2/*
3 * Broadcom BCM63138 DSL SoCs Device Tree
4 */
5
6#include <dt-bindings/interrupt-controller/arm-gic.h>
7#include <dt-bindings/interrupt-controller/irq.h>
8
9/ {
10 compatible = "brcm,bcm63138", "brcm,bcmbca";
11 #address-cells = <1>;
12 #size-cells = <1>;
13
14 interrupt-parent = <&gic>;
15
16 cpus {
17 #address-cells = <1>;
18 #size-cells = <0>;
19
20 cpu@0 {
21 device_type = "cpu";
22 compatible = "arm,cortex-a9";
23 next-level-cache = <&L2>;
24 reg = <0>;
25 enable-method = "brcm,bcm63138";
26 };
27
28 cpu@1 {
29 device_type = "cpu";
30 compatible = "arm,cortex-a9";
31 next-level-cache = <&L2>;
32 reg = <1>;
33 enable-method = "brcm,bcm63138";
34 };
35 };
36
37 clocks {
38 /* UBUS peripheral clock */
39 periph_clk: periph_clk {
40 #clock-cells = <0>;
41 compatible = "fixed-clock";
42 clock-frequency = <50000000>;
43 clock-output-names = "periph";
44 };
45
46 /* peripheral clock for system timer */
47 axi_clk: axi_clk {
48 #clock-cells = <0>;
49 compatible = "fixed-factor-clock";
50 clocks = <&armpll>;
51 clock-div = <2>;
52 clock-mult = <1>;
53 };
54
55 /* APB bus clock */
56 apb_clk: apb_clk {
57 #clock-cells = <0>;
58 compatible = "fixed-factor-clock";
59 clocks = <&armpll>;
60 clock-div = <4>;
61 clock-mult = <1>;
62 };
63 };
64
65 /* ARM bus */
66 axi@80000000 {
67 compatible = "simple-bus";
68 ranges = <0 0x80000000 0x784000>;
69 #address-cells = <1>;
70 #size-cells = <1>;
71
72 L2: cache-controller@1d000 {
73 compatible = "arm,pl310-cache";
74 reg = <0x1d000 0x1000>;
75 cache-unified;
76 cache-level = <2>;
77 cache-size = <524288>;
78 cache-sets = <1024>;
79 cache-line-size = <32>;
80 interrupts = <GIC_PPI 0 IRQ_TYPE_LEVEL_HIGH>;
81 };
82
83 scu: scu@1e000 {
84 compatible = "arm,cortex-a9-scu";
85 reg = <0x1e000 0x100>;
86 };
87
88 gic: interrupt-controller@1f000 {
89 compatible = "arm,cortex-a9-gic";
90 reg = <0x1f000 0x1000
91 0x1e100 0x100>;
92 #interrupt-cells = <3>;
93 #address-cells = <0>;
94 interrupt-controller;
95 };
96
97 global_timer: timer@1e200 {
98 compatible = "arm,cortex-a9-global-timer";
99 reg = <0x1e200 0x20>;
100 interrupts = <GIC_PPI 11 IRQ_TYPE_EDGE_RISING>;
101 clocks = <&axi_clk>;
102 };
103
104 local_timer: local-timer@1e600 {
105 compatible = "arm,cortex-a9-twd-timer";
106 reg = <0x1e600 0x20>;
107 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) |
108 IRQ_TYPE_EDGE_RISING)>;
109 clocks = <&axi_clk>;
110 };
111
112 twd_watchdog: watchdog@1e620 {
113 compatible = "arm,cortex-a9-twd-wdt";
114 reg = <0x1e620 0x20>;
115 interrupts = <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(2) |
116 IRQ_TYPE_LEVEL_HIGH)>;
117 };
118
119 armpll: armpll@20000 {
120 #clock-cells = <0>;
121 compatible = "brcm,bcm63138-armpll";
122 clocks = <&periph_clk>;
123 reg = <0x20000 0xf00>;
124 };
125 };
126
127 /* Legacy UBUS base */
128 bus@fffe8000 {
129 compatible = "simple-bus";
130 #address-cells = <1>;
131 #size-cells = <1>;
132 ranges = <0 0xfffe8000 0x8000>;
133
134 timer0: timer@80 {
135 compatible = "brcm,bcmbca-periph-timer";
136 reg = <0x80 0x28>;
137 clocks = <&periph_clk>;
138 };
139
140 uart0: serial@600 {
141 compatible = "brcm,bcm6345-uart";
142 reg = <0x600 0x20>;
143 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
144 clocks = <&periph_clk>;
145 clock-names = "refclk";
146 status = "disabled";
147 };
148 };
149};