1 // SPDX-License-Identifier: (GPL-2.0+ or MIT)
3 * Copyright (c) 2020 Yangtao Li <frank@allwinnertech.com>
6 #include <dt-bindings/interrupt-controller/arm-gic.h>
7 #include <dt-bindings/clock/sun50i-a100-ccu.h>
8 #include <dt-bindings/clock/sun50i-a100-r-ccu.h>
9 #include <dt-bindings/reset/sun50i-a100-ccu.h>
10 #include <dt-bindings/reset/sun50i-a100-r-ccu.h>
13 interrupt-parent = <&gic>;
22 compatible = "arm,cortex-a53";
25 enable-method = "psci";
29 compatible = "arm,cortex-a53";
32 enable-method = "psci";
36 compatible = "arm,cortex-a53";
39 enable-method = "psci";
43 compatible = "arm,cortex-a53";
46 enable-method = "psci";
51 compatible = "arm,psci-1.0";
55 dcxo24M: dcxo24M-clk {
56 compatible = "fixed-clock";
57 clock-frequency = <24000000>;
58 clock-output-names = "dcxo24M";
62 iosc: internal-osc-clk {
63 compatible = "fixed-clock";
64 clock-frequency = <16000000>;
65 clock-accuracy = <300000000>;
66 clock-output-names = "iosc";
71 compatible = "fixed-clock";
72 clock-frequency = <32768>;
73 clock-output-names = "osc32k";
78 compatible = "arm,armv8-timer";
79 interrupts = <GIC_PPI 13
80 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
82 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
84 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
86 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
90 compatible = "simple-bus";
93 ranges = <0 0 0 0x3fffffff>;
96 compatible = "allwinner,sun50i-a100-ccu";
97 reg = <0x03001000 0x1000>;
98 clocks = <&dcxo24M>, <&osc32k>, <&iosc>;
99 clock-names = "hosc", "losc", "iosc";
104 gic: interrupt-controller@3021000 {
105 compatible = "arm,gic-400";
106 reg = <0x03021000 0x1000>, <0x03022000 0x2000>,
107 <0x03024000 0x2000>, <0x03026000 0x2000>;
108 interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) |
109 IRQ_TYPE_LEVEL_HIGH)>;
110 interrupt-controller;
111 #interrupt-cells = <3>;
115 compatible = "allwinner,sun50i-a100-sid",
116 "allwinner,sun50i-a64-sid";
117 reg = <0x03006000 0x1000>;
118 #address-cells = <1>;
121 ths_calibration: calib@14 {
126 pio: pinctrl@300b000 {
127 compatible = "allwinner,sun50i-a100-pinctrl";
128 reg = <0x0300b000 0x400>;
129 interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
130 <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>,
131 <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>,
132 <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>,
133 <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>,
134 <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>,
135 <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
136 clocks = <&ccu CLK_APB1>, <&dcxo24M>, <&osc32k>;
137 clock-names = "apb", "hosc", "losc";
140 interrupt-controller;
141 #interrupt-cells = <3>;
143 uart0_pb_pins: uart0-pb-pins {
144 pins = "PB9", "PB10";
149 uart0: serial@5000000 {
150 compatible = "snps,dw-apb-uart";
151 reg = <0x05000000 0x400>;
152 interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
155 clocks = <&ccu CLK_BUS_UART0>;
156 resets = <&ccu RST_BUS_UART0>;
160 uart1: serial@5000400 {
161 compatible = "snps,dw-apb-uart";
162 reg = <0x05000400 0x400>;
163 interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
166 clocks = <&ccu CLK_BUS_UART1>;
167 resets = <&ccu RST_BUS_UART1>;
171 uart2: serial@5000800 {
172 compatible = "snps,dw-apb-uart";
173 reg = <0x05000800 0x400>;
174 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
177 clocks = <&ccu CLK_BUS_UART2>;
178 resets = <&ccu RST_BUS_UART2>;
182 uart3: serial@5000c00 {
183 compatible = "snps,dw-apb-uart";
184 reg = <0x05000c00 0x400>;
185 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
188 clocks = <&ccu CLK_BUS_UART3>;
189 resets = <&ccu RST_BUS_UART3>;
193 uart4: serial@5001000 {
194 compatible = "snps,dw-apb-uart";
195 reg = <0x05001000 0x400>;
196 interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
199 clocks = <&ccu CLK_BUS_UART4>;
200 resets = <&ccu RST_BUS_UART4>;
205 compatible = "allwinner,sun50i-a100-i2c",
206 "allwinner,sun6i-a31-i2c";
207 reg = <0x05002000 0x400>;
208 interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
209 clocks = <&ccu CLK_BUS_I2C0>;
210 resets = <&ccu RST_BUS_I2C0>;
212 #address-cells = <1>;
217 compatible = "allwinner,sun50i-a100-i2c",
218 "allwinner,sun6i-a31-i2c";
219 reg = <0x05002400 0x400>;
220 interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
221 clocks = <&ccu CLK_BUS_I2C1>;
222 resets = <&ccu RST_BUS_I2C1>;
224 #address-cells = <1>;
229 compatible = "allwinner,sun50i-a100-i2c",
230 "allwinner,sun6i-a31-i2c";
231 reg = <0x05002800 0x400>;
232 interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
233 clocks = <&ccu CLK_BUS_I2C2>;
234 resets = <&ccu RST_BUS_I2C2>;
236 #address-cells = <1>;
241 compatible = "allwinner,sun50i-a100-i2c",
242 "allwinner,sun6i-a31-i2c";
243 reg = <0x05002c00 0x400>;
244 interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
245 clocks = <&ccu CLK_BUS_I2C3>;
246 resets = <&ccu RST_BUS_I2C3>;
248 #address-cells = <1>;
252 ths: thermal-sensor@5070400 {
253 compatible = "allwinner,sun50i-a100-ths";
254 reg = <0x05070400 0x100>;
255 interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
256 clocks = <&ccu CLK_BUS_THS>;
258 resets = <&ccu RST_BUS_THS>;
259 nvmem-cells = <&ths_calibration>;
260 nvmem-cell-names = "calibration";
261 #thermal-sensor-cells = <1>;
264 r_ccu: clock@7010000 {
265 compatible = "allwinner,sun50i-a100-r-ccu";
266 reg = <0x07010000 0x300>;
267 clocks = <&dcxo24M>, <&osc32k>, <&iosc>,
268 <&ccu CLK_PLL_PERIPH0>;
269 clock-names = "hosc", "losc", "iosc", "pll-periph";
274 r_intc: interrupt-controller@7010320 {
275 compatible = "allwinner,sun50i-a100-nmi",
276 "allwinner,sun9i-a80-nmi";
277 interrupt-controller;
278 #interrupt-cells = <2>;
279 reg = <0x07010320 0xc>;
280 interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
283 r_pio: pinctrl@7022000 {
284 compatible = "allwinner,sun50i-a100-r-pinctrl";
285 reg = <0x07022000 0x400>;
286 interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
287 clocks = <&r_ccu CLK_R_APB1>, <&dcxo24M>, <&osc32k>;
288 clock-names = "apb", "hosc", "losc";
291 interrupt-controller;
292 #interrupt-cells = <3>;
294 r_i2c0_pins: r-i2c0-pins {
299 r_i2c1_pins: r-i2c1-pins {
305 r_uart: serial@7080000 {
306 compatible = "snps,dw-apb-uart";
307 reg = <0x07080000 0x400>;
308 interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
311 clocks = <&r_ccu CLK_R_APB2_UART>;
312 resets = <&r_ccu RST_R_APB2_UART>;
316 r_i2c0: i2c@7081400 {
317 compatible = "allwinner,sun50i-a100-i2c",
318 "allwinner,sun6i-a31-i2c";
319 reg = <0x07081400 0x400>;
320 interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>;
321 clocks = <&r_ccu CLK_R_APB2_I2C0>;
322 resets = <&r_ccu RST_R_APB2_I2C0>;
323 pinctrl-names = "default";
324 pinctrl-0 = <&r_i2c0_pins>;
326 #address-cells = <1>;
330 r_i2c1: i2c@7081800 {
331 compatible = "allwinner,sun50i-a100-i2c",
332 "allwinner,sun6i-a31-i2c";
333 reg = <0x07081800 0x400>;
334 interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
335 clocks = <&r_ccu CLK_R_APB2_I2C1>;
336 resets = <&r_ccu RST_R_APB2_I2C1>;
337 pinctrl-names = "default";
338 pinctrl-0 = <&r_i2c1_pins>;
340 #address-cells = <1>;
347 polling-delay-passive = <0>;
349 thermal-sensors = <&ths 0>;
353 polling-delay-passive = <0>;
355 thermal-sensors = <&ths 2>;
359 polling-delay-passive = <0>;
361 thermal-sensors = <&ths 1>;