2 * Hisilicon Ltd. HiP04 SoC
4 * Copyright (C) 2013-2014 Hisilicon Ltd.
5 * Copyright (C) 2013-2014 Linaro Ltd.
7 * Author: Haojian Zhuang <haojian.zhuang@linaro.org>
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License version 2 as
11 * published by the Free Software Foundation.
15 /* memory bus is 64-bit */
24 compatible = "hisilicon,hip04-bootwrapper";
25 boot-method = <0x10c00000 0x10000>, <0xe0000100 0x1000>;
92 compatible = "arm,cortex-a15";
97 compatible = "arm,cortex-a15";
102 compatible = "arm,cortex-a15";
107 compatible = "arm,cortex-a15";
112 compatible = "arm,cortex-a15";
117 compatible = "arm,cortex-a15";
122 compatible = "arm,cortex-a15";
127 compatible = "arm,cortex-a15";
132 compatible = "arm,cortex-a15";
137 compatible = "arm,cortex-a15";
142 compatible = "arm,cortex-a15";
147 compatible = "arm,cortex-a15";
152 compatible = "arm,cortex-a15";
157 compatible = "arm,cortex-a15";
162 compatible = "arm,cortex-a15";
167 compatible = "arm,cortex-a15";
173 compatible = "arm,armv7-timer";
174 interrupt-parent = <&gic>;
175 interrupts = <1 13 0xf08>,
183 compatible = "fixed-clock";
184 clock-frequency = <50000000>;
189 compatible = "fixed-clock";
190 clock-frequency = <168000000>;
195 compatible = "fixed-clock";
196 clock-frequency = <375000000>;
200 /* It's a 32-bit SoC. */
201 #address-cells = <1>;
203 compatible = "simple-bus";
204 interrupt-parent = <&gic>;
205 ranges = <0 0 0xe0000000 0x10000000>;
207 gic: interrupt-controller@c01000 {
208 compatible = "hisilicon,hip04-intc";
209 #interrupt-cells = <3>;
210 #address-cells = <0>;
211 interrupt-controller;
212 interrupts = <1 9 0xf04>;
214 reg = <0xc01000 0x1000>, <0xc02000 0x1000>,
215 <0xc04000 0x2000>, <0xc06000 0x2000>;
219 compatible = "hisilicon,sysctrl";
220 reg = <0x3e00000 0x00100000>;
224 compatible = "hisilicon,hip04-fabric";
225 reg = <0x302a000 0x1000>;
228 dual_timer0: dual_timer@3000000 {
229 compatible = "arm,sp804", "arm,primecell";
230 reg = <0x3000000 0x1000>;
231 interrupts = <0 224 4>;
232 clocks = <&clk_50m>, <&clk_50m>;
233 clock-names = "apb_pclk";
237 compatible = "arm,cortex-a15-pmu";
238 interrupts = <0 64 4>,
256 uart0: uart@4007000 {
257 compatible = "snps,dw-apb-uart";
258 reg = <0x4007000 0x1000>;
259 interrupts = <0 381 4>;
260 clocks = <&clk_168m>;
261 clock-names = "uartclk";
266 sata0: sata@a000000 {
267 compatible = "hisilicon,hisi-ahci";
268 reg = <0xa000000 0x1000000>;
269 interrupts = <0 372 4>;
275 compatible = "arm,coresight-etb10", "arm,primecell";
276 reg = <0 0xe3c42000 0 0x1000>;
278 clocks = <&clk_375m>;
279 clock-names = "apb_pclk";
281 etb0_in_port: endpoint@0 {
283 remote-endpoint = <&replicator0_out_port0>;
289 compatible = "arm,coresight-etb10", "arm,primecell";
290 reg = <0 0xe3c82000 0 0x1000>;
292 clocks = <&clk_375m>;
293 clock-names = "apb_pclk";
295 etb1_in_port: endpoint@0 {
297 remote-endpoint = <&replicator1_out_port0>;
303 compatible = "arm,coresight-etb10", "arm,primecell";
304 reg = <0 0xe3cc2000 0 0x1000>;
306 clocks = <&clk_375m>;
307 clock-names = "apb_pclk";
309 etb2_in_port: endpoint@0 {
311 remote-endpoint = <&replicator2_out_port0>;
317 compatible = "arm,coresight-etb10", "arm,primecell";
318 reg = <0 0xe3d02000 0 0x1000>;
320 clocks = <&clk_375m>;
321 clock-names = "apb_pclk";
323 etb3_in_port: endpoint@0 {
325 remote-endpoint = <&replicator3_out_port0>;
331 compatible = "arm,coresight-tpiu", "arm,primecell";
332 reg = <0 0xe3c05000 0 0x1000>;
334 clocks = <&clk_375m>;
335 clock-names = "apb_pclk";
337 tpiu_in_port: endpoint@0 {
339 remote-endpoint = <&funnel4_out_port0>;
345 /* non-configurable replicators don't show up on the
346 * AMBA bus. As such no need to add "arm,primecell".
348 compatible = "arm,coresight-replicator";
351 #address-cells = <1>;
354 /* replicator output ports */
357 replicator0_out_port0: endpoint {
358 remote-endpoint = <&etb0_in_port>;
364 replicator0_out_port1: endpoint {
365 remote-endpoint = <&funnel4_in_port0>;
369 /* replicator input port */
372 replicator0_in_port0: endpoint {
374 remote-endpoint = <&funnel0_out_port0>;
381 /* non-configurable replicators don't show up on the
382 * AMBA bus. As such no need to add "arm,primecell".
384 compatible = "arm,coresight-replicator";
387 #address-cells = <1>;
390 /* replicator output ports */
393 replicator1_out_port0: endpoint {
394 remote-endpoint = <&etb1_in_port>;
400 replicator1_out_port1: endpoint {
401 remote-endpoint = <&funnel4_in_port1>;
405 /* replicator input port */
408 replicator1_in_port0: endpoint {
410 remote-endpoint = <&funnel1_out_port0>;
417 /* non-configurable replicators don't show up on the
418 * AMBA bus. As such no need to add "arm,primecell".
420 compatible = "arm,coresight-replicator";
423 #address-cells = <1>;
426 /* replicator output ports */
429 replicator2_out_port0: endpoint {
430 remote-endpoint = <&etb2_in_port>;
436 replicator2_out_port1: endpoint {
437 remote-endpoint = <&funnel4_in_port2>;
441 /* replicator input port */
444 replicator2_in_port0: endpoint {
446 remote-endpoint = <&funnel2_out_port0>;
453 /* non-configurable replicators don't show up on the
454 * AMBA bus. As such no need to add "arm,primecell".
456 compatible = "arm,coresight-replicator";
459 #address-cells = <1>;
462 /* replicator output ports */
465 replicator3_out_port0: endpoint {
466 remote-endpoint = <&etb3_in_port>;
472 replicator3_out_port1: endpoint {
473 remote-endpoint = <&funnel4_in_port3>;
477 /* replicator input port */
480 replicator3_in_port0: endpoint {
482 remote-endpoint = <&funnel3_out_port0>;
489 compatible = "arm,coresight-funnel", "arm,primecell";
490 reg = <0 0xe3c41000 0 0x1000>;
492 clocks = <&clk_375m>;
493 clock-names = "apb_pclk";
495 #address-cells = <1>;
498 /* funnel output port */
501 funnel0_out_port0: endpoint {
503 <&replicator0_in_port0>;
507 /* funnel input ports */
510 funnel0_in_port0: endpoint {
512 remote-endpoint = <&ptm0_out_port>;
518 funnel0_in_port1: endpoint {
520 remote-endpoint = <&ptm1_out_port>;
526 funnel0_in_port2: endpoint {
528 remote-endpoint = <&ptm2_out_port>;
534 funnel0_in_port3: endpoint {
536 remote-endpoint = <&ptm3_out_port>;
543 compatible = "arm,coresight-funnel", "arm,primecell";
544 reg = <0 0xe3c81000 0 0x1000>;
546 clocks = <&clk_375m>;
547 clock-names = "apb_pclk";
549 #address-cells = <1>;
552 /* funnel output port */
555 funnel1_out_port0: endpoint {
557 <&replicator1_in_port0>;
561 /* funnel input ports */
564 funnel1_in_port0: endpoint {
566 remote-endpoint = <&ptm4_out_port>;
572 funnel1_in_port1: endpoint {
574 remote-endpoint = <&ptm5_out_port>;
580 funnel1_in_port2: endpoint {
582 remote-endpoint = <&ptm6_out_port>;
588 funnel1_in_port3: endpoint {
590 remote-endpoint = <&ptm7_out_port>;
597 compatible = "arm,coresight-funnel", "arm,primecell";
598 reg = <0 0xe3cc1000 0 0x1000>;
600 clocks = <&clk_375m>;
601 clock-names = "apb_pclk";
603 #address-cells = <1>;
606 /* funnel output port */
609 funnel2_out_port0: endpoint {
611 <&replicator2_in_port0>;
615 /* funnel input ports */
618 funnel2_in_port0: endpoint {
620 remote-endpoint = <&ptm8_out_port>;
626 funnel2_in_port1: endpoint {
628 remote-endpoint = <&ptm9_out_port>;
634 funnel2_in_port2: endpoint {
636 remote-endpoint = <&ptm10_out_port>;
642 funnel2_in_port3: endpoint {
644 remote-endpoint = <&ptm11_out_port>;
651 compatible = "arm,coresight-funnel", "arm,primecell";
652 reg = <0 0xe3d01000 0 0x1000>;
654 clocks = <&clk_375m>;
655 clock-names = "apb_pclk";
657 #address-cells = <1>;
660 /* funnel output port */
663 funnel3_out_port0: endpoint {
665 <&replicator3_in_port0>;
669 /* funnel input ports */
672 funnel3_in_port0: endpoint {
674 remote-endpoint = <&ptm12_out_port>;
680 funnel3_in_port1: endpoint {
682 remote-endpoint = <&ptm13_out_port>;
688 funnel3_in_port2: endpoint {
690 remote-endpoint = <&ptm14_out_port>;
696 funnel3_in_port3: endpoint {
698 remote-endpoint = <&ptm15_out_port>;
705 compatible = "arm,coresight-funnel", "arm,primecell";
706 reg = <0 0xe3c04000 0 0x1000>;
708 clocks = <&clk_375m>;
709 clock-names = "apb_pclk";
711 #address-cells = <1>;
714 /* funnel output port */
717 funnel4_out_port0: endpoint {
718 remote-endpoint = <&tpiu_in_port>;
722 /* funnel input ports */
725 funnel4_in_port0: endpoint {
728 <&replicator0_out_port1>;
734 funnel4_in_port1: endpoint {
737 <&replicator1_out_port1>;
743 funnel4_in_port2: endpoint {
746 <&replicator2_out_port1>;
752 funnel4_in_port3: endpoint {
755 <&replicator3_out_port1>;
762 compatible = "arm,coresight-etm3x", "arm,primecell";
763 reg = <0 0xe3c7c000 0 0x1000>;
765 clocks = <&clk_375m>;
766 clock-names = "apb_pclk";
769 ptm0_out_port: endpoint {
770 remote-endpoint = <&funnel0_in_port0>;
776 compatible = "arm,coresight-etm3x", "arm,primecell";
777 reg = <0 0xe3c7d000 0 0x1000>;
779 clocks = <&clk_375m>;
780 clock-names = "apb_pclk";
783 ptm1_out_port: endpoint {
784 remote-endpoint = <&funnel0_in_port1>;
790 compatible = "arm,coresight-etm3x", "arm,primecell";
791 reg = <0 0xe3c7e000 0 0x1000>;
793 clocks = <&clk_375m>;
794 clock-names = "apb_pclk";
797 ptm2_out_port: endpoint {
798 remote-endpoint = <&funnel0_in_port2>;
804 compatible = "arm,coresight-etm3x", "arm,primecell";
805 reg = <0 0xe3c7f000 0 0x1000>;
807 clocks = <&clk_375m>;
808 clock-names = "apb_pclk";
811 ptm3_out_port: endpoint {
812 remote-endpoint = <&funnel0_in_port3>;
818 compatible = "arm,coresight-etm3x", "arm,primecell";
819 reg = <0 0xe3cbc000 0 0x1000>;
821 clocks = <&clk_375m>;
822 clock-names = "apb_pclk";
825 ptm4_out_port: endpoint {
826 remote-endpoint = <&funnel1_in_port0>;
832 compatible = "arm,coresight-etm3x", "arm,primecell";
833 reg = <0 0xe3cbd000 0 0x1000>;
835 clocks = <&clk_375m>;
836 clock-names = "apb_pclk";
839 ptm5_out_port: endpoint {
840 remote-endpoint = <&funnel1_in_port1>;
846 compatible = "arm,coresight-etm3x", "arm,primecell";
847 reg = <0 0xe3cbe000 0 0x1000>;
849 clocks = <&clk_375m>;
850 clock-names = "apb_pclk";
853 ptm6_out_port: endpoint {
854 remote-endpoint = <&funnel1_in_port2>;
860 compatible = "arm,coresight-etm3x", "arm,primecell";
861 reg = <0 0xe3cbf000 0 0x1000>;
863 clocks = <&clk_375m>;
864 clock-names = "apb_pclk";
867 ptm7_out_port: endpoint {
868 remote-endpoint = <&funnel1_in_port3>;
874 compatible = "arm,coresight-etm3x", "arm,primecell";
875 reg = <0 0xe3cfc000 0 0x1000>;
877 clocks = <&clk_375m>;
878 clock-names = "apb_pclk";
881 ptm8_out_port: endpoint {
882 remote-endpoint = <&funnel2_in_port0>;
888 compatible = "arm,coresight-etm3x", "arm,primecell";
889 reg = <0 0xe3cfd000 0 0x1000>;
890 clocks = <&clk_375m>;
891 clock-names = "apb_pclk";
894 ptm9_out_port: endpoint {
895 remote-endpoint = <&funnel2_in_port1>;
901 compatible = "arm,coresight-etm3x", "arm,primecell";
902 reg = <0 0xe3cfe000 0 0x1000>;
904 clocks = <&clk_375m>;
905 clock-names = "apb_pclk";
908 ptm10_out_port: endpoint {
909 remote-endpoint = <&funnel2_in_port2>;
915 compatible = "arm,coresight-etm3x", "arm,primecell";
916 reg = <0 0xe3cff000 0 0x1000>;
918 clocks = <&clk_375m>;
919 clock-names = "apb_pclk";
922 ptm11_out_port: endpoint {
923 remote-endpoint = <&funnel2_in_port3>;
929 compatible = "arm,coresight-etm3x", "arm,primecell";
930 reg = <0 0xe3d3c000 0 0x1000>;
932 clocks = <&clk_375m>;
933 clock-names = "apb_pclk";
936 ptm12_out_port: endpoint {
937 remote-endpoint = <&funnel3_in_port0>;
943 compatible = "arm,coresight-etm3x", "arm,primecell";
944 reg = <0 0xe3d3d000 0 0x1000>;
946 clocks = <&clk_375m>;
947 clock-names = "apb_pclk";
950 ptm13_out_port: endpoint {
951 remote-endpoint = <&funnel3_in_port1>;
957 compatible = "arm,coresight-etm3x", "arm,primecell";
958 reg = <0 0xe3d3e000 0 0x1000>;
960 clocks = <&clk_375m>;
961 clock-names = "apb_pclk";
964 ptm14_out_port: endpoint {
965 remote-endpoint = <&funnel3_in_port2>;
971 compatible = "arm,coresight-etm3x", "arm,primecell";
972 reg = <0 0xe3d3f000 0 0x1000>;
974 clocks = <&clk_375m>;
975 clock-names = "apb_pclk";
978 ptm15_out_port: endpoint {
979 remote-endpoint = <&funnel3_in_port3>;