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 coresight-default-sink;
279 clocks = <&clk_375m>;
280 clock-names = "apb_pclk";
282 etb0_in_port: endpoint@0 {
284 remote-endpoint = <&replicator0_out_port0>;
290 compatible = "arm,coresight-etb10", "arm,primecell";
291 reg = <0 0xe3c82000 0 0x1000>;
293 clocks = <&clk_375m>;
294 clock-names = "apb_pclk";
296 etb1_in_port: endpoint@0 {
298 remote-endpoint = <&replicator1_out_port0>;
304 compatible = "arm,coresight-etb10", "arm,primecell";
305 reg = <0 0xe3cc2000 0 0x1000>;
307 clocks = <&clk_375m>;
308 clock-names = "apb_pclk";
310 etb2_in_port: endpoint@0 {
312 remote-endpoint = <&replicator2_out_port0>;
318 compatible = "arm,coresight-etb10", "arm,primecell";
319 reg = <0 0xe3d02000 0 0x1000>;
321 clocks = <&clk_375m>;
322 clock-names = "apb_pclk";
324 etb3_in_port: endpoint@0 {
326 remote-endpoint = <&replicator3_out_port0>;
332 compatible = "arm,coresight-tpiu", "arm,primecell";
333 reg = <0 0xe3c05000 0 0x1000>;
335 clocks = <&clk_375m>;
336 clock-names = "apb_pclk";
338 tpiu_in_port: endpoint@0 {
340 remote-endpoint = <&funnel4_out_port0>;
346 /* non-configurable replicators don't show up on the
347 * AMBA bus. As such no need to add "arm,primecell".
349 compatible = "arm,coresight-replicator";
352 #address-cells = <1>;
355 /* replicator output ports */
358 replicator0_out_port0: endpoint {
359 remote-endpoint = <&etb0_in_port>;
365 replicator0_out_port1: endpoint {
366 remote-endpoint = <&funnel4_in_port0>;
370 /* replicator input port */
373 replicator0_in_port0: endpoint {
375 remote-endpoint = <&funnel0_out_port0>;
382 /* non-configurable replicators don't show up on the
383 * AMBA bus. As such no need to add "arm,primecell".
385 compatible = "arm,coresight-replicator";
388 #address-cells = <1>;
391 /* replicator output ports */
394 replicator1_out_port0: endpoint {
395 remote-endpoint = <&etb1_in_port>;
401 replicator1_out_port1: endpoint {
402 remote-endpoint = <&funnel4_in_port1>;
406 /* replicator input port */
409 replicator1_in_port0: endpoint {
411 remote-endpoint = <&funnel1_out_port0>;
418 /* non-configurable replicators don't show up on the
419 * AMBA bus. As such no need to add "arm,primecell".
421 compatible = "arm,coresight-replicator";
424 #address-cells = <1>;
427 /* replicator output ports */
430 replicator2_out_port0: endpoint {
431 remote-endpoint = <&etb2_in_port>;
437 replicator2_out_port1: endpoint {
438 remote-endpoint = <&funnel4_in_port2>;
442 /* replicator input port */
445 replicator2_in_port0: endpoint {
447 remote-endpoint = <&funnel2_out_port0>;
454 /* non-configurable replicators don't show up on the
455 * AMBA bus. As such no need to add "arm,primecell".
457 compatible = "arm,coresight-replicator";
460 #address-cells = <1>;
463 /* replicator output ports */
466 replicator3_out_port0: endpoint {
467 remote-endpoint = <&etb3_in_port>;
473 replicator3_out_port1: endpoint {
474 remote-endpoint = <&funnel4_in_port3>;
478 /* replicator input port */
481 replicator3_in_port0: endpoint {
483 remote-endpoint = <&funnel3_out_port0>;
490 compatible = "arm,coresight-funnel", "arm,primecell";
491 reg = <0 0xe3c41000 0 0x1000>;
493 clocks = <&clk_375m>;
494 clock-names = "apb_pclk";
496 #address-cells = <1>;
499 /* funnel output port */
502 funnel0_out_port0: endpoint {
504 <&replicator0_in_port0>;
508 /* funnel input ports */
511 funnel0_in_port0: endpoint {
513 remote-endpoint = <&ptm0_out_port>;
519 funnel0_in_port1: endpoint {
521 remote-endpoint = <&ptm1_out_port>;
527 funnel0_in_port2: endpoint {
529 remote-endpoint = <&ptm2_out_port>;
535 funnel0_in_port3: endpoint {
537 remote-endpoint = <&ptm3_out_port>;
544 compatible = "arm,coresight-funnel", "arm,primecell";
545 reg = <0 0xe3c81000 0 0x1000>;
547 clocks = <&clk_375m>;
548 clock-names = "apb_pclk";
550 #address-cells = <1>;
553 /* funnel output port */
556 funnel1_out_port0: endpoint {
558 <&replicator1_in_port0>;
562 /* funnel input ports */
565 funnel1_in_port0: endpoint {
567 remote-endpoint = <&ptm4_out_port>;
573 funnel1_in_port1: endpoint {
575 remote-endpoint = <&ptm5_out_port>;
581 funnel1_in_port2: endpoint {
583 remote-endpoint = <&ptm6_out_port>;
589 funnel1_in_port3: endpoint {
591 remote-endpoint = <&ptm7_out_port>;
598 compatible = "arm,coresight-funnel", "arm,primecell";
599 reg = <0 0xe3cc1000 0 0x1000>;
601 clocks = <&clk_375m>;
602 clock-names = "apb_pclk";
604 #address-cells = <1>;
607 /* funnel output port */
610 funnel2_out_port0: endpoint {
612 <&replicator2_in_port0>;
616 /* funnel input ports */
619 funnel2_in_port0: endpoint {
621 remote-endpoint = <&ptm8_out_port>;
627 funnel2_in_port1: endpoint {
629 remote-endpoint = <&ptm9_out_port>;
635 funnel2_in_port2: endpoint {
637 remote-endpoint = <&ptm10_out_port>;
643 funnel2_in_port3: endpoint {
645 remote-endpoint = <&ptm11_out_port>;
652 compatible = "arm,coresight-funnel", "arm,primecell";
653 reg = <0 0xe3d01000 0 0x1000>;
655 clocks = <&clk_375m>;
656 clock-names = "apb_pclk";
658 #address-cells = <1>;
661 /* funnel output port */
664 funnel3_out_port0: endpoint {
666 <&replicator3_in_port0>;
670 /* funnel input ports */
673 funnel3_in_port0: endpoint {
675 remote-endpoint = <&ptm12_out_port>;
681 funnel3_in_port1: endpoint {
683 remote-endpoint = <&ptm13_out_port>;
689 funnel3_in_port2: endpoint {
691 remote-endpoint = <&ptm14_out_port>;
697 funnel3_in_port3: endpoint {
699 remote-endpoint = <&ptm15_out_port>;
706 compatible = "arm,coresight-funnel", "arm,primecell";
707 reg = <0 0xe3c04000 0 0x1000>;
709 clocks = <&clk_375m>;
710 clock-names = "apb_pclk";
712 #address-cells = <1>;
715 /* funnel output port */
718 funnel4_out_port0: endpoint {
719 remote-endpoint = <&tpiu_in_port>;
723 /* funnel input ports */
726 funnel4_in_port0: endpoint {
729 <&replicator0_out_port1>;
735 funnel4_in_port1: endpoint {
738 <&replicator1_out_port1>;
744 funnel4_in_port2: endpoint {
747 <&replicator2_out_port1>;
753 funnel4_in_port3: endpoint {
756 <&replicator3_out_port1>;
763 compatible = "arm,coresight-etm3x", "arm,primecell";
764 reg = <0 0xe3c7c000 0 0x1000>;
766 clocks = <&clk_375m>;
767 clock-names = "apb_pclk";
770 ptm0_out_port: endpoint {
771 remote-endpoint = <&funnel0_in_port0>;
777 compatible = "arm,coresight-etm3x", "arm,primecell";
778 reg = <0 0xe3c7d000 0 0x1000>;
780 clocks = <&clk_375m>;
781 clock-names = "apb_pclk";
784 ptm1_out_port: endpoint {
785 remote-endpoint = <&funnel0_in_port1>;
791 compatible = "arm,coresight-etm3x", "arm,primecell";
792 reg = <0 0xe3c7e000 0 0x1000>;
794 clocks = <&clk_375m>;
795 clock-names = "apb_pclk";
798 ptm2_out_port: endpoint {
799 remote-endpoint = <&funnel0_in_port2>;
805 compatible = "arm,coresight-etm3x", "arm,primecell";
806 reg = <0 0xe3c7f000 0 0x1000>;
808 clocks = <&clk_375m>;
809 clock-names = "apb_pclk";
812 ptm3_out_port: endpoint {
813 remote-endpoint = <&funnel0_in_port3>;
819 compatible = "arm,coresight-etm3x", "arm,primecell";
820 reg = <0 0xe3cbc000 0 0x1000>;
822 clocks = <&clk_375m>;
823 clock-names = "apb_pclk";
826 ptm4_out_port: endpoint {
827 remote-endpoint = <&funnel1_in_port0>;
833 compatible = "arm,coresight-etm3x", "arm,primecell";
834 reg = <0 0xe3cbd000 0 0x1000>;
836 clocks = <&clk_375m>;
837 clock-names = "apb_pclk";
840 ptm5_out_port: endpoint {
841 remote-endpoint = <&funnel1_in_port1>;
847 compatible = "arm,coresight-etm3x", "arm,primecell";
848 reg = <0 0xe3cbe000 0 0x1000>;
850 clocks = <&clk_375m>;
851 clock-names = "apb_pclk";
854 ptm6_out_port: endpoint {
855 remote-endpoint = <&funnel1_in_port2>;
861 compatible = "arm,coresight-etm3x", "arm,primecell";
862 reg = <0 0xe3cbf000 0 0x1000>;
864 clocks = <&clk_375m>;
865 clock-names = "apb_pclk";
868 ptm7_out_port: endpoint {
869 remote-endpoint = <&funnel1_in_port3>;
875 compatible = "arm,coresight-etm3x", "arm,primecell";
876 reg = <0 0xe3cfc000 0 0x1000>;
878 clocks = <&clk_375m>;
879 clock-names = "apb_pclk";
882 ptm8_out_port: endpoint {
883 remote-endpoint = <&funnel2_in_port0>;
889 compatible = "arm,coresight-etm3x", "arm,primecell";
890 reg = <0 0xe3cfd000 0 0x1000>;
891 clocks = <&clk_375m>;
892 clock-names = "apb_pclk";
895 ptm9_out_port: endpoint {
896 remote-endpoint = <&funnel2_in_port1>;
902 compatible = "arm,coresight-etm3x", "arm,primecell";
903 reg = <0 0xe3cfe000 0 0x1000>;
905 clocks = <&clk_375m>;
906 clock-names = "apb_pclk";
909 ptm10_out_port: endpoint {
910 remote-endpoint = <&funnel2_in_port2>;
916 compatible = "arm,coresight-etm3x", "arm,primecell";
917 reg = <0 0xe3cff000 0 0x1000>;
919 clocks = <&clk_375m>;
920 clock-names = "apb_pclk";
923 ptm11_out_port: endpoint {
924 remote-endpoint = <&funnel2_in_port3>;
930 compatible = "arm,coresight-etm3x", "arm,primecell";
931 reg = <0 0xe3d3c000 0 0x1000>;
933 clocks = <&clk_375m>;
934 clock-names = "apb_pclk";
937 ptm12_out_port: endpoint {
938 remote-endpoint = <&funnel3_in_port0>;
944 compatible = "arm,coresight-etm3x", "arm,primecell";
945 reg = <0 0xe3d3d000 0 0x1000>;
947 clocks = <&clk_375m>;
948 clock-names = "apb_pclk";
951 ptm13_out_port: endpoint {
952 remote-endpoint = <&funnel3_in_port1>;
958 compatible = "arm,coresight-etm3x", "arm,primecell";
959 reg = <0 0xe3d3e000 0 0x1000>;
961 clocks = <&clk_375m>;
962 clock-names = "apb_pclk";
965 ptm14_out_port: endpoint {
966 remote-endpoint = <&funnel3_in_port2>;
972 compatible = "arm,coresight-etm3x", "arm,primecell";
973 reg = <0 0xe3d3f000 0 0x1000>;
975 clocks = <&clk_375m>;
976 clock-names = "apb_pclk";
979 ptm15_out_port: endpoint {
980 remote-endpoint = <&funnel3_in_port3>;