162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (C) 2014-15 Synopsys, Inc. (www.synopsys.com) 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci/* 762306a36Sopenharmony_ci * Device tree for AXC003 CPU card: HS38x UP configuration 862306a36Sopenharmony_ci */ 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci/include/ "skeleton_hs.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 90MHz. 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 = <90000000>; 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 /* 5262306a36Sopenharmony_ci * this GPIO block ORs all interrupts on CPU card (creg,..) 5362306a36Sopenharmony_ci * to uplink only 1 IRQ to ARC core intc 5462306a36Sopenharmony_ci */ 5562306a36Sopenharmony_ci dw-apb-gpio@2000 { 5662306a36Sopenharmony_ci compatible = "snps,dw-apb-gpio"; 5762306a36Sopenharmony_ci reg = < 0x2000 0x80 >; 5862306a36Sopenharmony_ci #address-cells = <1>; 5962306a36Sopenharmony_ci #size-cells = <0>; 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_ci ictl_intc: gpio-controller@0 { 6262306a36Sopenharmony_ci compatible = "snps,dw-apb-gpio-port"; 6362306a36Sopenharmony_ci gpio-controller; 6462306a36Sopenharmony_ci #gpio-cells = <2>; 6562306a36Sopenharmony_ci snps,nr-gpios = <30>; 6662306a36Sopenharmony_ci reg = <0>; 6762306a36Sopenharmony_ci interrupt-controller; 6862306a36Sopenharmony_ci #interrupt-cells = <2>; 6962306a36Sopenharmony_ci interrupt-parent = <&core_intc>; 7062306a36Sopenharmony_ci interrupts = <25>; 7162306a36Sopenharmony_ci }; 7262306a36Sopenharmony_ci }; 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_ci debug_uart: dw-apb-uart@5000 { 7562306a36Sopenharmony_ci compatible = "snps,dw-apb-uart"; 7662306a36Sopenharmony_ci reg = <0x5000 0x100>; 7762306a36Sopenharmony_ci clock-frequency = <33333000>; 7862306a36Sopenharmony_ci interrupt-parent = <&ictl_intc>; 7962306a36Sopenharmony_ci interrupts = <2 4>; 8062306a36Sopenharmony_ci baud = <115200>; 8162306a36Sopenharmony_ci reg-shift = <2>; 8262306a36Sopenharmony_ci reg-io-width = <4>; 8362306a36Sopenharmony_ci }; 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_ci arcpct0: pct { 8662306a36Sopenharmony_ci compatible = "snps,archs-pct"; 8762306a36Sopenharmony_ci #interrupt-cells = <1>; 8862306a36Sopenharmony_ci interrupt-parent = <&core_intc>; 8962306a36Sopenharmony_ci interrupts = <20>; 9062306a36Sopenharmony_ci }; 9162306a36Sopenharmony_ci }; 9262306a36Sopenharmony_ci 9362306a36Sopenharmony_ci /* 9462306a36Sopenharmony_ci * Mark DMA peripherals connected via IOC port as dma-coherent. We do 9562306a36Sopenharmony_ci * it via overlay because peripherals defined in axs10x_mb.dtsi are 9662306a36Sopenharmony_ci * used for both AXS101 and AXS103 boards and only AXS103 has IOC (so 9762306a36Sopenharmony_ci * only AXS103 board has HW-coherent DMA peripherals) 9862306a36Sopenharmony_ci * We don't need to mark pgu@17000 as dma-coherent because it uses 9962306a36Sopenharmony_ci * external DMA buffer located outside of IOC aperture. 10062306a36Sopenharmony_ci */ 10162306a36Sopenharmony_ci axs10x_mb { 10262306a36Sopenharmony_ci ethernet@18000 { 10362306a36Sopenharmony_ci dma-coherent; 10462306a36Sopenharmony_ci }; 10562306a36Sopenharmony_ci 10662306a36Sopenharmony_ci usb@40000 { 10762306a36Sopenharmony_ci dma-coherent; 10862306a36Sopenharmony_ci }; 10962306a36Sopenharmony_ci 11062306a36Sopenharmony_ci usb@60000 { 11162306a36Sopenharmony_ci dma-coherent; 11262306a36Sopenharmony_ci }; 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_ci mmc@15000 { 11562306a36Sopenharmony_ci dma-coherent; 11662306a36Sopenharmony_ci }; 11762306a36Sopenharmony_ci }; 11862306a36Sopenharmony_ci 11962306a36Sopenharmony_ci /* 12062306a36Sopenharmony_ci * The DW APB ICTL intc on MB is connected to CPU intc via a 12162306a36Sopenharmony_ci * DT "invisible" DW APB GPIO block, configured to simply pass thru 12262306a36Sopenharmony_ci * interrupts - setup accordinly in platform init (plat-axs10x/ax10x.c) 12362306a36Sopenharmony_ci * 12462306a36Sopenharmony_ci * So here we mimic a direct connection betwen them, ignoring the 12562306a36Sopenharmony_ci * ABPG GPIO. Thus set "interrupts = <24>" (DW APB GPIO to core) 12662306a36Sopenharmony_ci * instead of "interrupts = <12>" (DW APB ICTL to DW APB GPIO) 12762306a36Sopenharmony_ci * 12862306a36Sopenharmony_ci * This intc actually resides on MB, but we move it here to 12962306a36Sopenharmony_ci * avoid duplicating the MB dtsi file given that IRQ from 13062306a36Sopenharmony_ci * this intc to cpu intc are different for axs101 and axs103 13162306a36Sopenharmony_ci */ 13262306a36Sopenharmony_ci mb_intc: interrupt-controller@e0012000 { 13362306a36Sopenharmony_ci #interrupt-cells = <1>; 13462306a36Sopenharmony_ci compatible = "snps,dw-apb-ictl"; 13562306a36Sopenharmony_ci reg = < 0x0 0xe0012000 0x0 0x200 >; 13662306a36Sopenharmony_ci interrupt-controller; 13762306a36Sopenharmony_ci interrupt-parent = <&core_intc>; 13862306a36Sopenharmony_ci interrupts = < 24 >; 13962306a36Sopenharmony_ci }; 14062306a36Sopenharmony_ci 14162306a36Sopenharmony_ci memory { 14262306a36Sopenharmony_ci device_type = "memory"; 14362306a36Sopenharmony_ci /* CONFIG_LINUX_RAM_BASE needs to match low mem start */ 14462306a36Sopenharmony_ci reg = <0x0 0x80000000 0x0 0x20000000 /* 512 MiB low mem */ 14562306a36Sopenharmony_ci 0x1 0xc0000000 0x0 0x40000000>; /* 1 GiB highmem */ 14662306a36Sopenharmony_ci }; 14762306a36Sopenharmony_ci 14862306a36Sopenharmony_ci reserved-memory { 14962306a36Sopenharmony_ci #address-cells = <2>; 15062306a36Sopenharmony_ci #size-cells = <2>; 15162306a36Sopenharmony_ci ranges; 15262306a36Sopenharmony_ci /* 15362306a36Sopenharmony_ci * Move frame buffer out of IOC aperture (0x8z-0xaz). 15462306a36Sopenharmony_ci */ 15562306a36Sopenharmony_ci frame_buffer: frame_buffer@be000000 { 15662306a36Sopenharmony_ci compatible = "shared-dma-pool"; 15762306a36Sopenharmony_ci reg = <0x0 0xbe000000 0x0 0x2000000>; 15862306a36Sopenharmony_ci no-map; 15962306a36Sopenharmony_ci }; 16062306a36Sopenharmony_ci }; 16162306a36Sopenharmony_ci}; 162