18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright (c) 2019 Linaro Ltd. 48c2ecf20Sopenharmony_ci * Author: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> 58c2ecf20Sopenharmony_ci */ 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ci#include <dt-bindings/clock/bm1880-clock.h> 88c2ecf20Sopenharmony_ci#include <dt-bindings/interrupt-controller/arm-gic.h> 98c2ecf20Sopenharmony_ci#include <dt-bindings/reset/bitmain,bm1880-reset.h> 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci/ { 128c2ecf20Sopenharmony_ci compatible = "bitmain,bm1880"; 138c2ecf20Sopenharmony_ci interrupt-parent = <&gic>; 148c2ecf20Sopenharmony_ci #address-cells = <2>; 158c2ecf20Sopenharmony_ci #size-cells = <2>; 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ci cpus { 188c2ecf20Sopenharmony_ci #address-cells = <1>; 198c2ecf20Sopenharmony_ci #size-cells = <0>; 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ci cpu0: cpu@0 { 228c2ecf20Sopenharmony_ci device_type = "cpu"; 238c2ecf20Sopenharmony_ci compatible = "arm,cortex-a53"; 248c2ecf20Sopenharmony_ci reg = <0x0>; 258c2ecf20Sopenharmony_ci enable-method = "psci"; 268c2ecf20Sopenharmony_ci }; 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ci cpu1: cpu@1 { 298c2ecf20Sopenharmony_ci device_type = "cpu"; 308c2ecf20Sopenharmony_ci compatible = "arm,cortex-a53"; 318c2ecf20Sopenharmony_ci reg = <0x1>; 328c2ecf20Sopenharmony_ci enable-method = "psci"; 338c2ecf20Sopenharmony_ci }; 348c2ecf20Sopenharmony_ci }; 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ci reserved-memory { 378c2ecf20Sopenharmony_ci #address-cells = <2>; 388c2ecf20Sopenharmony_ci #size-cells = <2>; 398c2ecf20Sopenharmony_ci ranges; 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ci secmon@100000000 { 428c2ecf20Sopenharmony_ci reg = <0x1 0x00000000 0x0 0x20000>; 438c2ecf20Sopenharmony_ci no-map; 448c2ecf20Sopenharmony_ci }; 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_ci jpu@130000000 { 478c2ecf20Sopenharmony_ci reg = <0x1 0x30000000 0x0 0x08000000>; // 128M 488c2ecf20Sopenharmony_ci no-map; 498c2ecf20Sopenharmony_ci }; 508c2ecf20Sopenharmony_ci 518c2ecf20Sopenharmony_ci vpu@138000000 { 528c2ecf20Sopenharmony_ci reg = <0x1 0x38000000 0x0 0x08000000>; // 128M 538c2ecf20Sopenharmony_ci no-map; 548c2ecf20Sopenharmony_ci }; 558c2ecf20Sopenharmony_ci }; 568c2ecf20Sopenharmony_ci 578c2ecf20Sopenharmony_ci psci { 588c2ecf20Sopenharmony_ci compatible = "arm,psci-0.2"; 598c2ecf20Sopenharmony_ci method = "smc"; 608c2ecf20Sopenharmony_ci }; 618c2ecf20Sopenharmony_ci 628c2ecf20Sopenharmony_ci timer { 638c2ecf20Sopenharmony_ci compatible = "arm,armv8-timer"; 648c2ecf20Sopenharmony_ci interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>, 658c2ecf20Sopenharmony_ci <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>, 668c2ecf20Sopenharmony_ci <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>, 678c2ecf20Sopenharmony_ci <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>; 688c2ecf20Sopenharmony_ci }; 698c2ecf20Sopenharmony_ci 708c2ecf20Sopenharmony_ci osc: osc { 718c2ecf20Sopenharmony_ci compatible = "fixed-clock"; 728c2ecf20Sopenharmony_ci clock-frequency = <25000000>; 738c2ecf20Sopenharmony_ci #clock-cells = <0>; 748c2ecf20Sopenharmony_ci }; 758c2ecf20Sopenharmony_ci 768c2ecf20Sopenharmony_ci soc { 778c2ecf20Sopenharmony_ci compatible = "simple-bus"; 788c2ecf20Sopenharmony_ci #address-cells = <2>; 798c2ecf20Sopenharmony_ci #size-cells = <2>; 808c2ecf20Sopenharmony_ci ranges; 818c2ecf20Sopenharmony_ci 828c2ecf20Sopenharmony_ci gic: interrupt-controller@50001000 { 838c2ecf20Sopenharmony_ci compatible = "arm,gic-400"; 848c2ecf20Sopenharmony_ci reg = <0x0 0x50001000 0x0 0x1000>, 858c2ecf20Sopenharmony_ci <0x0 0x50002000 0x0 0x2000>; 868c2ecf20Sopenharmony_ci interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_LOW>; 878c2ecf20Sopenharmony_ci interrupt-controller; 888c2ecf20Sopenharmony_ci #interrupt-cells = <3>; 898c2ecf20Sopenharmony_ci }; 908c2ecf20Sopenharmony_ci 918c2ecf20Sopenharmony_ci sctrl: system-controller@50010000 { 928c2ecf20Sopenharmony_ci compatible = "bitmain,bm1880-sctrl", "syscon", 938c2ecf20Sopenharmony_ci "simple-mfd"; 948c2ecf20Sopenharmony_ci reg = <0x0 0x50010000 0x0 0x1000>; 958c2ecf20Sopenharmony_ci #address-cells = <1>; 968c2ecf20Sopenharmony_ci #size-cells = <1>; 978c2ecf20Sopenharmony_ci ranges = <0x0 0x0 0x50010000 0x1000>; 988c2ecf20Sopenharmony_ci 998c2ecf20Sopenharmony_ci pinctrl: pinctrl@400 { 1008c2ecf20Sopenharmony_ci compatible = "bitmain,bm1880-pinctrl"; 1018c2ecf20Sopenharmony_ci reg = <0x400 0x120>; 1028c2ecf20Sopenharmony_ci }; 1038c2ecf20Sopenharmony_ci 1048c2ecf20Sopenharmony_ci clk: clock-controller@e8 { 1058c2ecf20Sopenharmony_ci compatible = "bitmain,bm1880-clk"; 1068c2ecf20Sopenharmony_ci reg = <0xe8 0x0c>, <0x800 0xb0>; 1078c2ecf20Sopenharmony_ci reg-names = "pll", "sys"; 1088c2ecf20Sopenharmony_ci clocks = <&osc>; 1098c2ecf20Sopenharmony_ci clock-names = "osc"; 1108c2ecf20Sopenharmony_ci #clock-cells = <1>; 1118c2ecf20Sopenharmony_ci }; 1128c2ecf20Sopenharmony_ci 1138c2ecf20Sopenharmony_ci rst: reset-controller@c00 { 1148c2ecf20Sopenharmony_ci compatible = "bitmain,bm1880-reset"; 1158c2ecf20Sopenharmony_ci reg = <0xc00 0x8>; 1168c2ecf20Sopenharmony_ci #reset-cells = <1>; 1178c2ecf20Sopenharmony_ci }; 1188c2ecf20Sopenharmony_ci }; 1198c2ecf20Sopenharmony_ci 1208c2ecf20Sopenharmony_ci gpio0: gpio@50027000 { 1218c2ecf20Sopenharmony_ci #address-cells = <1>; 1228c2ecf20Sopenharmony_ci #size-cells = <0>; 1238c2ecf20Sopenharmony_ci compatible = "snps,dw-apb-gpio"; 1248c2ecf20Sopenharmony_ci reg = <0x0 0x50027000 0x0 0x400>; 1258c2ecf20Sopenharmony_ci 1268c2ecf20Sopenharmony_ci porta: gpio-controller@0 { 1278c2ecf20Sopenharmony_ci compatible = "snps,dw-apb-gpio-port"; 1288c2ecf20Sopenharmony_ci gpio-controller; 1298c2ecf20Sopenharmony_ci #gpio-cells = <2>; 1308c2ecf20Sopenharmony_ci snps,nr-gpios = <32>; 1318c2ecf20Sopenharmony_ci reg = <0>; 1328c2ecf20Sopenharmony_ci interrupt-controller; 1338c2ecf20Sopenharmony_ci #interrupt-cells = <2>; 1348c2ecf20Sopenharmony_ci interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>; 1358c2ecf20Sopenharmony_ci }; 1368c2ecf20Sopenharmony_ci }; 1378c2ecf20Sopenharmony_ci 1388c2ecf20Sopenharmony_ci gpio1: gpio@50027400 { 1398c2ecf20Sopenharmony_ci #address-cells = <1>; 1408c2ecf20Sopenharmony_ci #size-cells = <0>; 1418c2ecf20Sopenharmony_ci compatible = "snps,dw-apb-gpio"; 1428c2ecf20Sopenharmony_ci reg = <0x0 0x50027400 0x0 0x400>; 1438c2ecf20Sopenharmony_ci 1448c2ecf20Sopenharmony_ci portb: gpio-controller@0 { 1458c2ecf20Sopenharmony_ci compatible = "snps,dw-apb-gpio-port"; 1468c2ecf20Sopenharmony_ci gpio-controller; 1478c2ecf20Sopenharmony_ci #gpio-cells = <2>; 1488c2ecf20Sopenharmony_ci snps,nr-gpios = <32>; 1498c2ecf20Sopenharmony_ci reg = <0>; 1508c2ecf20Sopenharmony_ci interrupt-controller; 1518c2ecf20Sopenharmony_ci #interrupt-cells = <2>; 1528c2ecf20Sopenharmony_ci interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>; 1538c2ecf20Sopenharmony_ci }; 1548c2ecf20Sopenharmony_ci }; 1558c2ecf20Sopenharmony_ci 1568c2ecf20Sopenharmony_ci gpio2: gpio@50027800 { 1578c2ecf20Sopenharmony_ci #address-cells = <1>; 1588c2ecf20Sopenharmony_ci #size-cells = <0>; 1598c2ecf20Sopenharmony_ci compatible = "snps,dw-apb-gpio"; 1608c2ecf20Sopenharmony_ci reg = <0x0 0x50027800 0x0 0x400>; 1618c2ecf20Sopenharmony_ci 1628c2ecf20Sopenharmony_ci portc: gpio-controller@0 { 1638c2ecf20Sopenharmony_ci compatible = "snps,dw-apb-gpio-port"; 1648c2ecf20Sopenharmony_ci gpio-controller; 1658c2ecf20Sopenharmony_ci #gpio-cells = <2>; 1668c2ecf20Sopenharmony_ci snps,nr-gpios = <8>; 1678c2ecf20Sopenharmony_ci reg = <0>; 1688c2ecf20Sopenharmony_ci interrupt-controller; 1698c2ecf20Sopenharmony_ci #interrupt-cells = <2>; 1708c2ecf20Sopenharmony_ci interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>; 1718c2ecf20Sopenharmony_ci }; 1728c2ecf20Sopenharmony_ci }; 1738c2ecf20Sopenharmony_ci 1748c2ecf20Sopenharmony_ci uart0: serial@58018000 { 1758c2ecf20Sopenharmony_ci compatible = "snps,dw-apb-uart"; 1768c2ecf20Sopenharmony_ci reg = <0x0 0x58018000 0x0 0x2000>; 1778c2ecf20Sopenharmony_ci clocks = <&clk BM1880_CLK_UART_500M>, 1788c2ecf20Sopenharmony_ci <&clk BM1880_CLK_APB_UART>; 1798c2ecf20Sopenharmony_ci clock-names = "baudclk", "apb_pclk"; 1808c2ecf20Sopenharmony_ci interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>; 1818c2ecf20Sopenharmony_ci reg-shift = <2>; 1828c2ecf20Sopenharmony_ci reg-io-width = <4>; 1838c2ecf20Sopenharmony_ci resets = <&rst BM1880_RST_UART0_1_CLK>; 1848c2ecf20Sopenharmony_ci status = "disabled"; 1858c2ecf20Sopenharmony_ci }; 1868c2ecf20Sopenharmony_ci 1878c2ecf20Sopenharmony_ci uart1: serial@5801A000 { 1888c2ecf20Sopenharmony_ci compatible = "snps,dw-apb-uart"; 1898c2ecf20Sopenharmony_ci reg = <0x0 0x5801a000 0x0 0x2000>; 1908c2ecf20Sopenharmony_ci clocks = <&clk BM1880_CLK_UART_500M>, 1918c2ecf20Sopenharmony_ci <&clk BM1880_CLK_APB_UART>; 1928c2ecf20Sopenharmony_ci clock-names = "baudclk", "apb_pclk"; 1938c2ecf20Sopenharmony_ci interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>; 1948c2ecf20Sopenharmony_ci reg-shift = <2>; 1958c2ecf20Sopenharmony_ci reg-io-width = <4>; 1968c2ecf20Sopenharmony_ci resets = <&rst BM1880_RST_UART0_1_ACLK>; 1978c2ecf20Sopenharmony_ci status = "disabled"; 1988c2ecf20Sopenharmony_ci }; 1998c2ecf20Sopenharmony_ci 2008c2ecf20Sopenharmony_ci uart2: serial@5801C000 { 2018c2ecf20Sopenharmony_ci compatible = "snps,dw-apb-uart"; 2028c2ecf20Sopenharmony_ci reg = <0x0 0x5801c000 0x0 0x2000>; 2038c2ecf20Sopenharmony_ci clocks = <&clk BM1880_CLK_UART_500M>, 2048c2ecf20Sopenharmony_ci <&clk BM1880_CLK_APB_UART>; 2058c2ecf20Sopenharmony_ci clock-names = "baudclk", "apb_pclk"; 2068c2ecf20Sopenharmony_ci interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>; 2078c2ecf20Sopenharmony_ci reg-shift = <2>; 2088c2ecf20Sopenharmony_ci reg-io-width = <4>; 2098c2ecf20Sopenharmony_ci resets = <&rst BM1880_RST_UART2_3_CLK>; 2108c2ecf20Sopenharmony_ci status = "disabled"; 2118c2ecf20Sopenharmony_ci }; 2128c2ecf20Sopenharmony_ci 2138c2ecf20Sopenharmony_ci uart3: serial@5801E000 { 2148c2ecf20Sopenharmony_ci compatible = "snps,dw-apb-uart"; 2158c2ecf20Sopenharmony_ci reg = <0x0 0x5801e000 0x0 0x2000>; 2168c2ecf20Sopenharmony_ci clocks = <&clk BM1880_CLK_UART_500M>, 2178c2ecf20Sopenharmony_ci <&clk BM1880_CLK_APB_UART>; 2188c2ecf20Sopenharmony_ci clock-names = "baudclk", "apb_pclk"; 2198c2ecf20Sopenharmony_ci interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>; 2208c2ecf20Sopenharmony_ci reg-shift = <2>; 2218c2ecf20Sopenharmony_ci reg-io-width = <4>; 2228c2ecf20Sopenharmony_ci resets = <&rst BM1880_RST_UART2_3_ACLK>; 2238c2ecf20Sopenharmony_ci status = "disabled"; 2248c2ecf20Sopenharmony_ci }; 2258c2ecf20Sopenharmony_ci }; 2268c2ecf20Sopenharmony_ci}; 227