18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright (C) 2014-15 Synopsys, Inc. (www.synopsys.com) 48c2ecf20Sopenharmony_ci */ 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci/* 78c2ecf20Sopenharmony_ci * Device tree for AXC003 CPU card: HS38x UP configuration 88c2ecf20Sopenharmony_ci */ 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci/include/ "skeleton_hs.dtsi" 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_ci/ { 138c2ecf20Sopenharmony_ci compatible = "snps,arc"; 148c2ecf20Sopenharmony_ci #address-cells = <2>; 158c2ecf20Sopenharmony_ci #size-cells = <2>; 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ci cpu_card { 188c2ecf20Sopenharmony_ci compatible = "simple-bus"; 198c2ecf20Sopenharmony_ci #address-cells = <1>; 208c2ecf20Sopenharmony_ci #size-cells = <1>; 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_ci ranges = <0x00000000 0x0 0xf0000000 0x10000000>; 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ci input_clk: input-clk { 258c2ecf20Sopenharmony_ci #clock-cells = <0>; 268c2ecf20Sopenharmony_ci compatible = "fixed-clock"; 278c2ecf20Sopenharmony_ci clock-frequency = <33333333>; 288c2ecf20Sopenharmony_ci }; 298c2ecf20Sopenharmony_ci 308c2ecf20Sopenharmony_ci core_clk: core-clk@80 { 318c2ecf20Sopenharmony_ci compatible = "snps,axs10x-arc-pll-clock"; 328c2ecf20Sopenharmony_ci reg = <0x80 0x10>, <0x100 0x10>; 338c2ecf20Sopenharmony_ci #clock-cells = <0>; 348c2ecf20Sopenharmony_ci clocks = <&input_clk>; 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ci /* 378c2ecf20Sopenharmony_ci * Set initial core pll output frequency to 90MHz. 388c2ecf20Sopenharmony_ci * It will be applied at the core pll driver probing 398c2ecf20Sopenharmony_ci * on early boot. 408c2ecf20Sopenharmony_ci */ 418c2ecf20Sopenharmony_ci assigned-clocks = <&core_clk>; 428c2ecf20Sopenharmony_ci assigned-clock-rates = <90000000>; 438c2ecf20Sopenharmony_ci }; 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_ci core_intc: archs-intc@cpu { 468c2ecf20Sopenharmony_ci compatible = "snps,archs-intc"; 478c2ecf20Sopenharmony_ci interrupt-controller; 488c2ecf20Sopenharmony_ci #interrupt-cells = <1>; 498c2ecf20Sopenharmony_ci }; 508c2ecf20Sopenharmony_ci 518c2ecf20Sopenharmony_ci /* 528c2ecf20Sopenharmony_ci * this GPIO block ORs all interrupts on CPU card (creg,..) 538c2ecf20Sopenharmony_ci * to uplink only 1 IRQ to ARC core intc 548c2ecf20Sopenharmony_ci */ 558c2ecf20Sopenharmony_ci dw-apb-gpio@2000 { 568c2ecf20Sopenharmony_ci compatible = "snps,dw-apb-gpio"; 578c2ecf20Sopenharmony_ci reg = < 0x2000 0x80 >; 588c2ecf20Sopenharmony_ci #address-cells = <1>; 598c2ecf20Sopenharmony_ci #size-cells = <0>; 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_ci ictl_intc: gpio-controller@0 { 628c2ecf20Sopenharmony_ci compatible = "snps,dw-apb-gpio-port"; 638c2ecf20Sopenharmony_ci gpio-controller; 648c2ecf20Sopenharmony_ci #gpio-cells = <2>; 658c2ecf20Sopenharmony_ci snps,nr-gpios = <30>; 668c2ecf20Sopenharmony_ci reg = <0>; 678c2ecf20Sopenharmony_ci interrupt-controller; 688c2ecf20Sopenharmony_ci #interrupt-cells = <2>; 698c2ecf20Sopenharmony_ci interrupt-parent = <&core_intc>; 708c2ecf20Sopenharmony_ci interrupts = <25>; 718c2ecf20Sopenharmony_ci }; 728c2ecf20Sopenharmony_ci }; 738c2ecf20Sopenharmony_ci 748c2ecf20Sopenharmony_ci debug_uart: dw-apb-uart@5000 { 758c2ecf20Sopenharmony_ci compatible = "snps,dw-apb-uart"; 768c2ecf20Sopenharmony_ci reg = <0x5000 0x100>; 778c2ecf20Sopenharmony_ci clock-frequency = <33333000>; 788c2ecf20Sopenharmony_ci interrupt-parent = <&ictl_intc>; 798c2ecf20Sopenharmony_ci interrupts = <2 4>; 808c2ecf20Sopenharmony_ci baud = <115200>; 818c2ecf20Sopenharmony_ci reg-shift = <2>; 828c2ecf20Sopenharmony_ci reg-io-width = <4>; 838c2ecf20Sopenharmony_ci }; 848c2ecf20Sopenharmony_ci 858c2ecf20Sopenharmony_ci arcpct0: pct { 868c2ecf20Sopenharmony_ci compatible = "snps,archs-pct"; 878c2ecf20Sopenharmony_ci #interrupt-cells = <1>; 888c2ecf20Sopenharmony_ci interrupt-parent = <&core_intc>; 898c2ecf20Sopenharmony_ci interrupts = <20>; 908c2ecf20Sopenharmony_ci }; 918c2ecf20Sopenharmony_ci }; 928c2ecf20Sopenharmony_ci 938c2ecf20Sopenharmony_ci /* 948c2ecf20Sopenharmony_ci * Mark DMA peripherals connected via IOC port as dma-coherent. We do 958c2ecf20Sopenharmony_ci * it via overlay because peripherals defined in axs10x_mb.dtsi are 968c2ecf20Sopenharmony_ci * used for both AXS101 and AXS103 boards and only AXS103 has IOC (so 978c2ecf20Sopenharmony_ci * only AXS103 board has HW-coherent DMA peripherals) 988c2ecf20Sopenharmony_ci * We don't need to mark pgu@17000 as dma-coherent because it uses 998c2ecf20Sopenharmony_ci * external DMA buffer located outside of IOC aperture. 1008c2ecf20Sopenharmony_ci */ 1018c2ecf20Sopenharmony_ci axs10x_mb { 1028c2ecf20Sopenharmony_ci ethernet@18000 { 1038c2ecf20Sopenharmony_ci dma-coherent; 1048c2ecf20Sopenharmony_ci }; 1058c2ecf20Sopenharmony_ci 1068c2ecf20Sopenharmony_ci ehci@40000 { 1078c2ecf20Sopenharmony_ci dma-coherent; 1088c2ecf20Sopenharmony_ci }; 1098c2ecf20Sopenharmony_ci 1108c2ecf20Sopenharmony_ci ohci@60000 { 1118c2ecf20Sopenharmony_ci dma-coherent; 1128c2ecf20Sopenharmony_ci }; 1138c2ecf20Sopenharmony_ci 1148c2ecf20Sopenharmony_ci mmc@15000 { 1158c2ecf20Sopenharmony_ci dma-coherent; 1168c2ecf20Sopenharmony_ci }; 1178c2ecf20Sopenharmony_ci }; 1188c2ecf20Sopenharmony_ci 1198c2ecf20Sopenharmony_ci /* 1208c2ecf20Sopenharmony_ci * The DW APB ICTL intc on MB is connected to CPU intc via a 1218c2ecf20Sopenharmony_ci * DT "invisible" DW APB GPIO block, configured to simply pass thru 1228c2ecf20Sopenharmony_ci * interrupts - setup accordinly in platform init (plat-axs10x/ax10x.c) 1238c2ecf20Sopenharmony_ci * 1248c2ecf20Sopenharmony_ci * So here we mimic a direct connection betwen them, ignoring the 1258c2ecf20Sopenharmony_ci * ABPG GPIO. Thus set "interrupts = <24>" (DW APB GPIO to core) 1268c2ecf20Sopenharmony_ci * instead of "interrupts = <12>" (DW APB ICTL to DW APB GPIO) 1278c2ecf20Sopenharmony_ci * 1288c2ecf20Sopenharmony_ci * This intc actually resides on MB, but we move it here to 1298c2ecf20Sopenharmony_ci * avoid duplicating the MB dtsi file given that IRQ from 1308c2ecf20Sopenharmony_ci * this intc to cpu intc are different for axs101 and axs103 1318c2ecf20Sopenharmony_ci */ 1328c2ecf20Sopenharmony_ci mb_intc: interrupt-controller@e0012000 { 1338c2ecf20Sopenharmony_ci #interrupt-cells = <1>; 1348c2ecf20Sopenharmony_ci compatible = "snps,dw-apb-ictl"; 1358c2ecf20Sopenharmony_ci reg = < 0x0 0xe0012000 0x0 0x200 >; 1368c2ecf20Sopenharmony_ci interrupt-controller; 1378c2ecf20Sopenharmony_ci interrupt-parent = <&core_intc>; 1388c2ecf20Sopenharmony_ci interrupts = < 24 >; 1398c2ecf20Sopenharmony_ci }; 1408c2ecf20Sopenharmony_ci 1418c2ecf20Sopenharmony_ci memory { 1428c2ecf20Sopenharmony_ci device_type = "memory"; 1438c2ecf20Sopenharmony_ci /* CONFIG_LINUX_RAM_BASE needs to match low mem start */ 1448c2ecf20Sopenharmony_ci reg = <0x0 0x80000000 0x0 0x20000000 /* 512 MiB low mem */ 1458c2ecf20Sopenharmony_ci 0x1 0xc0000000 0x0 0x40000000>; /* 1 GiB highmem */ 1468c2ecf20Sopenharmony_ci }; 1478c2ecf20Sopenharmony_ci 1488c2ecf20Sopenharmony_ci reserved-memory { 1498c2ecf20Sopenharmony_ci #address-cells = <2>; 1508c2ecf20Sopenharmony_ci #size-cells = <2>; 1518c2ecf20Sopenharmony_ci ranges; 1528c2ecf20Sopenharmony_ci /* 1538c2ecf20Sopenharmony_ci * Move frame buffer out of IOC aperture (0x8z-0xaz). 1548c2ecf20Sopenharmony_ci */ 1558c2ecf20Sopenharmony_ci frame_buffer: frame_buffer@be000000 { 1568c2ecf20Sopenharmony_ci compatible = "shared-dma-pool"; 1578c2ecf20Sopenharmony_ci reg = <0x0 0xbe000000 0x0 0x2000000>; 1588c2ecf20Sopenharmony_ci no-map; 1598c2ecf20Sopenharmony_ci }; 1608c2ecf20Sopenharmony_ci }; 1618c2ecf20Sopenharmony_ci}; 162