Loading...
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * ox820.dtsi - Device tree file for Oxford Semiconductor OX820 SoC
4 *
5 * Copyright (C) 2016 Neil Armstrong <narmstrong@baylibre.com>
6 */
7
8#include <dt-bindings/interrupt-controller/arm-gic.h>
9#include <dt-bindings/clock/oxsemi,ox820.h>
10#include <dt-bindings/reset/oxsemi,ox820.h>
11
12/ {
13 #address-cells = <1>;
14 #size-cells = <1>;
15 compatible = "oxsemi,ox820";
16
17 cpus {
18 #address-cells = <1>;
19 #size-cells = <0>;
20 enable-method = "oxsemi,ox820-smp";
21
22 cpu@0 {
23 device_type = "cpu";
24 compatible = "arm,arm11mpcore";
25 clocks = <&armclk>;
26 reg = <0>;
27 };
28
29 cpu@1 {
30 device_type = "cpu";
31 compatible = "arm,arm11mpcore";
32 clocks = <&armclk>;
33 reg = <1>;
34 };
35 };
36
37 memory {
38 device_type = "memory";
39 /* Max 512MB @ 0x60000000 */
40 reg = <0x60000000 0x20000000>;
41 };
42
43 clocks {
44 osc: oscillator {
45 compatible = "fixed-clock";
46 #clock-cells = <0>;
47 clock-frequency = <25000000>;
48 };
49
50 gmacclk: gmacclk {
51 compatible = "fixed-clock";
52 #clock-cells = <0>;
53 clock-frequency = <125000000>;
54 };
55
56 sysclk: sysclk {
57 compatible = "fixed-factor-clock";
58 #clock-cells = <0>;
59 clock-div = <4>;
60 clock-mult = <1>;
61 clocks = <&osc>;
62 };
63
64 plla: plla {
65 compatible = "fixed-clock";
66 #clock-cells = <0>;
67 clock-frequency = <850000000>;
68 };
69
70 armclk: armclk {
71 compatible = "fixed-factor-clock";
72 #clock-cells = <0>;
73 clock-div = <2>;
74 clock-mult = <1>;
75 clocks = <&plla>;
76 };
77 };
78
79 soc {
80 #address-cells = <1>;
81 #size-cells = <1>;
82 compatible = "simple-bus";
83 ranges;
84 interrupt-parent = <&gic>;
85
86 nandc: nand-controller@41000000 {
87 compatible = "oxsemi,ox820-nand";
88 reg = <0x41000000 0x100000>;
89 clocks = <&stdclk CLK_820_NAND>;
90 resets = <&reset RESET_NAND>;
91 #address-cells = <1>;
92 #size-cells = <0>;
93 status = "disabled";
94 };
95
96 etha: ethernet@40400000 {
97 compatible = "oxsemi,ox820-dwmac", "snps,dwmac";
98 reg = <0x40400000 0x2000>;
99 interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
100 <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
101 interrupt-names = "macirq", "eth_wake_irq";
102 mac-address = [000000000000]; /* Filled in by U-Boot */
103 phy-mode = "rgmii";
104
105 clocks = <&stdclk CLK_820_ETHA>, <&gmacclk>;
106 clock-names = "gmac", "stmmaceth";
107 resets = <&reset RESET_MAC>;
108
109 /* Regmap for sys registers */
110 oxsemi,sys-ctrl = <&sys>;
111
112 status = "disabled";
113 };
114
115 apb-bridge@44000000 {
116 #address-cells = <1>;
117 #size-cells = <1>;
118 compatible = "simple-bus";
119 ranges = <0 0x44000000 0x1000000>;
120
121 pinctrl: pinctrl {
122 compatible = "oxsemi,ox820-pinctrl";
123
124 /* Regmap for sys registers */
125 oxsemi,sys-ctrl = <&sys>;
126
127 pinctrl_uart0: uart0 {
128 uart0 {
129 pins = "gpio30", "gpio31";
130 function = "fct5";
131 };
132 };
133
134 pinctrl_uart0_modem: uart0_modem {
135 uart0_modem_a {
136 pins = "gpio24", "gpio24", "gpio26", "gpio27";
137 function = "fct4";
138 };
139 uart0_modem_b {
140 pins = "gpio28", "gpio29";
141 function = "fct5";
142 };
143 };
144
145 pinctrl_uart1: uart1 {
146 uart1 {
147 pins = "gpio7", "gpio8";
148 function = "fct4";
149 };
150 };
151
152 pinctrl_uart1_modem: uart1_modem {
153 uart1_modem {
154 pins = "gpio5", "gpio6", "gpio40", "gpio41", "gpio42", "gpio43";
155 function = "fct4";
156 };
157 };
158
159 pinctrl_etha_mdio: etha_mdio {
160 etha_mdio {
161 pins = "gpio3", "gpio4";
162 function = "fct1";
163 };
164 };
165
166 pinctrl_nand: nand {
167 nand {
168 pins = "gpio12", "gpio13", "gpio14", "gpio15",
169 "gpio16", "gpio17", "gpio18", "gpio19",
170 "gpio20", "gpio21", "gpio22", "gpio23",
171 "gpio24";
172 function = "fct1";
173 };
174 };
175 };
176
177 gpio0: gpio@0 {
178 compatible = "oxsemi,ox820-gpio";
179 reg = <0x000000 0x100000>;
180 interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
181 #gpio-cells = <2>;
182 gpio-controller;
183 interrupt-controller;
184 #interrupt-cells = <2>;
185 ngpios = <32>;
186 oxsemi,gpio-bank = <0>;
187 gpio-ranges = <&pinctrl 0 0 32>;
188 };
189
190 gpio1: gpio@100000 {
191 compatible = "oxsemi,ox820-gpio";
192 reg = <0x100000 0x100000>;
193 interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
194 #gpio-cells = <2>;
195 gpio-controller;
196 interrupt-controller;
197 #interrupt-cells = <2>;
198 ngpios = <18>;
199 oxsemi,gpio-bank = <1>;
200 gpio-ranges = <&pinctrl 0 32 18>;
201 };
202
203 uart0: serial@200000 {
204 compatible = "ns16550a";
205 reg = <0x200000 0x100000>;
206 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
207 reg-shift = <0>;
208 fifo-size = <16>;
209 reg-io-width = <1>;
210 current-speed = <115200>;
211 no-loopback-test;
212 status = "disabled";
213 clocks = <&sysclk>;
214 resets = <&reset RESET_UART1>;
215 };
216
217 uart1: serial@300000 {
218 compatible = "ns16550a";
219 reg = <0x200000 0x100000>;
220 interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
221 reg-shift = <0>;
222 fifo-size = <16>;
223 reg-io-width = <1>;
224 current-speed = <115200>;
225 no-loopback-test;
226 status = "disabled";
227 clocks = <&sysclk>;
228 resets = <&reset RESET_UART2>;
229 };
230
231 rps@400000 {
232 #address-cells = <1>;
233 #size-cells = <1>;
234 compatible = "simple-bus";
235 ranges = <0 0x400000 0x100000>;
236
237 intc: interrupt-controller@0 {
238 compatible = "oxsemi,ox820-rps-irq", "oxsemi,ox810se-rps-irq";
239 interrupt-controller;
240 reg = <0 0x200>;
241 interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
242 #interrupt-cells = <1>;
243 valid-mask = <0xffffffff>;
244 clear-mask = <0xffffffff>;
245 };
246
247 timer0: timer@200 {
248 compatible = "oxsemi,ox820-rps-timer";
249 reg = <0x200 0x40>;
250 clocks = <&sysclk>;
251 interrupt-parent = <&intc>;
252 interrupts = <4>;
253 };
254 };
255
256 sys: sys-ctrl@e00000 {
257 compatible = "oxsemi,ox820-sys-ctrl", "syscon", "simple-mfd";
258 reg = <0xe00000 0x200000>;
259
260 reset: reset-controller {
261 compatible = "oxsemi,ox820-reset", "oxsemi,ox810se-reset";
262 #reset-cells = <1>;
263 };
264
265 stdclk: stdclk {
266 compatible = "oxsemi,ox820-stdclk", "oxsemi,ox810se-stdclk";
267 #clock-cells = <1>;
268 };
269 };
270 };
271
272 apb-bridge@47000000 {
273 #address-cells = <1>;
274 #size-cells = <1>;
275 compatible = "simple-bus";
276 ranges = <0 0x47000000 0x1000000>;
277
278 scu: scu@0 {
279 compatible = "arm,arm11mp-scu";
280 reg = <0x0 0x100>;
281 };
282
283 local-timer@600 {
284 compatible = "arm,arm11mp-twd-timer";
285 reg = <0x600 0x20>;
286 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_RAW(3)|IRQ_TYPE_LEVEL_HIGH)>;
287 clocks = <&armclk>;
288 };
289
290 gic: gic@1000 {
291 compatible = "arm,arm11mp-gic";
292 interrupt-controller;
293 #interrupt-cells = <3>;
294 reg = <0x1000 0x1000>,
295 <0x100 0x500>;
296 };
297 };
298 };
299};
1/*
2 * ox820.dtsi - Device tree file for Oxford Semiconductor OX820 SoC
3 *
4 * Copyright (C) 2016 Neil Armstrong <narmstrong@baylibre.com>
5 *
6 * Licensed under GPLv2 or later
7 */
8
9/include/ "skeleton.dtsi"
10#include <dt-bindings/interrupt-controller/arm-gic.h>
11#include <dt-bindings/clock/oxsemi,ox820.h>
12#include <dt-bindings/reset/oxsemi,ox820.h>
13
14/ {
15 compatible = "oxsemi,ox820";
16
17 cpus {
18 #address-cells = <1>;
19 #size-cells = <0>;
20 enable-method = "oxsemi,ox820-smp";
21
22 cpu@0 {
23 device_type = "cpu";
24 compatible = "arm,arm11mpcore";
25 clocks = <&armclk>;
26 reg = <0>;
27 };
28
29 cpu@1 {
30 device_type = "cpu";
31 compatible = "arm,arm11mpcore";
32 clocks = <&armclk>;
33 reg = <1>;
34 };
35 };
36
37 memory {
38 /* Max 512MB @ 0x60000000 */
39 reg = <0x60000000 0x20000000>;
40 };
41
42 clocks {
43 osc: oscillator {
44 compatible = "fixed-clock";
45 #clock-cells = <0>;
46 clock-frequency = <25000000>;
47 };
48
49 gmacclk: gmacclk {
50 compatible = "fixed-clock";
51 #clock-cells = <0>;
52 clock-frequency = <125000000>;
53 };
54
55 sysclk: sysclk {
56 compatible = "fixed-factor-clock";
57 #clock-cells = <0>;
58 clock-div = <4>;
59 clock-mult = <1>;
60 clocks = <&osc>;
61 };
62
63 plla: plla {
64 compatible = "fixed-clock";
65 #clock-cells = <0>;
66 clock-frequency = <850000000>;
67 };
68
69 armclk: armclk {
70 compatible = "fixed-factor-clock";
71 #clock-cells = <0>;
72 clock-div = <2>;
73 clock-mult = <1>;
74 clocks = <&plla>;
75 };
76 };
77
78 soc {
79 #address-cells = <1>;
80 #size-cells = <1>;
81 compatible = "simple-bus";
82 ranges;
83 interrupt-parent = <&gic>;
84
85 nandc: nand-controller@41000000 {
86 compatible = "oxsemi,ox820-nand";
87 reg = <0x41000000 0x100000>;
88 clocks = <&stdclk CLK_820_NAND>;
89 resets = <&reset RESET_NAND>;
90 #address-cells = <1>;
91 #size-cells = <0>;
92 status = "disabled";
93 };
94
95 etha: ethernet@40400000 {
96 compatible = "oxsemi,ox820-dwmac", "snps,dwmac";
97 reg = <0x40400000 0x2000>;
98 interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
99 <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
100 interrupt-names = "macirq", "eth_wake_irq";
101 mac-address = [000000000000]; /* Filled in by U-Boot */
102 phy-mode = "rgmii";
103
104 clocks = <&stdclk CLK_820_ETHA>, <&gmacclk>;
105 clock-names = "gmac", "stmmaceth";
106 resets = <&reset RESET_MAC>;
107
108 /* Regmap for sys registers */
109 oxsemi,sys-ctrl = <&sys>;
110
111 status = "disabled";
112 };
113
114 apb-bridge@44000000 {
115 #address-cells = <1>;
116 #size-cells = <1>;
117 compatible = "simple-bus";
118 ranges = <0 0x44000000 0x1000000>;
119
120 pinctrl: pinctrl {
121 compatible = "oxsemi,ox820-pinctrl";
122
123 /* Regmap for sys registers */
124 oxsemi,sys-ctrl = <&sys>;
125
126 pinctrl_uart0: uart0 {
127 uart0 {
128 pins = "gpio30", "gpio31";
129 function = "fct5";
130 };
131 };
132
133 pinctrl_uart0_modem: uart0_modem {
134 uart0_modem_a {
135 pins = "gpio24", "gpio24", "gpio26", "gpio27";
136 function = "fct4";
137 };
138 uart0_modem_b {
139 pins = "gpio28", "gpio29";
140 function = "fct5";
141 };
142 };
143
144 pinctrl_uart1: uart1 {
145 uart1 {
146 pins = "gpio7", "gpio8";
147 function = "fct4";
148 };
149 };
150
151 pinctrl_uart1_modem: uart1_modem {
152 uart1_modem {
153 pins = "gpio5", "gpio6", "gpio40", "gpio41", "gpio42", "gpio43";
154 function = "fct4";
155 };
156 };
157
158 pinctrl_etha_mdio: etha_mdio {
159 etha_mdio {
160 pins = "gpio3", "gpio4";
161 function = "fct1";
162 };
163 };
164
165 pinctrl_nand: nand {
166 nand {
167 pins = "gpio12", "gpio13", "gpio14", "gpio15",
168 "gpio16", "gpio17", "gpio18", "gpio19",
169 "gpio20", "gpio21", "gpio22", "gpio23",
170 "gpio24";
171 function = "fct1";
172 };
173 };
174 };
175
176 gpio0: gpio@0 {
177 compatible = "oxsemi,ox820-gpio";
178 reg = <0x000000 0x100000>;
179 interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
180 #gpio-cells = <2>;
181 gpio-controller;
182 interrupt-controller;
183 #interrupt-cells = <2>;
184 ngpios = <32>;
185 oxsemi,gpio-bank = <0>;
186 gpio-ranges = <&pinctrl 0 0 32>;
187 };
188
189 gpio1: gpio@100000 {
190 compatible = "oxsemi,ox820-gpio";
191 reg = <0x100000 0x100000>;
192 interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
193 #gpio-cells = <2>;
194 gpio-controller;
195 interrupt-controller;
196 #interrupt-cells = <2>;
197 ngpios = <18>;
198 oxsemi,gpio-bank = <1>;
199 gpio-ranges = <&pinctrl 0 32 18>;
200 };
201
202 uart0: serial@200000 {
203 compatible = "ns16550a";
204 reg = <0x200000 0x100000>;
205 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
206 reg-shift = <0>;
207 fifo-size = <16>;
208 reg-io-width = <1>;
209 current-speed = <115200>;
210 no-loopback-test;
211 status = "disabled";
212 clocks = <&sysclk>;
213 resets = <&reset RESET_UART1>;
214 };
215
216 uart1: serial@300000 {
217 compatible = "ns16550a";
218 reg = <0x200000 0x100000>;
219 interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
220 reg-shift = <0>;
221 fifo-size = <16>;
222 reg-io-width = <1>;
223 current-speed = <115200>;
224 no-loopback-test;
225 status = "disabled";
226 clocks = <&sysclk>;
227 resets = <&reset RESET_UART2>;
228 };
229
230 rps@400000 {
231 #address-cells = <1>;
232 #size-cells = <1>;
233 compatible = "simple-bus";
234 ranges = <0 0x400000 0x100000>;
235
236 intc: interrupt-controller@0 {
237 compatible = "oxsemi,ox820-rps-irq", "oxsemi,ox810se-rps-irq";
238 interrupt-controller;
239 reg = <0 0x200>;
240 interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
241 #interrupt-cells = <1>;
242 valid-mask = <0xFFFFFFFF>;
243 clear-mask = <0>;
244 };
245
246 timer0: timer@200 {
247 compatible = "oxsemi,ox820-rps-timer";
248 reg = <0x200 0x40>;
249 clocks = <&sysclk>;
250 interrupt-parent = <&intc>;
251 interrupts = <4>;
252 };
253 };
254
255 sys: sys-ctrl@e00000 {
256 compatible = "oxsemi,ox820-sys-ctrl", "syscon", "simple-mfd";
257 reg = <0xe00000 0x200000>;
258
259 reset: reset-controller {
260 compatible = "oxsemi,ox820-reset", "oxsemi,ox810se-reset";
261 #reset-cells = <1>;
262 };
263
264 stdclk: stdclk {
265 compatible = "oxsemi,ox820-stdclk", "oxsemi,ox810se-stdclk";
266 #clock-cells = <1>;
267 };
268 };
269 };
270
271 apb-bridge@47000000 {
272 #address-cells = <1>;
273 #size-cells = <1>;
274 compatible = "simple-bus";
275 ranges = <0 0x47000000 0x1000000>;
276
277 scu: scu@0 {
278 compatible = "arm,arm11mp-scu";
279 reg = <0x0 0x100>;
280 };
281
282 local-timer@600 {
283 compatible = "arm,arm11mp-twd-timer";
284 reg = <0x600 0x20>;
285 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_RAW(3)|IRQ_TYPE_LEVEL_HIGH)>;
286 clocks = <&armclk>;
287 };
288
289 gic: gic@1000 {
290 compatible = "arm,arm11mp-gic";
291 interrupt-controller;
292 #interrupt-cells = <3>;
293 reg = <0x1000 0x1000>,
294 <0x100 0x500>;
295 };
296 };
297 };
298};