#include #include #include #include #include #include #include "cvi_board_memmap.h" /* * OpenSBI will add below subnode into reserved memory automatically * mmode_resv0@80000000 { * reg = <0x00 0x80000000 0x00 0x20000>; * phandle = <0x0d>; * }; * Skip below to avoid lmb region reseved conflict in uboot. * */ #ifndef __UBOOT__ /memreserve/ CVIMMAP_MONITOR_ADDR CVIMMAP_OPENSBI_SIZE; // OpenSBI #endif #include "cv180x_base.dtsi" / { model = "Cvitek. CV180X ASIC. C906."; #size-cells = <0x2>; #address-cells = <0x2>; c906_cpus:cpus { #address-cells = <0x01>; #size-cells = <0x00>; timebase-frequency = <25000000>; cpu-map { cluster0 { core0 { cpu = <0x01>; }; }; }; cpu@0 { device_type = "cpu"; reg = <0x00>; status = "okay"; compatible = "riscv"; riscv,isa = "rv64imafdvcsu"; mmu-type = "riscv,sv39"; clock-frequency = <25000000>; cpu0_intc: interrupt-controller { #interrupt-cells = <0x01>; interrupt-controller; compatible = "riscv,cpu-intc"; }; }; }; soc { #address-cells = <0x02>; #size-cells = <0x02>; compatible = "simple-bus"; ranges; plic0: interrupt-controller@70000000 { riscv,ndev = <101>; riscv,max-priority = <0x07>; reg-names = "control"; reg = <0x00 0x70000000 0x00 0x4000000>; interrupts-extended = <&cpu0_intc 0xffffffff &cpu0_intc 0x09>; interrupt-controller; compatible = "riscv,plic0"; #interrupt-cells = <0x02>; #address-cells = <0x00>; }; clint@74000000 { interrupts-extended = <&cpu0_intc 0x03 &cpu0_intc 0x07>; reg = <0x00 0x74000000 0x00 0x10000>; compatible = "riscv,clint0"; clint,has-no-64bit-mmio; }; }; cv180x_cooling:cv180x_cooling { clocks = <&clk CV180X_CLK_C906_0>, <&clk CV180X_CLK_TPU>; clock-names = "clk_cpu", "clk_tpu_axi"; dev-freqs = <850000000 500000000>, <425000000 375000000>, <425000000 300000000>; compatible = "cvitek,cv180x-cooling"; #cooling-cells = <2>; }; tpu { interrupts = <75 IRQ_TYPE_LEVEL_HIGH>, <76 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "tiu_irq", "tdma_irq"; interrupt-parent = <&plic0>; }; mon { interrupts = <93 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "mon_irq"; interrupt-parent = <&plic0>; }; wiegand0 { interrupts = <64 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; wiegand1 { interrupts = <65 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; wiegand2 { interrupts = <66 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; saradc { interrupts = <100 IRQ_TYPE_EDGE_RISING>; interrupt-parent = <&plic0>; }; rtc { interrupts = <17 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; sysdma_remap { int_mux = <0x7FC00>; /* enable bit [10..18] for CPU1(906B) */ }; dmac: dma@0x4330000 { interrupts = <29 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; watchdog0: cv-wd@0x3010000 { interrupts = <58 IRQ_TYPE_LEVEL_HIGH>; }; spinand:cv-spinf@4060000 { interrupts = <39 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; spif:cvi-spif@10000000 { interrupts = <95 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; spi0:spi0@04180000 { interrupts = <54 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; spi1:spi1@04190000 { interrupts = <55 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; spi2:spi2@041A0000 { interrupts = <56 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; spi3:spi3@041B0000 { interrupts = <57 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; uart0: serial@04140000 { interrupts = <44 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; uart1: serial@04150000 { interrupts = <45 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; uart2: serial@04160000 { interrupts = <46 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; uart3: serial@04170000 { interrupts = <47 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; uart4: serial@041C0000 { interrupts = <48 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; gpio0: gpio@03020000 { porta: gpio-controller@0 { interrupt-controller; interrupts = <60 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; }; gpio1: gpio@03021000 { portb: gpio-controller@1 { interrupt-controller; interrupts = <61 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; }; gpio2: gpio@03022000 { portc: gpio-controller@2 { interrupt-controller; interrupts = <62 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; }; gpio3: gpio@03023000 { portd: gpio-controller@3 { interrupt-controller; interrupts = <63 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; }; gpio4: gpio@05021000 { porte: gpio-controller@4 { interrupt-controller; interrupts = <70 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; }; i2c0: i2c@04000000 { interrupts = <49 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; i2c1: i2c@04010000 { interrupts = <50 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; i2c2: i2c@04020000 { interrupts = <51 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; i2c3: i2c@04030000 { interrupts = <52 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; i2c4: i2c@04040000 { interrupts = <53 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; ethernet0: ethernet@4070000 { interrupt-names = "macirq"; interrupts = <31 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; #if 0 emmc:cv-emmc@4300000 { interrupts = <34 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; #endif sd:cv-sd@4310000 { interrupts = <36 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; i2s0: i2s@04100000 { interrupts = <40 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; i2s1: i2s@04110000 { interrupts = <41 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; i2s2: i2s@04120000 { interrupts = <42 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; i2s3: i2s@04130000 { interrupts = <43 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; vi { interrupts = <24 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; interrupt-names = "isp"; }; vcodec { interrupts = <22 IRQ_TYPE_LEVEL_HIGH>, <21 IRQ_TYPE_LEVEL_HIGH>, <23 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "h265","h264","sbm"; interrupt-parent = <&plic0>; }; jpu { interrupts = <20 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "jpeg"; interrupt-parent = <&plic0>; }; rtos_cmdqu { interrupts = <101 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "mailbox"; interrupt-parent = <&plic0>; }; wifisd:wifi-sd@4320000 { interrupts = <38 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; mipi_rx: cif { interrupts = <26 IRQ_TYPE_LEVEL_HIGH>, <27 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "csi0", "csi1"; interrupt-parent = <&plic0>; }; #if 0 ive { interrupt-names = "ive_irq"; interrupt-parent = <&plic0>; interrupts = <97 IRQ_TYPE_LEVEL_HIGH>; }; #endif vpss { interrupts = <25 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "sc"; interrupt-parent = <&plic0>; }; dwa { interrupts = <28 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "dwa"; interrupt-parent = <&plic0>; }; usb: usb@04340000 { interrupts = <30 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&plic0>; }; thermal:thermal@030E0000 { interrupts = <16 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "tempsen"; interrupt-parent = <&plic0>; }; };