/dts-v1/; / { model = "T-HEAD c910 ice"; compatible = "thead,c910_ice"; #address-cells = <2>; #size-cells = <2>; memory@0 { device_type = "memory"; /* * Total memory size: 4GB (0x00000000 0x100000000) * 0x00200000 - 0x0e0000000: 3407MB for Linux system * 0xe0000000 - 0x100000000: 512MB for GPU */ reg = <0x0 0x200000 0x0 0xdfe00000>; }; cpus { #address-cells = <1>; #size-cells = <0>; timebase-frequency = <3000000>; cpu@0 { device_type = "cpu"; reg = <0>; status = "okay"; compatible = "riscv"; riscv,isa = "rv64imafdcsu"; mmu-type = "riscv,sv39"; cpu-freq = "1.2Ghz"; cpu-icache = "64KB"; cpu-dcache = "64KB"; cpu-l2cache = "2MB"; cpu-tlb = "1024 4-ways"; cpu-cacheline = "64Bytes"; cpu-vector = "0.7.1"; cpu0_intc: interrupt-controller { #interrupt-cells = <1>; compatible = "riscv,cpu-intc"; interrupt-controller; }; }; cpu@1 { device_type = "cpu"; reg = <1>; status = "okay"; compatible = "riscv"; riscv,isa = "rv64imafdcsu"; mmu-type = "riscv,sv39"; cpu-freq = "1.2Ghz"; cpu-icache = "64KB"; cpu-dcache = "64KB"; cpu-l2cache = "2MB"; cpu-tlb = "1024 4-ways"; cpu-cacheline = "64Bytes"; cpu-vector = "0.7.1"; cpu1_intc: interrupt-controller { #interrupt-cells = <1>; compatible = "riscv,cpu-intc"; interrupt-controller; }; }; }; soc { #address-cells = <2>; #size-cells = <2>; compatible = "simple-bus"; ranges; reset: reset-sample { compatible = "thead,reset-sample"; plic-delegate = <0x3 0xf01ffffc>; using-csr-reset; csr-copy = < 0x7c0 0x7c1 0x7c2 0x7c3 0x7c5 0x7cc 0x3b0 0x3b1 0x3b2 0x3b3 0x3b4 0x3b5 0x3b6 0x3b7 0x3a0 >; }; clint0: clint@3f4000000 { compatible = "riscv,clint0"; interrupts-extended = < &cpu0_intc 3 &cpu0_intc 7 &cpu1_intc 3 &cpu1_intc 7 >; reg = <0x3 0xf4000000 0x0 0x04000000>; clint,has-no-64bit-mmio; }; intc: interrupt-controller@3f0000000 { #interrupt-cells = <1>; compatible = "riscv,plic0"; interrupt-controller; interrupts-extended = < &cpu0_intc 0xffffffff &cpu0_intc 9 &cpu1_intc 0xffffffff &cpu1_intc 9 >; reg = <0x3 0xf0000000 0x0 0x04000000>; reg-names = "control"; riscv,max-priority = <7>; riscv,ndev = <80>; }; dummy_apb: apb-clock { compatible = "fixed-clock"; clock-frequency = <62500000>; clock-output-names = "dummy_apb"; #clock-cells = <0>; }; dummy_ahb: ahb-clock { compatible = "fixed-clock"; clock-frequency = <250000000>; clock-output-names = "dummy_ahb"; #clock-cells = <0>; }; dummy_axi: axi-clock { compatible = "fixed-clock"; clock-frequency = <500000000>; clock-output-names = "dummy_axi"; #clock-cells = <0>; }; dummy_gmac: gmac-clock { compatible = "fixed-clock"; clock-frequency = <1000000000>; clock-output-names = "dummy_gmac"; #clock-cells = <0>; }; dummy_clk_sdio: dummy-clk-sdio { compatible = "fixed-clock"; clock-frequency = <150000000>; clock-output-names = "dummy_clk_sdio"; #clock-cells = <0>; }; usb: dwc3@3fff10000 { compatible = "snps,dwc3"; reg = <0x3 0xfff10000 0x0 0x10000>; interrupt-parent = <&intc>; interrupts = <44>; clocks = <&dummy_ahb>, <&dummy_ahb>, <&dummy_ahb>; clock-names = "ref", "bus_early", "suspend"; maximum-speed = "super-speed"; dr_mode = "peripheral"; snps,usb3_lpm_capable; snps,dis_u3_susphy_quirk; }; gpio0: gpio@3fff71000 { compatible = "snps,dw-apb-gpio"; reg = <0x3 0xfff71000 0x0 0x1000>; #address-cells = <1>; #size-cells = <0>; /* GPIO0[0-31] */ gpio0_porta: gpio0-controller@0 { compatible = "snps,dw-apb-gpio-port"; gpio-controller; #gpio-cells = <2>; snps,nr-gpios = <32>; reg = <0>; interrupt-controller; #interrupt-cells = <2>; interrupt-parent = <&intc>; interrupts = <27>; }; /* GPIO0[32-63] */ gpio0_portb: gpio0-controller@1 { compatible = "snps,dw-apb-gpio-port"; gpio-controller; #gpio-cells = <2>; snps,nr-gpios = <32>; reg = <1>; }; }; gpio1: gpio@3fff72000 { compatible = "snps,dw-apb-gpio"; reg = <0x3 0xfff72000 0x0 0x1000>; #address-cells = <1>; #size-cells = <0>; /* GPIO1[0-31] */ gpio1_porta: gpio1-controller@0 { compatible = "snps,dw-apb-gpio-port"; gpio-controller; #gpio-cells = <2>; snps,nr-gpios = <32>; reg = <0>; }; /* GPIO1[32-63] */ gpio1_portb: gpio1-controller@1 { compatible = "snps,dw-apb-gpio-port"; gpio-controller; #gpio-cells = <2>; snps,nr-gpios = <32>; reg = <1>; }; /* GPIO1[64-95] */ gpio1_portc: gpio1-controller@2 { compatible = "snps,dw-apb-gpio-port"; gpio-controller; #gpio-cells = <2>; snps,nr-gpios = <32>; reg = <2>; }; }; gpio-leds { compatible = "gpio-leds"; led0 { /* GPIO0[11] - UART2_TXD */ label = "led0"; gpios = <&gpio0_porta 11 1>; default-state = "off"; }; }; gpio-keys { compatible = "gpio-keys"; /* autorepeat; */ key_0 { /* GPIO0[10] - UART2_RXD */ gpios = <&gpio0_porta 10 1>; linux,code = <59>; label = "key_0"; }; }; i2c@3fff74000 { #address-cells = <1>; #size-cells = <0>; compatible = "snps,designware-i2c-ice"; reg = <0x3 0xfff74000 0x0 0x1000>; interrupts = <21>; interrupt-parent = <&intc>; clocks = <&dummy_apb>; clock-frequency = <400000>; eeprom@50 { compatible = "atmel,24c64"; reg = <0x50>; pagesize = <32>; }; goodix_ts@14 { #gpio-cells = <2>; compatible = "goodix,gt917s"; reg = <0x14>; interrupt-parent = <&gpio0_porta>; interrupts = <31 0>; irq-gpios = <&gpio0_porta 31 0>; reset-gpios = <&gpio0_porta 30 0>; touchscreen-size-x = <720>; touchscreen-size-y = <1280>; }; }; serial@3fff73000 { compatible = "snps,dw-apb-uart"; reg = <0x3 0xfff73000 0x0 0x400>; interrupt-parent = <&intc>; interrupts = <23>; clocks = <&dummy_apb>; clock-names = "baudclk"; reg-shift = <2>; reg-io-width = <4>; }; pmu: pmu { interrupt-parent = <&cpu0_intc>; interrupts = <17>; compatible = "riscv,c910_pmu"; }; dmac0: dmac@3fffd0000 { compatible = "snps,axi-dma-1.01a"; reg = <0x3 0xfffd0000 0x0 0x1000>; interrupt-parent = <&intc>; interrupts = <65>; clocks = <&dummy_axi>, <&dummy_ahb>; clock-names = "core-clk", "cfgr-clk"; dma-channels = <8>; snps,block-size = <65536 65536 65536 65536 65536 65536 65536 65536>; snps,priority = <0 1 2 3 4 5 6 7>; snps,dma-masters = <1>; snps,data-width = <4>; snps,axi-max-burst-len = <16>; status = "disabled"; }; sdhc0: sdhc0@3fffb0000 { compatible = "snps,dw-mshc"; reg = <0x3 0xfffb0000 0x0 0x1000>; interrupt-parent = <&intc>; interrupts = <37>; clocks = <&dummy_clk_sdio>, <&dummy_clk_sdio>; clock-names = "ciu", "biu"; num-slots = <1>; card-detect-delay = <200>; cap-mmc-highspeed; cap-cmd23; non-removable; bus-width = <8>; }; sdhc1: sdhc1@3fffa0000 { compatible = "snps,dw-mshc"; reg = <0x3 0xfffa0000 0x0 0x1000>; interrupt-parent = <&intc>; interrupts = <38>; clocks = <&dummy_clk_sdio>, <&dummy_clk_sdio>; clock-names = "ciu", "biu"; num-slots = <1>; card-detect-delay = <200>; cap-sd-highspeed; bus-width = <4>; }; stmmac_axi_setup: stmmac-axi-config { snps,wr_osr_lmt = <3>; snps,rd_osr_lmt = <3>; snps,blen = <16 8 4 0 0 0 0>; }; gmac: ethernet@3fffc0000 { compatible = "thead,dwmac"; reg = < 0x3 0xfffc0000 0x0 0x2000 0x3 0xfe83025c 0x0 0x4 0x3 0xfe83031c 0x0 0x4 0x3 0xfff770c0 0x0 0x1c>; reg-names = "gmac", "phy_if_reg", "txclk_dir_reg", "clk_mgr_reg"; interrupt-parent = <&intc>; interrupts = <40>; interrupt-names = "macirq"; clocks = <&dummy_ahb>, <&dummy_gmac>; clock-names = "stmmaceth", "gmac_pll_clk"; snps,pbl = <32>; snps,fixed-burst; snps,axi-config = <&stmmac_axi_setup>; phy-mode = "rgmii-id"; rx-clk-delay = <0x1f>; /* for RGMII */ tx-clk-delay = <0x1f>; /* for RGMII */ phy-handle = <ð_phy_0>; mdio0 { #address-cells = <1>; #size-cells = <0>; compatible = "snps,dwmac-mdio"; eth_phy_0: ethernet-phy@0 { reg = <0>; }; }; }; gpu: gpu@3fff27000 { compatible = "verisilicon,gc8000ul"; reg = <0x3 0xfff27000 0x0 0x1000>; interrupt-parent = <&intc>; interrupts = <63>; contiguous-base = <0x0 0xe0000000>; contiguous-size = <0x0 0x20000000>; }; watchdog: watchdog@3fffe3000 { compatible = "ice,ice-wdt"; reg = <0x3 0xfffe3000 0x0 0x1000>; interrupts = <20>; }; dpu: dpu@3fff28000 { compatible = "verisilicon,dc8000-fb"; reg = <0x3 0xfff28000 0x0 0x8000>; interrupt-parent = <&intc>; interrupts = <64>; }; }; chosen { /* bootargs = "console=ttyS0,115200 crashkernel=256M-:128M c910_mmu_v1"; */ /* linux,initrd-start = <0x2000000>; */ /* linux,initrd-end = <0x17000000>; */ bootargs = "console=ttyS0,115200 rdinit=/sbin/init root=/dev/mmcblk0p4 rw rootfstype=ext4 blkdevparts=mmcblk0:2M(table),2M(dtb),60M(kernel),-(rootfs) clk_ignore_unused loglevel=7 rootwait crashkernel=256M-:128M c910_mmu_v1"; stdout-path = "serial0@3fff73000:115200"; }; };