1 // SPDX-License-Identifier: GPL-2.0-only
3 * Hisilicon Ltd. HiP04 SoC
5 * Copyright (C) 2013-2014 Hisilicon Ltd.
6 * Copyright (C) 2013-2014 Linaro Ltd.
8 * Author: Haojian Zhuang <haojian.zhuang@linaro.org>
12 /* memory bus is 64-bit */
21 compatible = "hisilicon,hip04-bootwrapper";
22 boot-method = <0x10c00000 0x10000>, <0xe0000100 0x1000>;
89 compatible = "arm,cortex-a15";
94 compatible = "arm,cortex-a15";
99 compatible = "arm,cortex-a15";
104 compatible = "arm,cortex-a15";
109 compatible = "arm,cortex-a15";
114 compatible = "arm,cortex-a15";
119 compatible = "arm,cortex-a15";
124 compatible = "arm,cortex-a15";
129 compatible = "arm,cortex-a15";
134 compatible = "arm,cortex-a15";
139 compatible = "arm,cortex-a15";
144 compatible = "arm,cortex-a15";
149 compatible = "arm,cortex-a15";
154 compatible = "arm,cortex-a15";
159 compatible = "arm,cortex-a15";
164 compatible = "arm,cortex-a15";
170 compatible = "arm,armv7-timer";
171 interrupt-parent = <&gic>;
172 interrupts = <1 13 0xf08>,
180 compatible = "fixed-clock";
181 clock-frequency = <50000000>;
186 compatible = "fixed-clock";
187 clock-frequency = <168000000>;
192 compatible = "fixed-clock";
193 clock-frequency = <375000000>;
197 /* It's a 32-bit SoC. */
198 #address-cells = <1>;
200 compatible = "simple-bus";
201 interrupt-parent = <&gic>;
202 ranges = <0 0 0xe0000000 0x10000000>;
204 gic: interrupt-controller@c01000 {
205 compatible = "hisilicon,hip04-intc";
206 #interrupt-cells = <3>;
207 #address-cells = <0>;
208 interrupt-controller;
209 interrupts = <1 9 0xf04>;
211 reg = <0xc01000 0x1000>, <0xc02000 0x1000>,
212 <0xc04000 0x2000>, <0xc06000 0x2000>;
216 compatible = "hisilicon,sysctrl", "syscon";
217 reg = <0x3e00000 0x00100000>;
221 compatible = "hisilicon,hip04-fabric";
222 reg = <0x302a000 0x1000>;
225 dual_timer0: dual_timer@3000000 {
226 compatible = "arm,sp804", "arm,primecell";
227 reg = <0x3000000 0x1000>;
228 interrupts = <0 224 4>;
229 clocks = <&clk_50m>, <&clk_50m>, <&clk_50m>;
230 clock-names = "timer0clk", "timer1clk", "apb_pclk";
234 compatible = "arm,cortex-a15-pmu";
235 interrupts = <0 64 4>,
253 uart0: serial@4007000 {
254 compatible = "snps,dw-apb-uart";
255 reg = <0x4007000 0x1000>;
256 interrupts = <0 381 4>;
257 clocks = <&clk_168m>, <&clk_168m>;
258 clock-names = "baudclk", "apb_pclk";
263 sata0: sata@a000000 {
264 compatible = "hisilicon,hisi-ahci";
265 reg = <0xa000000 0x1000000>;
266 interrupts = <0 372 4>;
272 compatible = "arm,coresight-etb10", "arm,primecell";
273 reg = <0 0xe3c42000 0 0x1000>;
275 clocks = <&clk_375m>;
276 clock-names = "apb_pclk";
279 etb0_in_port: endpoint@0 {
280 remote-endpoint = <&replicator0_out_port0>;
287 compatible = "arm,coresight-etb10", "arm,primecell";
288 reg = <0 0xe3c82000 0 0x1000>;
290 clocks = <&clk_375m>;
291 clock-names = "apb_pclk";
294 etb1_in_port: endpoint@0 {
295 remote-endpoint = <&replicator1_out_port0>;
302 compatible = "arm,coresight-etb10", "arm,primecell";
303 reg = <0 0xe3cc2000 0 0x1000>;
305 clocks = <&clk_375m>;
306 clock-names = "apb_pclk";
309 etb2_in_port: endpoint@0 {
310 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";
324 etb3_in_port: endpoint@0 {
325 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";
339 tpiu_in_port: endpoint@0 {
340 remote-endpoint = <&funnel4_out_port0>;
347 /* non-configurable replicators don't show up on the
348 * AMBA bus. As such no need to add "arm,primecell".
350 compatible = "arm,coresight-static-replicator";
353 #address-cells = <1>;
356 /* replicator output ports */
359 replicator0_out_port0: endpoint {
360 remote-endpoint = <&etb0_in_port>;
366 replicator0_out_port1: endpoint {
367 remote-endpoint = <&funnel4_in_port0>;
374 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-static-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>;
409 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-static-replicator";
423 #address-cells = <1>;
428 replicator2_out_port0: endpoint {
429 remote-endpoint = <&etb2_in_port>;
435 replicator2_out_port1: endpoint {
436 remote-endpoint = <&funnel4_in_port2>;
443 replicator2_in_port0: endpoint {
444 remote-endpoint = <&funnel2_out_port0>;
451 /* non-configurable replicators don't show up on the
452 * AMBA bus. As such no need to add "arm,primecell".
454 compatible = "arm,coresight-static-replicator";
457 #address-cells = <1>;
462 replicator3_out_port0: endpoint {
463 remote-endpoint = <&etb3_in_port>;
469 replicator3_out_port1: endpoint {
470 remote-endpoint = <&funnel4_in_port3>;
477 replicator3_in_port0: endpoint {
478 remote-endpoint = <&funnel3_out_port0>;
485 compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
486 reg = <0 0xe3c41000 0 0x1000>;
488 clocks = <&clk_375m>;
489 clock-names = "apb_pclk";
492 funnel0_out_port0: endpoint {
494 <&replicator0_in_port0>;
500 #address-cells = <1>;
505 funnel0_in_port0: endpoint {
506 remote-endpoint = <&ptm0_out_port>;
512 funnel0_in_port1: endpoint {
513 remote-endpoint = <&ptm1_out_port>;
519 funnel0_in_port2: endpoint {
520 remote-endpoint = <&ptm2_out_port>;
526 funnel0_in_port3: endpoint {
527 remote-endpoint = <&ptm3_out_port>;
534 compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
535 reg = <0 0xe3c81000 0 0x1000>;
537 clocks = <&clk_375m>;
538 clock-names = "apb_pclk";
541 funnel1_out_port0: endpoint {
543 <&replicator1_in_port0>;
549 #address-cells = <1>;
554 funnel1_in_port0: endpoint {
555 remote-endpoint = <&ptm4_out_port>;
561 funnel1_in_port1: endpoint {
562 remote-endpoint = <&ptm5_out_port>;
568 funnel1_in_port2: endpoint {
569 remote-endpoint = <&ptm6_out_port>;
575 funnel1_in_port3: endpoint {
576 remote-endpoint = <&ptm7_out_port>;
583 compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
584 reg = <0 0xe3cc1000 0 0x1000>;
586 clocks = <&clk_375m>;
587 clock-names = "apb_pclk";
590 funnel2_out_port0: endpoint {
592 <&replicator2_in_port0>;
598 #address-cells = <1>;
603 funnel2_in_port0: endpoint {
604 remote-endpoint = <&ptm8_out_port>;
610 funnel2_in_port1: endpoint {
611 remote-endpoint = <&ptm9_out_port>;
617 funnel2_in_port2: endpoint {
618 remote-endpoint = <&ptm10_out_port>;
624 funnel2_in_port3: endpoint {
625 remote-endpoint = <&ptm11_out_port>;
632 compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
633 reg = <0 0xe3d01000 0 0x1000>;
635 clocks = <&clk_375m>;
636 clock-names = "apb_pclk";
639 funnel3_out_port0: endpoint {
641 <&replicator3_in_port0>;
647 #address-cells = <1>;
652 funnel3_in_port0: endpoint {
653 remote-endpoint = <&ptm12_out_port>;
659 funnel3_in_port1: endpoint {
660 remote-endpoint = <&ptm13_out_port>;
666 funnel3_in_port2: endpoint {
667 remote-endpoint = <&ptm14_out_port>;
673 funnel3_in_port3: endpoint {
674 remote-endpoint = <&ptm15_out_port>;
681 compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
682 reg = <0 0xe3c04000 0 0x1000>;
684 clocks = <&clk_375m>;
685 clock-names = "apb_pclk";
688 funnel4_out_port0: endpoint {
689 remote-endpoint = <&tpiu_in_port>;
695 #address-cells = <1>;
700 funnel4_in_port0: endpoint {
702 <&replicator0_out_port1>;
708 funnel4_in_port1: endpoint {
710 <&replicator1_out_port1>;
716 funnel4_in_port2: endpoint {
718 <&replicator2_out_port1>;
724 funnel4_in_port3: endpoint {
726 <&replicator3_out_port1>;
733 compatible = "arm,coresight-etm3x", "arm,primecell";
734 reg = <0 0xe3c7c000 0 0x1000>;
736 clocks = <&clk_375m>;
737 clock-names = "apb_pclk";
741 ptm0_out_port: endpoint {
742 remote-endpoint = <&funnel0_in_port0>;
749 compatible = "arm,coresight-etm3x", "arm,primecell";
750 reg = <0 0xe3c7d000 0 0x1000>;
752 clocks = <&clk_375m>;
753 clock-names = "apb_pclk";
757 ptm1_out_port: endpoint {
758 remote-endpoint = <&funnel0_in_port1>;
765 compatible = "arm,coresight-etm3x", "arm,primecell";
766 reg = <0 0xe3c7e000 0 0x1000>;
768 clocks = <&clk_375m>;
769 clock-names = "apb_pclk";
773 ptm2_out_port: endpoint {
774 remote-endpoint = <&funnel0_in_port2>;
781 compatible = "arm,coresight-etm3x", "arm,primecell";
782 reg = <0 0xe3c7f000 0 0x1000>;
784 clocks = <&clk_375m>;
785 clock-names = "apb_pclk";
789 ptm3_out_port: endpoint {
790 remote-endpoint = <&funnel0_in_port3>;
797 compatible = "arm,coresight-etm3x", "arm,primecell";
798 reg = <0 0xe3cbc000 0 0x1000>;
800 clocks = <&clk_375m>;
801 clock-names = "apb_pclk";
805 ptm4_out_port: endpoint {
806 remote-endpoint = <&funnel1_in_port0>;
813 compatible = "arm,coresight-etm3x", "arm,primecell";
814 reg = <0 0xe3cbd000 0 0x1000>;
816 clocks = <&clk_375m>;
817 clock-names = "apb_pclk";
821 ptm5_out_port: endpoint {
822 remote-endpoint = <&funnel1_in_port1>;
829 compatible = "arm,coresight-etm3x", "arm,primecell";
830 reg = <0 0xe3cbe000 0 0x1000>;
832 clocks = <&clk_375m>;
833 clock-names = "apb_pclk";
837 ptm6_out_port: endpoint {
838 remote-endpoint = <&funnel1_in_port2>;
845 compatible = "arm,coresight-etm3x", "arm,primecell";
846 reg = <0 0xe3cbf000 0 0x1000>;
848 clocks = <&clk_375m>;
849 clock-names = "apb_pclk";
853 ptm7_out_port: endpoint {
854 remote-endpoint = <&funnel1_in_port3>;
861 compatible = "arm,coresight-etm3x", "arm,primecell";
862 reg = <0 0xe3cfc000 0 0x1000>;
864 clocks = <&clk_375m>;
865 clock-names = "apb_pclk";
869 ptm8_out_port: endpoint {
870 remote-endpoint = <&funnel2_in_port0>;
877 compatible = "arm,coresight-etm3x", "arm,primecell";
878 reg = <0 0xe3cfd000 0 0x1000>;
879 clocks = <&clk_375m>;
880 clock-names = "apb_pclk";
884 ptm9_out_port: endpoint {
885 remote-endpoint = <&funnel2_in_port1>;
892 compatible = "arm,coresight-etm3x", "arm,primecell";
893 reg = <0 0xe3cfe000 0 0x1000>;
895 clocks = <&clk_375m>;
896 clock-names = "apb_pclk";
900 ptm10_out_port: endpoint {
901 remote-endpoint = <&funnel2_in_port2>;
908 compatible = "arm,coresight-etm3x", "arm,primecell";
909 reg = <0 0xe3cff000 0 0x1000>;
911 clocks = <&clk_375m>;
912 clock-names = "apb_pclk";
916 ptm11_out_port: endpoint {
917 remote-endpoint = <&funnel2_in_port3>;
924 compatible = "arm,coresight-etm3x", "arm,primecell";
925 reg = <0 0xe3d3c000 0 0x1000>;
927 clocks = <&clk_375m>;
928 clock-names = "apb_pclk";
932 ptm12_out_port: endpoint {
933 remote-endpoint = <&funnel3_in_port0>;
940 compatible = "arm,coresight-etm3x", "arm,primecell";
941 reg = <0 0xe3d3d000 0 0x1000>;
943 clocks = <&clk_375m>;
944 clock-names = "apb_pclk";
948 ptm13_out_port: endpoint {
949 remote-endpoint = <&funnel3_in_port1>;
956 compatible = "arm,coresight-etm3x", "arm,primecell";
957 reg = <0 0xe3d3e000 0 0x1000>;
959 clocks = <&clk_375m>;
960 clock-names = "apb_pclk";
964 ptm14_out_port: endpoint {
965 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";
980 ptm15_out_port: endpoint {
981 remote-endpoint = <&funnel3_in_port3>;