162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (C) 2014, 2015 Synopsys, Inc. (www.synopsys.com) 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci/* 762306a36Sopenharmony_ci * Device tree for AXC003 CPU card: HS38x2 (Dual Core) with IDU intc 862306a36Sopenharmony_ci */ 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci/include/ "skeleton_hs_idu.dtsi" 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci/ { 1362306a36Sopenharmony_ci compatible = "snps,arc"; 1462306a36Sopenharmony_ci #address-cells = <2>; 1562306a36Sopenharmony_ci #size-cells = <2>; 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci cpu_card { 1862306a36Sopenharmony_ci compatible = "simple-bus"; 1962306a36Sopenharmony_ci #address-cells = <1>; 2062306a36Sopenharmony_ci #size-cells = <1>; 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci ranges = <0x00000000 0x0 0xf0000000 0x10000000>; 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci input_clk: input-clk { 2562306a36Sopenharmony_ci #clock-cells = <0>; 2662306a36Sopenharmony_ci compatible = "fixed-clock"; 2762306a36Sopenharmony_ci clock-frequency = <33333333>; 2862306a36Sopenharmony_ci }; 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci core_clk: core-clk@80 { 3162306a36Sopenharmony_ci compatible = "snps,axs10x-arc-pll-clock"; 3262306a36Sopenharmony_ci reg = <0x80 0x10>, <0x100 0x10>; 3362306a36Sopenharmony_ci #clock-cells = <0>; 3462306a36Sopenharmony_ci clocks = <&input_clk>; 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci /* 3762306a36Sopenharmony_ci * Set initial core pll output frequency to 100MHz. 3862306a36Sopenharmony_ci * It will be applied at the core pll driver probing 3962306a36Sopenharmony_ci * on early boot. 4062306a36Sopenharmony_ci */ 4162306a36Sopenharmony_ci assigned-clocks = <&core_clk>; 4262306a36Sopenharmony_ci assigned-clock-rates = <100000000>; 4362306a36Sopenharmony_ci }; 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci core_intc: archs-intc@cpu { 4662306a36Sopenharmony_ci compatible = "snps,archs-intc"; 4762306a36Sopenharmony_ci interrupt-controller; 4862306a36Sopenharmony_ci #interrupt-cells = <1>; 4962306a36Sopenharmony_ci }; 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci idu_intc: idu-interrupt-controller { 5262306a36Sopenharmony_ci compatible = "snps,archs-idu-intc"; 5362306a36Sopenharmony_ci interrupt-controller; 5462306a36Sopenharmony_ci interrupt-parent = <&core_intc>; 5562306a36Sopenharmony_ci #interrupt-cells = <1>; 5662306a36Sopenharmony_ci }; 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ci /* 5962306a36Sopenharmony_ci * this GPIO block ORs all interrupts on CPU card (creg,..) 6062306a36Sopenharmony_ci * to uplink only 1 IRQ to ARC core intc 6162306a36Sopenharmony_ci */ 6262306a36Sopenharmony_ci dw-apb-gpio@2000 { 6362306a36Sopenharmony_ci compatible = "snps,dw-apb-gpio"; 6462306a36Sopenharmony_ci reg = < 0x2000 0x80 >; 6562306a36Sopenharmony_ci #address-cells = <1>; 6662306a36Sopenharmony_ci #size-cells = <0>; 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_ci ictl_intc: gpio-controller@0 { 6962306a36Sopenharmony_ci compatible = "snps,dw-apb-gpio-port"; 7062306a36Sopenharmony_ci gpio-controller; 7162306a36Sopenharmony_ci #gpio-cells = <2>; 7262306a36Sopenharmony_ci snps,nr-gpios = <30>; 7362306a36Sopenharmony_ci reg = <0>; 7462306a36Sopenharmony_ci interrupt-controller; 7562306a36Sopenharmony_ci #interrupt-cells = <2>; 7662306a36Sopenharmony_ci interrupt-parent = <&idu_intc>; 7762306a36Sopenharmony_ci interrupts = <1>; 7862306a36Sopenharmony_ci }; 7962306a36Sopenharmony_ci }; 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_ci debug_uart: dw-apb-uart@5000 { 8262306a36Sopenharmony_ci compatible = "snps,dw-apb-uart"; 8362306a36Sopenharmony_ci reg = <0x5000 0x100>; 8462306a36Sopenharmony_ci clock-frequency = <33333000>; 8562306a36Sopenharmony_ci interrupt-parent = <&ictl_intc>; 8662306a36Sopenharmony_ci interrupts = <2 4>; 8762306a36Sopenharmony_ci baud = <115200>; 8862306a36Sopenharmony_ci reg-shift = <2>; 8962306a36Sopenharmony_ci reg-io-width = <4>; 9062306a36Sopenharmony_ci }; 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_ci arcpct0: pct { 9362306a36Sopenharmony_ci compatible = "snps,archs-pct"; 9462306a36Sopenharmony_ci #interrupt-cells = <1>; 9562306a36Sopenharmony_ci interrupt-parent = <&core_intc>; 9662306a36Sopenharmony_ci interrupts = <20>; 9762306a36Sopenharmony_ci }; 9862306a36Sopenharmony_ci }; 9962306a36Sopenharmony_ci 10062306a36Sopenharmony_ci /* 10162306a36Sopenharmony_ci * Mark DMA peripherals connected via IOC port as dma-coherent. We do 10262306a36Sopenharmony_ci * it via overlay because peripherals defined in axs10x_mb.dtsi are 10362306a36Sopenharmony_ci * used for both AXS101 and AXS103 boards and only AXS103 has IOC (so 10462306a36Sopenharmony_ci * only AXS103 board has HW-coherent DMA peripherals) 10562306a36Sopenharmony_ci * We don't need to mark pgu@17000 as dma-coherent because it uses 10662306a36Sopenharmony_ci * external DMA buffer located outside of IOC aperture. 10762306a36Sopenharmony_ci */ 10862306a36Sopenharmony_ci axs10x_mb { 10962306a36Sopenharmony_ci ethernet@18000 { 11062306a36Sopenharmony_ci dma-coherent; 11162306a36Sopenharmony_ci }; 11262306a36Sopenharmony_ci 11362306a36Sopenharmony_ci usb@40000 { 11462306a36Sopenharmony_ci dma-coherent; 11562306a36Sopenharmony_ci }; 11662306a36Sopenharmony_ci 11762306a36Sopenharmony_ci usb@60000 { 11862306a36Sopenharmony_ci dma-coherent; 11962306a36Sopenharmony_ci }; 12062306a36Sopenharmony_ci 12162306a36Sopenharmony_ci mmc@15000 { 12262306a36Sopenharmony_ci dma-coherent; 12362306a36Sopenharmony_ci }; 12462306a36Sopenharmony_ci }; 12562306a36Sopenharmony_ci 12662306a36Sopenharmony_ci /* 12762306a36Sopenharmony_ci * This INTC is actually connected to DW APB GPIO 12862306a36Sopenharmony_ci * which acts as a wire between MB INTC and CPU INTC. 12962306a36Sopenharmony_ci * GPIO INTC is configured in platform init code 13062306a36Sopenharmony_ci * and here we mimic direct connection from MB INTC to 13162306a36Sopenharmony_ci * CPU INTC, thus we set "interrupts = <0 1>" instead of 13262306a36Sopenharmony_ci * "interrupts = <12>" 13362306a36Sopenharmony_ci * 13462306a36Sopenharmony_ci * This intc actually resides on MB, but we move it here to 13562306a36Sopenharmony_ci * avoid duplicating the MB dtsi file given that IRQ from 13662306a36Sopenharmony_ci * this intc to cpu intc are different for axs101 and axs103 13762306a36Sopenharmony_ci */ 13862306a36Sopenharmony_ci mb_intc: interrupt-controller@e0012000 { 13962306a36Sopenharmony_ci #interrupt-cells = <1>; 14062306a36Sopenharmony_ci compatible = "snps,dw-apb-ictl"; 14162306a36Sopenharmony_ci reg = < 0x0 0xe0012000 0x0 0x200 >; 14262306a36Sopenharmony_ci interrupt-controller; 14362306a36Sopenharmony_ci interrupt-parent = <&idu_intc>; 14462306a36Sopenharmony_ci interrupts = <0>; 14562306a36Sopenharmony_ci }; 14662306a36Sopenharmony_ci 14762306a36Sopenharmony_ci memory { 14862306a36Sopenharmony_ci device_type = "memory"; 14962306a36Sopenharmony_ci /* CONFIG_LINUX_RAM_BASE needs to match low mem start */ 15062306a36Sopenharmony_ci reg = <0x0 0x80000000 0x0 0x20000000 /* 512 MiB low mem */ 15162306a36Sopenharmony_ci 0x1 0xc0000000 0x0 0x40000000>; /* 1 GiB highmem */ 15262306a36Sopenharmony_ci }; 15362306a36Sopenharmony_ci 15462306a36Sopenharmony_ci reserved-memory { 15562306a36Sopenharmony_ci #address-cells = <2>; 15662306a36Sopenharmony_ci #size-cells = <2>; 15762306a36Sopenharmony_ci ranges; 15862306a36Sopenharmony_ci /* 15962306a36Sopenharmony_ci * Move frame buffer out of IOC aperture (0x8z-0xaz). 16062306a36Sopenharmony_ci */ 16162306a36Sopenharmony_ci frame_buffer: frame_buffer@be000000 { 16262306a36Sopenharmony_ci compatible = "shared-dma-pool"; 16362306a36Sopenharmony_ci reg = <0x0 0xbe000000 0x0 0x2000000>; 16462306a36Sopenharmony_ci no-map; 16562306a36Sopenharmony_ci }; 16662306a36Sopenharmony_ci }; 16762306a36Sopenharmony_ci}; 168