xref: /linux/arch/arc/boot/dts/axc003.dtsi (revision 4232da23d75d173195c6766729e51947b64f83cd)
1d2912cb1SThomas Gleixner// SPDX-License-Identifier: GPL-2.0-only
25fa2daaaSVineet Gupta/*
35fa2daaaSVineet Gupta * Copyright (C) 2014-15 Synopsys, Inc. (www.synopsys.com)
45fa2daaaSVineet Gupta */
55fa2daaaSVineet Gupta
65fa2daaaSVineet Gupta/*
75fa2daaaSVineet Gupta * Device tree for AXC003 CPU card: HS38x UP configuration
85fa2daaaSVineet Gupta */
95fa2daaaSVineet Gupta
102e8cd938SVineet Gupta/include/ "skeleton_hs.dtsi"
112e8cd938SVineet Gupta
125fa2daaaSVineet Gupta/ {
135fa2daaaSVineet Gupta	compatible = "snps,arc";
14f862b315SEugeniy Paltsev	#address-cells = <2>;
15f862b315SEugeniy Paltsev	#size-cells = <2>;
165fa2daaaSVineet Gupta
175fa2daaaSVineet Gupta	cpu_card {
185fa2daaaSVineet Gupta		compatible = "simple-bus";
195fa2daaaSVineet Gupta		#address-cells = <1>;
205fa2daaaSVineet Gupta		#size-cells = <1>;
215fa2daaaSVineet Gupta
22f862b315SEugeniy Paltsev		ranges = <0x00000000 0x0 0xf0000000 0x10000000>;
235fa2daaaSVineet Gupta
24f6a09bacSEugeniy Paltsev		input_clk: input-clk {
25b3d6aba8SVineet Gupta			#clock-cells = <0>;
26b3d6aba8SVineet Gupta			compatible = "fixed-clock";
27f6a09bacSEugeniy Paltsev			clock-frequency = <33333333>;
28f6a09bacSEugeniy Paltsev		};
29f6a09bacSEugeniy Paltsev
30f6a09bacSEugeniy Paltsev		core_clk: core-clk@80 {
31f6a09bacSEugeniy Paltsev			compatible = "snps,axs10x-arc-pll-clock";
32f6a09bacSEugeniy Paltsev			reg = <0x80 0x10>, <0x100 0x10>;
33f6a09bacSEugeniy Paltsev			#clock-cells = <0>;
34f6a09bacSEugeniy Paltsev			clocks = <&input_clk>;
35fbd1cec5SEugeniy Paltsev
36fbd1cec5SEugeniy Paltsev			/*
37fbd1cec5SEugeniy Paltsev			 * Set initial core pll output frequency to 90MHz.
38fbd1cec5SEugeniy Paltsev			 * It will be applied at the core pll driver probing
39fbd1cec5SEugeniy Paltsev			 * on early boot.
40fbd1cec5SEugeniy Paltsev			 */
41fbd1cec5SEugeniy Paltsev			assigned-clocks = <&core_clk>;
42fbd1cec5SEugeniy Paltsev			assigned-clock-rates = <90000000>;
43b3d6aba8SVineet Gupta		};
44b3d6aba8SVineet Gupta
459ba7648cSVineet Gupta		core_intc: archs-intc@cpu {
465fa2daaaSVineet Gupta			compatible = "snps,archs-intc";
475fa2daaaSVineet Gupta			interrupt-controller;
485fa2daaaSVineet Gupta			#interrupt-cells = <1>;
495fa2daaaSVineet Gupta		};
505fa2daaaSVineet Gupta
515fa2daaaSVineet Gupta		/*
525fa2daaaSVineet Gupta		 * this GPIO block ORs all interrupts on CPU card (creg,..)
535fa2daaaSVineet Gupta		 * to uplink only 1 IRQ to ARC core intc
545fa2daaaSVineet Gupta		 */
55ef4c54c3SAlexey Brodkin		dw-apb-gpio@2000 {
565fa2daaaSVineet Gupta			compatible = "snps,dw-apb-gpio";
575fa2daaaSVineet Gupta			reg = < 0x2000 0x80 >;
585fa2daaaSVineet Gupta			#address-cells = <1>;
595fa2daaaSVineet Gupta			#size-cells = <0>;
605fa2daaaSVineet Gupta
615fa2daaaSVineet Gupta			ictl_intc: gpio-controller@0 {
625fa2daaaSVineet Gupta				compatible = "snps,dw-apb-gpio-port";
635fa2daaaSVineet Gupta				gpio-controller;
645fa2daaaSVineet Gupta				#gpio-cells = <2>;
655fa2daaaSVineet Gupta				snps,nr-gpios = <30>;
665fa2daaaSVineet Gupta				reg = <0>;
675fa2daaaSVineet Gupta				interrupt-controller;
685fa2daaaSVineet Gupta				#interrupt-cells = <2>;
699ba7648cSVineet Gupta				interrupt-parent = <&core_intc>;
705fa2daaaSVineet Gupta				interrupts = <25>;
715fa2daaaSVineet Gupta			};
725fa2daaaSVineet Gupta		};
735fa2daaaSVineet Gupta
74ef4c54c3SAlexey Brodkin		debug_uart: dw-apb-uart@5000 {
755fa2daaaSVineet Gupta			compatible = "snps,dw-apb-uart";
765fa2daaaSVineet Gupta			reg = <0x5000 0x100>;
775fa2daaaSVineet Gupta			clock-frequency = <33333000>;
785fa2daaaSVineet Gupta			interrupt-parent = <&ictl_intc>;
795fa2daaaSVineet Gupta			interrupts = <2 4>;
805fa2daaaSVineet Gupta			baud = <115200>;
815fa2daaaSVineet Gupta			reg-shift = <2>;
825fa2daaaSVineet Gupta			reg-io-width = <4>;
835fa2daaaSVineet Gupta		};
845fa2daaaSVineet Gupta
855fa2daaaSVineet Gupta		arcpct0: pct {
865fa2daaaSVineet Gupta			compatible = "snps,archs-pct";
875fa2daaaSVineet Gupta			#interrupt-cells = <1>;
889ba7648cSVineet Gupta			interrupt-parent = <&core_intc>;
895fa2daaaSVineet Gupta			interrupts = <20>;
905fa2daaaSVineet Gupta		};
915fa2daaaSVineet Gupta	};
925fa2daaaSVineet Gupta
935fa2daaaSVineet Gupta	/*
94678c8110SEugeniy Paltsev	 * Mark DMA peripherals connected via IOC port as dma-coherent. We do
95678c8110SEugeniy Paltsev	 * it via overlay because peripherals defined in axs10x_mb.dtsi are
96678c8110SEugeniy Paltsev	 * used for both AXS101 and AXS103 boards and only AXS103 has IOC (so
97678c8110SEugeniy Paltsev	 * only AXS103 board has HW-coherent DMA peripherals)
98678c8110SEugeniy Paltsev	 * We don't need to mark pgu@17000 as dma-coherent because it uses
99678c8110SEugeniy Paltsev	 * external DMA buffer located outside of IOC aperture.
100678c8110SEugeniy Paltsev	 */
101678c8110SEugeniy Paltsev	axs10x_mb {
102ef4c54c3SAlexey Brodkin		ethernet@18000 {
103678c8110SEugeniy Paltsev			dma-coherent;
104678c8110SEugeniy Paltsev		};
105678c8110SEugeniy Paltsev
106c8f87858SSerge Semin		usb@40000 {
107678c8110SEugeniy Paltsev			dma-coherent;
108678c8110SEugeniy Paltsev		};
109678c8110SEugeniy Paltsev
110c8f87858SSerge Semin		usb@60000 {
111678c8110SEugeniy Paltsev			dma-coherent;
112678c8110SEugeniy Paltsev		};
113678c8110SEugeniy Paltsev
114ef4c54c3SAlexey Brodkin		mmc@15000 {
115678c8110SEugeniy Paltsev			dma-coherent;
116678c8110SEugeniy Paltsev		};
117678c8110SEugeniy Paltsev	};
118678c8110SEugeniy Paltsev
119678c8110SEugeniy Paltsev	/*
12009074950SVineet Gupta	 * The DW APB ICTL intc on MB is connected to CPU intc via a
12109074950SVineet Gupta	 * DT "invisible" DW APB GPIO block, configured to simply pass thru
122*ebfc2fd8SBjorn Helgaas	 * interrupts - setup accordingly in platform init (plat-axs10x/ax10x.c)
12309074950SVineet Gupta	 *
124*ebfc2fd8SBjorn Helgaas	 * So here we mimic a direct connection between them, ignoring the
12509074950SVineet Gupta	 * ABPG GPIO. Thus set "interrupts = <24>" (DW APB GPIO to core)
12609074950SVineet Gupta	 * instead of "interrupts = <12>" (DW APB ICTL to DW APB GPIO)
1275fa2daaaSVineet Gupta	 *
1285fa2daaaSVineet Gupta	 * This intc actually resides on MB, but we move it here to
1295fa2daaaSVineet Gupta	 * avoid duplicating the MB dtsi file given that IRQ from
1305fa2daaaSVineet Gupta	 * this intc to cpu intc are different for axs101 and axs103
1315fa2daaaSVineet Gupta	 */
13205b1be68SZhen Lei	mb_intc: interrupt-controller@e0012000 {
1335fa2daaaSVineet Gupta		#interrupt-cells = <1>;
1345fa2daaaSVineet Gupta		compatible = "snps,dw-apb-ictl";
135f862b315SEugeniy Paltsev		reg = < 0x0 0xe0012000 0x0 0x200 >;
1365fa2daaaSVineet Gupta		interrupt-controller;
1379ba7648cSVineet Gupta		interrupt-parent = <&core_intc>;
1385fa2daaaSVineet Gupta		interrupts = < 24 >;
1395fa2daaaSVineet Gupta	};
1405fa2daaaSVineet Gupta
1415fa2daaaSVineet Gupta	memory {
1425fa2daaaSVineet Gupta		device_type = "memory";
1439ed68785SEugeniy Paltsev		/* CONFIG_LINUX_RAM_BASE needs to match low mem start */
144f862b315SEugeniy Paltsev		reg = <0x0 0x80000000 0x0 0x20000000	/* 512 MiB low mem */
145f862b315SEugeniy Paltsev		       0x1 0xc0000000 0x0 0x40000000>;	/* 1 GiB highmem */
1465fa2daaaSVineet Gupta	};
147cb2ad5e5SAlexey Brodkin
148cb2ad5e5SAlexey Brodkin	reserved-memory {
149f862b315SEugeniy Paltsev		#address-cells = <2>;
150f862b315SEugeniy Paltsev		#size-cells = <2>;
151cb2ad5e5SAlexey Brodkin		ranges;
152cb2ad5e5SAlexey Brodkin		/*
153ef4c54c3SAlexey Brodkin		 * Move frame buffer out of IOC aperture (0x8z-0xaz).
154cb2ad5e5SAlexey Brodkin		 */
155cb2ad5e5SAlexey Brodkin		frame_buffer: frame_buffer@be000000 {
156cb2ad5e5SAlexey Brodkin			compatible = "shared-dma-pool";
157f862b315SEugeniy Paltsev			reg = <0x0 0xbe000000 0x0 0x2000000>;
158cb2ad5e5SAlexey Brodkin			no-map;
159cb2ad5e5SAlexey Brodkin		};
160cb2ad5e5SAlexey Brodkin	};
1615fa2daaaSVineet Gupta};
162