xref: /linux/arch/arc/boot/dts/axc003_idu.dtsi (revision e2fc61f384c9224b55990a644bbcf68c25e20203)
15fa2daaaSVineet Gupta/*
25fa2daaaSVineet Gupta * Copyright (C) 2014, 2015 Synopsys, Inc. (www.synopsys.com)
35fa2daaaSVineet Gupta *
45fa2daaaSVineet Gupta * This program is free software; you can redistribute it and/or modify
55fa2daaaSVineet Gupta * it under the terms of the GNU General Public License version 2 as
65fa2daaaSVineet Gupta * published by the Free Software Foundation.
75fa2daaaSVineet Gupta */
85fa2daaaSVineet Gupta
95fa2daaaSVineet Gupta/*
105fa2daaaSVineet Gupta * Device tree for AXC003 CPU card: HS38x2 (Dual Core) with IDU intc
115fa2daaaSVineet Gupta */
125fa2daaaSVineet Gupta
135fa2daaaSVineet Gupta/ {
145fa2daaaSVineet Gupta	compatible = "snps,arc";
15*e2fc61f3SAlexey Brodkin	clock-frequency = <90000000>;
165fa2daaaSVineet Gupta	#address-cells = <1>;
175fa2daaaSVineet Gupta	#size-cells = <1>;
185fa2daaaSVineet Gupta
195fa2daaaSVineet Gupta	cpu_card {
205fa2daaaSVineet Gupta		compatible = "simple-bus";
215fa2daaaSVineet Gupta		#address-cells = <1>;
225fa2daaaSVineet Gupta		#size-cells = <1>;
235fa2daaaSVineet Gupta
245fa2daaaSVineet Gupta		ranges = <0x00000000 0xf0000000 0x10000000>;
255fa2daaaSVineet Gupta
265fa2daaaSVineet Gupta		cpu_intc: archs-intc@cpu {
275fa2daaaSVineet Gupta			compatible = "snps,archs-intc";
285fa2daaaSVineet Gupta			interrupt-controller;
295fa2daaaSVineet Gupta			#interrupt-cells = <1>;
305fa2daaaSVineet Gupta		};
315fa2daaaSVineet Gupta
325fa2daaaSVineet Gupta		idu_intc: idu-interrupt-controller {
335fa2daaaSVineet Gupta			compatible = "snps,archs-idu-intc";
345fa2daaaSVineet Gupta			interrupt-controller;
355fa2daaaSVineet Gupta			interrupt-parent = <&cpu_intc>;
365fa2daaaSVineet Gupta
375fa2daaaSVineet Gupta			/*
385fa2daaaSVineet Gupta			 * <hwirq  distribution>
395fa2daaaSVineet Gupta			 * distribution: 0=RR; 1=cpu0, 2=cpu1, 4=cpu2, 8=cpu3
405fa2daaaSVineet Gupta			 */
415fa2daaaSVineet Gupta			#interrupt-cells = <2>;
425fa2daaaSVineet Gupta
435fa2daaaSVineet Gupta			/*
445fa2daaaSVineet Gupta			 * upstream irqs to core intc - downstream these are
455fa2daaaSVineet Gupta			 * "COMMON" irq 0,1..
465fa2daaaSVineet Gupta			 */
475fa2daaaSVineet Gupta			interrupts = <24 25>;
485fa2daaaSVineet Gupta		};
495fa2daaaSVineet Gupta
505fa2daaaSVineet Gupta		/*
515fa2daaaSVineet Gupta		 * this GPIO block ORs all interrupts on CPU card (creg,..)
525fa2daaaSVineet Gupta		 * to uplink only 1 IRQ to ARC core intc
535fa2daaaSVineet Gupta		 */
545fa2daaaSVineet Gupta		dw-apb-gpio@0x2000 {
555fa2daaaSVineet Gupta			compatible = "snps,dw-apb-gpio";
565fa2daaaSVineet Gupta			reg = < 0x2000 0x80 >;
575fa2daaaSVineet Gupta			#address-cells = <1>;
585fa2daaaSVineet Gupta			#size-cells = <0>;
595fa2daaaSVineet Gupta
605fa2daaaSVineet Gupta			ictl_intc: gpio-controller@0 {
615fa2daaaSVineet Gupta				compatible = "snps,dw-apb-gpio-port";
625fa2daaaSVineet Gupta				gpio-controller;
635fa2daaaSVineet Gupta				#gpio-cells = <2>;
645fa2daaaSVineet Gupta				snps,nr-gpios = <30>;
655fa2daaaSVineet Gupta				reg = <0>;
665fa2daaaSVineet Gupta				interrupt-controller;
675fa2daaaSVineet Gupta				#interrupt-cells = <2>;
685fa2daaaSVineet Gupta				interrupt-parent = <&idu_intc>;
695fa2daaaSVineet Gupta
705fa2daaaSVineet Gupta				/*
715fa2daaaSVineet Gupta				 * cmn irq 1 -> cpu irq 25
725fa2daaaSVineet Gupta				 * Distribute to cpu0 only
735fa2daaaSVineet Gupta				 */
745fa2daaaSVineet Gupta				interrupts = <1 1>;
755fa2daaaSVineet Gupta			};
765fa2daaaSVineet Gupta		};
775fa2daaaSVineet Gupta
785fa2daaaSVineet Gupta		debug_uart: dw-apb-uart@0x5000 {
795fa2daaaSVineet Gupta			compatible = "snps,dw-apb-uart";
805fa2daaaSVineet Gupta			reg = <0x5000 0x100>;
815fa2daaaSVineet Gupta			clock-frequency = <33333000>;
825fa2daaaSVineet Gupta			interrupt-parent = <&ictl_intc>;
835fa2daaaSVineet Gupta			interrupts = <2 4>;
845fa2daaaSVineet Gupta			baud = <115200>;
855fa2daaaSVineet Gupta			reg-shift = <2>;
865fa2daaaSVineet Gupta			reg-io-width = <4>;
875fa2daaaSVineet Gupta		};
885fa2daaaSVineet Gupta
895fa2daaaSVineet Gupta		arcpct0: pct {
905fa2daaaSVineet Gupta			compatible = "snps,archs-pct";
915fa2daaaSVineet Gupta			#interrupt-cells = <1>;
925fa2daaaSVineet Gupta			interrupt-parent = <&cpu_intc>;
935fa2daaaSVineet Gupta			interrupts = <20>;
945fa2daaaSVineet Gupta		};
955fa2daaaSVineet Gupta	};
965fa2daaaSVineet Gupta
975fa2daaaSVineet Gupta	/*
985fa2daaaSVineet Gupta	 * This INTC is actually connected to DW APB GPIO
995fa2daaaSVineet Gupta	 * which acts as a wire between MB INTC and CPU INTC.
1005fa2daaaSVineet Gupta	 * GPIO INTC is configured in platform init code
1015fa2daaaSVineet Gupta	 * and here we mimic direct connection from MB INTC to
1025fa2daaaSVineet Gupta	 * CPU INTC, thus we set "interrupts = <0 1>" instead of
1035fa2daaaSVineet Gupta	 * "interrupts = <12>"
1045fa2daaaSVineet Gupta	 *
1055fa2daaaSVineet Gupta	 * This intc actually resides on MB, but we move it here to
1065fa2daaaSVineet Gupta	 * avoid duplicating the MB dtsi file given that IRQ from
1075fa2daaaSVineet Gupta	 * this intc to cpu intc are different for axs101 and axs103
1085fa2daaaSVineet Gupta	 */
1095fa2daaaSVineet Gupta	mb_intc: dw-apb-ictl@0xe0012000 {
1105fa2daaaSVineet Gupta		#interrupt-cells = <1>;
1115fa2daaaSVineet Gupta		compatible = "snps,dw-apb-ictl";
1125fa2daaaSVineet Gupta		reg = < 0xe0012000 0x200 >;
1135fa2daaaSVineet Gupta		interrupt-controller;
1145fa2daaaSVineet Gupta		interrupt-parent = <&idu_intc>;
1155fa2daaaSVineet Gupta		interrupts = <0 1>;	/* cmn irq 0 -> cpu irq 24
1165fa2daaaSVineet Gupta					   distribute to cpu0 only */
1175fa2daaaSVineet Gupta	};
1185fa2daaaSVineet Gupta
1195fa2daaaSVineet Gupta	memory {
1205fa2daaaSVineet Gupta		#address-cells = <1>;
1215fa2daaaSVineet Gupta		#size-cells = <1>;
1225fa2daaaSVineet Gupta		ranges = <0x00000000 0x80000000 0x40000000>;
1235fa2daaaSVineet Gupta		device_type = "memory";
1245fa2daaaSVineet Gupta		reg = <0x00000000 0x20000000>;	/* 512MiB */
1255fa2daaaSVineet Gupta	};
1265fa2daaaSVineet Gupta};
127