/dts-v1/;
/ {
#address-cells = <0x01>;
model = "Allwinner D1 Nezha";
#size-cells = <0x01>;
compatible = "allwinner,d1-nezha\0allwinner,sun20i-d1";
connector {
type = "a";
compatible = "hdmi-connector";
port {
endpoint {
remote-endpoint = <0x48>;
phandle = <0x44>;
};
};
};
cpu-opp-table {
nvmem-cells = <0x01>;
compatible = "allwinner,sun20i-d1-operating-points\0allwinner,sun50i-h6-operating-points";
phandle = <0x03>;
opp-1080000000 {
opp-hz = <0x00 0x3c14dc00>;
opp-microvolt-speed0 = <0x10c8e0>;
clock-latency-ns = <0x3b9b0>;
};
};
vdd-cpu {
regulator-max-microvolt = <0x11b340>;
regulator-min-microvolt = <0xc5c10>;
regulator-name = "vdd-cpu";
compatible = "pwm-regulator";
phandle = <0x04>;
pwms = <0x49 0x00 0xc350 0x00>;
pwm-supply = <0x2c>;
};
wifi-pwrseq {
reset-gpios = <0x22 0x06 0x0c 0x01>;
compatible = "mmc-pwrseq-simple";
phandle = <0x26>;
};
thermal-zones {
cpu-thermal {
polling-delay = <0x00>;
polling-delay-passive = <0x00>;
thermal-sensors = <0x08 0x00>;
trips {
cpu-crit {
temperature = <0x1adb0>;
hysteresis = <0x00>;
type = "critical";
};
cpu-target {
temperature = <0x14c08>;
hysteresis = <0xbb8>;
type = "passive";
phandle = <0x09>;
};
};
cooling-maps {
map0 {
trip = <0x09>;
cooling-device = <0x0a 0xffffffff 0xffffffff>;
};
};
};
};
soc {
#address-cells = <0x01>;
#size-cells = <0x01>;
interrupt-parent = <0x0b>;
compatible = "simple-bus";
ranges;
watchdog@20500a0 {
interrupts = <0x4f 0x04>;
clocks = <0x0f>;
compatible = "allwinner,sun20i-d1-wdt-reset\0allwinner,sun20i-d1-wdt";
status = "reserved";
reg = <0x20500a0 0x20>;
};
serial@2501000 {
reg-io-width = <0x04>;
fifo-size = <0x100>;
resets = <0x02 0x16>;
interrupts = <0x16 0x04>;
clocks = <0x02 0x42>;
dma-names = "rx\0tx";
compatible = "allwinner,sun20i-d1-uart\0snps,dw-apb-uart";
status = "disabled";
reg = <0x2501000 0x400>;
dmas = <0x16 0x12 0x16 0x12>;
reg-shift = <0x02>;
};
video-codec@5c01000 {
interrupts = <0x7b 0x04>;
reg = <0x5c01000 0x1000>;
};
hdmi@5500000 {
reg-io-width = <0x01>;
phy-names = "phy";
clock-names = "iahb\0isfr\0tmds\0cec";
hvcc-supply = <0x42>;
resets = <0x02 0x32 0x02 0x31>;
interrupts = <0x6d 0x04>;
clocks = <0x02 0x6d 0x02 0x6a 0x3d 0x00 0x02 0x6c>;
compatible = "allwinner,sun20i-d1-dw-hdmi";
status = "okay";
phys = <0x41>;
reg = <0x5500000 0x10000>;
reset-names = "ctrl\0sub";
port {
endpoint {
remote-endpoint = <0x44>;
phandle = <0x48>;
};
};
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@0 {
reg = <0x00>;
endpoint {
remote-endpoint = <0x43>;
phandle = <0x3a>;
};
};
port@1 {
reg = <0x01>;
};
};
};
syscon@3000000 {
#address-cells = <0x01>;
#size-cells = <0x01>;
compatible = "allwinner,sun20i-d1-system-control";
ranges;
reg = <0x3000000 0x1000>;
phandle = <0x2d>;
sram@1d00000 {
#address-cells = <0x01>;
#size-cells = <0x01>;
compatible = "mmio-sram";
ranges = <0x00 0x1d00000 0x40000>;
reg = <0x1d00000 0x40000>;
sram-section@0 {
compatible = "allwinner,sun20i-d1-sram-c1\0allwinner,sun4i-a10-sram-c1";
reg = <0x00 0x40000>;
phandle = <0x10>;
};
};
sram@400000 {
#address-cells = <0x01>;
#size-cells = <0x01>;
compatible = "mmio-sram";
ranges = <0x00 0x400000 0x20000>;
reg = <0x400000 0x20000>;
sram-section@0 {
compatible = "allwinner,sun20i-d1-dsp-sram";
reg = <0x00 0x20000>;
phandle = <0x0c>;
};
};
regulators {
ldob {
regulator-name = "ldob";
};
ldoa {
regulator-max-microvolt = <0x1b7740>;
regulator-always-on;
ldo-in-supply = <0x13>;
regulator-min-microvolt = <0x1b7740>;
regulator-name = "ldoa";
phandle = <0x42>;
};
};
};
mmc@4022000 {
mmc-ddr-3_3v;
#address-cells = <0x01>;
clock-names = "ahb\0mmc";
no-sdio;
resets = <0x02 0x11>;
interrupts = <0x3a 0x04>;
clocks = <0x02 0x3d 0x02 0x3a>;
#size-cells = <0x00>;
no-sd;
mmc-ddr-1_8v;
compatible = "allwinner,sun20i-d1-emmc";
status = "disabled";
reg = <0x4022000 0x1000>;
max-frequency = <0x8f0d180>;
cap-mmc-highspeed;
reset-names = "ahb";
};
i2c@2502000 {
pinctrl-names = "default";
#address-cells = <0x01>;
pinctrl-0 = <0x23>;
resets = <0x02 0x18>;
interrupts = <0x19 0x04>;
clocks = <0x02 0x44>;
#size-cells = <0x00>;
dma-names = "rx\0tx";
compatible = "allwinner,sun20i-d1-i2c\0allwinner,sun6i-a31-i2c";
status = "okay";
reg = <0x2502000 0x400>;
dmas = <0x16 0x2b 0x16 0x2b>;
};
mixer@5100000 {
iommus = <0x11 0x02>;
clock-names = "bus\0mod";
resets = <0x30 0x00>;
clocks = <0x30 0x00 0x30 0x06>;
compatible = "allwinner,sun20i-d1-de2-mixer-0";
reg = <0x5100000 0x100000>;
phandle = <0x06>;
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@1 {
reg = <0x01>;
endpoint {
remote-endpoint = <0x31>;
phandle = <0x33>;
};
};
};
};
crypto@3040000 {
clock-names = "bus\0mod\0ram\0trng";
resets = <0x02 0x04>;
interrupts = <0x44 0x04>;
clocks = <0x02 0x22 0x02 0x21 0x02 0x32 0x12 0x02>;
compatible = "allwinner,sun20i-d1-crypto";
reg = <0x3040000 0x800>;
};
clint@14000000 {
reg-io-width = <0x04>;
interrupts-extended = <0x47 0x03 0x47 0x07>;
compatible = "allwinner,sun20i-d1-clint\0thead,c900-clint";
reg = <0x14000000 0xc000>;
};
usb@4101400 {
phy-names = "usb";
resets = <0x02 0x2a>;
interrupts = <0x2f 0x04>;
clocks = <0x02 0x63 0x02 0x61>;
compatible = "allwinner,sun20i-d1-ohci\0generic-ohci";
status = "okay";
phys = <0x2a 0x00>;
reg = <0x4101400 0x100>;
};
dmic@2031000 {
clock-names = "bus\0mod";
resets = <0x02 0x26>;
interrupts = <0x28 0x04>;
clocks = <0x02 0x5d 0x02 0x5c>;
dma-names = "rx";
#sound-dai-cells = <0x00>;
compatible = "allwinner,sun20i-d1-dmic";
status = "disabled";
reg = <0x2031000 0x400>;
dmas = <0x16 0x08>;
};
serial@2500400 {
reg-io-width = <0x04>;
pinctrl-names = "default";
pinctrl-0 = <0x20 0x21>;
fifo-size = <0x100>;
resets = <0x02 0x13>;
interrupts = <0x13 0x04>;
clocks = <0x02 0x3f>;
dma-names = "rx\0tx";
compatible = "allwinner,sun20i-d1-uart1\0allwinner,sun20i-d1-uart\0snps,dw-apb-uart";
status = "okay";
reg = <0x2500400 0x400>;
dmas = <0x16 0x0f 0x16 0x0f>;
reg-shift = <0x02>;
bluetooth {
device-wakeup-gpios = <0x22 0x06 0x10 0x01>;
interrupts-extended = <0x22 0x06 0x11 0x08>;
reset-gpios = <0x22 0x06 0x12 0x01>;
compatible = "xradio,xr829-bt";
interrupt-names = "wakeup";
};
};
dsi@5450000 {
interrupts = <0x6c 0x04>;
reg = <0x5450000 0x2000>;
};
spi@4025000 {
pinctrl-names = "default";
#address-cells = <0x01>;
num-cs = <0x01>;
pinctrl-0 = <0x28>;
clock-names = "ahb\0mod";
resets = <0x02 0x1c>;
interrupts = <0x1f 0x04>;
clocks = <0x02 0x4a 0x02 0x48>;
#size-cells = <0x00>;
dma-names = "rx\0tx";
compatible = "allwinner,sun20i-d1-spi\0allwinner,sun50i-r329-spi";
status = "okay";
reg = <0x4025000 0x1000>;
dmas = <0x16 0x16 0x16 0x16>;
flash@0 {
compatible = "spi-nand";
reg = <0x00>;
partitions {
#address-cells = <0x01>;
#size-cells = <0x01>;
compatible = "fixed-partitions";
partition@100000 {
label = "uboot";
reg = <0x100000 0x300000>;
};
partition@0 {
label = "boot0";
reg = <0x00 0x100000>;
};
partition@500000 {
label = "sys";
reg = <0x500000 0xfb00000>;
};
partition@400000 {
label = "secure_storage";
reg = <0x400000 0x100000>;
};
};
};
};
watchdog@1700400 {
interrupts = <0x8a 0x04>;
clocks = <0x0f>;
compatible = "allwinner,sun20i-d1-wdt";
status = "reserved";
reg = <0x1700400 0x20>;
};
dram-controller@3102000 {
dma-ranges = <0x00 0x40000000 0x80000000>;
#address-cells = <0x01>;
clock-names = "bus\0dram\0mbus";
interrupts = <0x3b 0x04>;
clocks = <0x02 0x37 0x02 0x2f 0x02 0x1a>;
#interconnect-cells = <0x01>;
#size-cells = <0x01>;
compatible = "allwinner,sun20i-d1-mbus";
status = "disabled";
reg = <0x3102000 0x200000>;
phandle = <0x05>;
};
deinterlace@5400000 {
iommus = <0x11 0x04>;
interconnect-names = "dma-mem";
interconnects = <0x05 0x0a>;
interrupts = <0x68 0x04>;
reg = <0x5400000 0x10000>;
};
i2s@2032000 {
clock-names = "apb\0mod";
resets = <0x02 0x22>;
interrupts = <0x2a 0x04>;
clocks = <0x02 0x56 0x02 0x52>;
dma-names = "rx\0tx";
#sound-dai-cells = <0x00>;
compatible = "allwinner,sun20i-d1-i2s";
status = "disabled";
reg = <0x2032000 0x1000>;
dmas = <0x16 0x03 0x16 0x03>;
};
interrupt-controller@10000000 {
#address-cells = <0x00>;
interrupts-extended = <0x47 0x0b 0x47 0x09>;
compatible = "allwinner,sun20i-d1-plic\0thead,c900-plic";
#interrupt-cells = <0x01>;
reg = <0x10000000 0x4000000>;
phandle = <0x45>;
riscv,ndev = <0xb0>;
interrupt-controller;
};
clock-controller@7010000 {
#reset-cells = <0x01>;
clock-names = "hosc\0losc\0iosc\0pll-periph";
interrupts = <0x40 0x04>;
clocks = <0x0f 0x12 0x00 0x12 0x02 0x02 0x06>;
#clock-cells = <0x01>;
compatible = "allwinner,sun20i-d1-r-ccu";
reg = <0x7010000 0x400>;
phandle = <0x46>;
};
clock-controller@2001000 {
#reset-cells = <0x01>;
clock-names = "hosc\0losc\0iosc";
clocks = <0x0f 0x12 0x00 0x12 0x02>;
#clock-cells = <0x01>;
compatible = "allwinner,sun20i-d1-ccu";
reg = <0x2001000 0x1000>;
phandle = <0x02>;
};
ethernet@4500000 {
syscon = <0x2d>;
pinctrl-names = "default";
phy-supply = <0x13>;
phy-mode = "rgmii-id";
pinctrl-0 = <0x2e>;
clock-names = "stmmaceth";
local-mac-address = [3a 28 4f ed 0e 21];
resets = <0x02 0x1e>;
interrupts = <0x3e 0x04>;
clocks = <0x02 0x4d>;
compatible = "allwinner,sun20i-d1-emac\0allwinner,sun50i-a64-emac";
status = "okay";
interrupt-names = "macirq";
reg = <0x4500000 0x10000>;
phy-handle = <0x2f>;
reset-names = "stmmaceth";
mdio {
#address-cells = <0x01>;
#size-cells = <0x00>;
compatible = "snps,dwmac-mdio";
ethernet-phy@1 {
compatible = "ethernet-phy-ieee802.3-c22";
reg = <0x01>;
phandle = <0x2f>;
};
};
};
serial@2500c00 {
reg-io-width = <0x04>;
fifo-size = <0x100>;
resets = <0x02 0x15>;
interrupts = <0x15 0x04>;
clocks = <0x02 0x41>;
dma-names = "rx\0tx";
compatible = "allwinner,sun20i-d1-uart\0snps,dw-apb-uart";
status = "disabled";
reg = <0x2500c00 0x400>;
dmas = <0x16 0x11 0x16 0x11>;
reg-shift = <0x02>;
};
pwm@2000c00 {
pinctrl-names = "default";
pinctrl-0 = <0x14 0x15>;
clock-names = "bus\0mod";
resets = <0x02 0x0d>;
interrupts = <0x22 0x04>;
clocks = <0x02 0x2d 0x0f>;
#pwm-cells = <0x03>;
compatible = "allwinner,sun20i-d1-pwm";
status = "okay";
reg = <0x2000c00 0x400>;
phandle = <0x49>;
};
temperature-sensor@2009400 {
vref-supply = <0x19>;
nvmem-cells = <0x18>;
clock-names = "bus\0mod";
resets = <0x02 0x21>;
interrupts = <0x4a 0x04>;
clocks = <0x02 0x51 0x0f>;
#thermal-sensor-cells = <0x00>;
compatible = "allwinner,sun20i-d1-ths";
nvmem-cell-names = "calibration";
reg = <0x2009400 0x400>;
phandle = <0x08>;
};
usb@4200400 {
phy-names = "usb";
resets = <0x02 0x2b>;
interrupts = <0x32 0x04>;
clocks = <0x02 0x64 0x02 0x62>;
compatible = "allwinner,sun20i-d1-ohci\0generic-ohci";
status = "okay";
phys = <0x2a 0x01>;
reg = <0x4200400 0x100>;
};
usb@4101000 {
phy-names = "usb";
resets = <0x02 0x2a 0x02 0x2c>;
interrupts = <0x2e 0x04>;
clocks = <0x02 0x63 0x02 0x65 0x02 0x61>;
compatible = "allwinner,sun20i-d1-ehci\0generic-ehci";
status = "okay";
phys = <0x2a 0x00>;
reg = <0x4101000 0x100>;
};
serial@2500000 {
reg-io-width = <0x04>;
pinctrl-names = "default";
pinctrl-0 = <0x1f>;
fifo-size = <0x40>;
resets = <0x02 0x12>;
interrupts = <0x12 0x04>;
clocks = <0x02 0x3e>;
dma-names = "rx\0tx";
compatible = "allwinner,sun20i-d1-uart\0snps,dw-apb-uart";
status = "okay";
reg = <0x2500000 0x400>;
dmas = <0x16 0x0e 0x16 0x0e>;
reg-shift = <0x02>;
};
video-codec@5c00000 {
interconnect-names = "dma-mem";
interconnects = <0x05 0x06>;
reg = <0x5c00000 0x1000>;
};
efuse@3006000 {
#address-cells = <0x01>;
#size-cells = <0x01>;
compatible = "allwinner,sun20i-d1-sid\0allwinner,sun50i-a64-sid";
reg = <0x3006000 0x1000>;
ths-calib@14 {
reg = <0x14 0x04>;
phandle = <0x18>;
};
cpu-speed-grade@0 {
reg = <0x00 0x02>;
phandle = <0x01>;
};
};
mmc@4021000 {
pinctrl-names = "default";
#address-cells = <0x01>;
pinctrl-0 = <0x27>;
clock-names = "ahb\0mmc";
cap-sd-highspeed;
vqmmc-supply = <0x13>;
no-mmc;
bus-width = <0x04>;
non-removable;
resets = <0x02 0x10>;
interrupts = <0x39 0x04>;
clocks = <0x02 0x3c 0x02 0x39>;
#size-cells = <0x00>;
vmmc-supply = <0x13>;
compatible = "allwinner,sun20i-d1-mmc";
status = "okay";
mmc-pwrseq = <0x26>;
reg = <0x4021000 0x1000>;
max-frequency = <0x8f0d180>;
reset-names = "ahb";
wifi@1 {
host-wake-gpios = <0x22 0x06 0x0a 0x01>;
reg = <0x01>;
};
};
clock-controller@5000000 {
#reset-cells = <0x01>;
clock-names = "bus\0mod";
resets = <0x02 0x01>;
clocks = <0x02 0x1c 0x02 0x1b>;
#clock-cells = <0x01>;
compatible = "allwinner,sun20i-d1-de2-clk\0allwinner,sun50i-h5-de2-clk";
reg = <0x5000000 0x10000>;
phandle = <0x30>;
};
video-codec@1c0e000 {
iommus = <0x11 0x00>;
interconnect-names = "dma-mem";
clock-names = "ahb\0mod\0ram";
interconnects = <0x05 0x04>;
allwinner,sram = <0x10 0x01>;
resets = <0x02 0x05>;
interrupts = <0x52 0x04>;
clocks = <0x02 0x24 0x02 0x23 0x02 0x31>;
compatible = "allwinner,sun20i-d1-video-engine";
reg = <0x1c0e000 0x2000>;
};
iommu@2010000 {
interrupts = <0x50 0x04>;
clocks = <0x02 0x2e>;
#iommu-cells = <0x01>;
compatible = "allwinner,sun20i-d1-iommu";
reg = <0x2010000 0x10000>;
phandle = <0x11>;
};
lcd-controller@5470000 {
clock-names = "ahb\0tcon-ch1";
resets = <0x02 0x35>;
interrupts = <0x6b 0x04>;
clocks = <0x02 0x73 0x3d 0x00>;
compatible = "allwinner,sun20i-d1-tcon-tv";
reg = <0x5470000 0x1000>;
reset-names = "lcd";
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@0 {
#address-cells = <0x01>;
#size-cells = <0x00>;
reg = <0x00>;
endpoint@1 {
remote-endpoint = <0x3f>;
reg = <0x01>;
phandle = <0x38>;
};
endpoint@0 {
remote-endpoint = <0x3e>;
reg = <0x00>;
phandle = <0x35>;
};
};
port@1 {
reg = <0x01>;
endpoint {
remote-endpoint = <0x40>;
phandle = <0x39>;
};
};
};
};
hwlock@3005000 {
resets = <0x02 0x0a>;
interrupts = <0x46 0x04>;
clocks = <0x02 0x29>;
compatible = "allwinner,sun20i-d1-hwspinlock\0allwinner,sun6i-a31-hwspinlock";
reg = <0x3005000 0x1000>;
};
interrupt-controller@6010000 {
#address-cells = <0x00>;
resets = <0x02 0x41>;
clocks = <0x02 0x86>;
interrupt-parent = <0x45>;
compatible = "allwinner,sun20i-d1-intc";
#interrupt-cells = <0x02>;
reg = <0x6010000 0x100>;
phandle = <0x0b>;
interrupt-controller;
};
i2s@2034000 {
pinctrl-names = "default";
pinctrl-0 = <0x1b 0x1c 0x1d>;
clock-names = "apb\0mod";
resets = <0x02 0x24>;
interrupts = <0x2c 0x04>;
clocks = <0x02 0x58 0x02 0x54>;
dma-names = "rx\0tx";
#sound-dai-cells = <0x00>;
compatible = "allwinner,sun20i-d1-i2s";
status = "okay";
reg = <0x2034000 0x1000>;
dmas = <0x16 0x05 0x16 0x05>;
};
video-codec@5604000 {
interrupts = <0x6e 0x04>;
reg = <0x5604000 0x4000>;
};
usb@4200000 {
phy-names = "usb";
resets = <0x02 0x2b 0x02 0x2d>;
interrupts = <0x31 0x04>;
clocks = <0x02 0x64 0x02 0x66 0x02 0x62>;
compatible = "allwinner,sun20i-d1-ehci\0generic-ehci";
status = "okay";
phys = <0x2a 0x01>;
reg = <0x4200000 0x100>;
};
rtc@7090000 {
clock-names = "bus\0hosc\0ahb";
interrupts = <0xa0 0x04>;
clocks = <0x46 0x07 0x0f 0x46 0x00>;
#clock-cells = <0x01>;
compatible = "allwinner,sun20i-d1-rtc\0allwinner,sun50i-r329-rtc";
reg = <0x7090000 0x400>;
phandle = <0x12>;
};
irled@2003000 {
clock-names = "bus\0pclk\0mclk";
resets = <0x02 0x1f>;
interrupts = <0x23 0x04>;
clocks = <0x02 0x4f 0x0f 0x02 0x4e>;
dma-names = "tx";
compatible = "allwinner,sun20i-d1-ir-tx";
status = "disabled";
reg = <0x2003000 0x400>;
dmas = <0x16 0x0d>;
};
i2c@2502800 {
pinctrl-names = "default";
#address-cells = <0x01>;
pinctrl-0 = <0x24>;
resets = <0x02 0x1a>;
interrupts = <0x1b 0x04>;
clocks = <0x02 0x46>;
#size-cells = <0x00>;
dma-names = "rx\0tx";
compatible = "allwinner,sun20i-d1-i2c\0allwinner,sun6i-a31-i2c";
status = "okay";
reg = <0x2502800 0x400>;
dmas = <0x16 0x2d 0x16 0x2d>;
gpio@38 {
#address-cells = <0x00>;
gpio-controller;
interrupts-extended = <0x22 0x01 0x02 0x08>;
compatible = "nxp,pcf8574a";
#interrupt-cells = <0x02>;
reg = <0x38>;
#gpio-cells = <0x02>;
interrupt-controller;
};
};
timer@2050000 {
interrupts = <0x4b 0x04 0x4c 0x04>;
clocks = <0x0f>;
compatible = "allwinner,sun20i-d1-timer\0allwinner,sun8i-a23-timer";
reg = <0x2050000 0xa0>;
};
pinctrl@2000000 {
#address-cells = <0x00>;
clock-names = "apb\0hosc\0losc";
gpio-controller;
interrupts = <0x55 0x04 0x57 0x04 0x59 0x04 0x5b 0x04 0x5d 0x04 0x5f 0x04>;
clocks = <0x02 0x18 0x0f 0x12 0x00>;
compatible = "allwinner,sun20i-d1-pinctrl";
#interrupt-cells = <0x03>;
vcc-pb-supply = <0x13>;
interrupt-names = "pb\0pc\0pd\0pe\0pf\0pg";
vcc-pc-supply = <0x13>;
reg = <0x2000000 0x800>;
phandle = <0x22>;
vcc-pd-supply = <0x13>;
#gpio-cells = <0x03>;
vcc-pe-supply = <0x13>;
vcc-pf-supply = <0x13>;
vcc-pg-supply = <0x13>;
interrupt-controller;
i2s2-pb3-din-pin {
function = "i2s2_din";
pins = "PB3";
phandle = <0x1c>;
};
rgmii-pe-pins {
function = "emac";
pins = "PE0\0PE1\0PE2\0PE3\0PE4\0PE5\0PE6\0PE7\0PE8\0PE9\0PE11\0PE12\0PE13\0PE14\0PE15";
phandle = <0x2e>;
};
pwm7-pd22-pin {
function = "pwm";
pins = "PD22";
};
uart1-pg8-rts-cts-pins {
function = "uart1";
pins = "PG8\0PG9";
phandle = <0x21>;
};
i2s2-pb-pins {
function = "i2s2";
pins = "PB5\0PB6\0PB7";
phandle = <0x1b>;
};
ledc-pc0-pin {
function = "ledc";
pins = "PC0";
phandle = <0x17>;
};
spdif-pd22-pin {
function = "spdif";
pins = "PD22";
phandle = <0x1e>;
};
mmc1-pins {
function = "mmc1";
pins = "PG0\0PG1\0PG2\0PG3\0PG4\0PG5";
phandle = <0x27>;
};
mmc0-pins {
function = "mmc0";
pins = "PF0\0PF1\0PF2\0PF3\0PF4\0PF5";
phandle = <0x25>;
};
uart1-pg6-pins {
function = "uart1";
pins = "PG6\0PG7";
phandle = <0x20>;
};
uart0-pb8-pins {
function = "uart0";
pins = "PB8\0PB9";
phandle = <0x1f>;
};
spi1-pd-pins {
function = "spi1";
pins = "PD10\0PD11\0PD12\0PD13\0PD14\0PD15";
phandle = <0x29>;
};
pwm2-pd18-pin {
function = "pwm";
pins = "PD18";
phandle = <0x15>;
};
spi0-pins {
function = "spi0";
pins = "PC2\0PC3\0PC4\0PC5\0PC6\0PC7";
phandle = <0x28>;
};
pwm0-pd16-pin {
function = "pwm";
pins = "PD16";
phandle = <0x14>;
};
i2c2-pb0-pins {
function = "i2c2";
pins = "PB0\0PB1";
phandle = <0x24>;
};
i2s2-pb4-dout-pin {
function = "i2s2_dout";
pins = "PB4";
phandle = <0x1d>;
};
i2c0-pb10-pins {
function = "i2c0";
pins = "PB10\0PB11";
phandle = <0x23>;
};
};
usb@4100000 {
phy-names = "usb";
resets = <0x02 0x2e>;
interrupts = <0x2d 0x04>;
clocks = <0x02 0x67>;
extcon = <0x2a 0x00>;
dma-names = "ep1_rx\0ep1_tx\0ep2_rx\0ep2_tx\0ep3_rx\0ep3_tx\0ep4_rx\0ep4_tx\0ep5_rx\0ep5_tx";
compatible = "allwinner,sun20i-d1-musb\0allwinner,sun8i-a33-musb";
status = "okay";
interrupt-names = "mc";
phys = <0x2a 0x00>;
reg = <0x4100000 0x400>;
dmas = <0x16 0x1e 0x16 0x1e 0x16 0x1f 0x16 0x1f 0x16 0x20 0x16 0x20 0x16 0x21 0x16 0x21 0x16 0x22 0x16 0x22>;
dr_mode = "otg";
};
mailbox@601f000 {
resets = <0x02 0x09>;
interrupts = <0x90 0x04 0x91 0x04>;
clocks = <0x02 0x28>;
#mbox-cells = <0x02>;
compatible = "allwinner,sun20i-d1-msgbox";
interrupt-names = "rx\0tx";
reg = <0x601f000 0x1000>;
phandle = <0x0d>;
};
phy@4100400 {
usb1_vbus-supply = <0x2c>;
clock-names = "usb0_phy\0usb1_phy";
reg-names = "phy_ctrl\0pmu0\0pmu1";
resets = <0x02 0x28 0x02 0x29>;
clocks = <0x0f 0x0f>;
#phy-cells = <0x01>;
usb0_vbus_det-gpios = <0x22 0x03 0x14 0x00>;
compatible = "allwinner,sun20i-d1-usb-phy";
status = "okay";
usb0_vbus-supply = <0x2b>;
reg = <0x4100400 0x100 0x4101800 0x100 0x4200800 0x100>;
phandle = <0x2a>;
reset-names = "usb0_reset\0usb1_reset";
usb0_id_det-gpios = <0x22 0x03 0x15 0x01>;
};
mmc@4020000 {
pinctrl-names = "default";
#address-cells = <0x01>;
pinctrl-0 = <0x25>;
clock-names = "ahb\0mmc";
cap-sd-highspeed;
vqmmc-supply = <0x13>;
no-mmc;
bus-width = <0x04>;
resets = <0x02 0x0f>;
interrupts = <0x38 0x04>;
clocks = <0x02 0x3b 0x02 0x38>;
#size-cells = <0x00>;
vmmc-supply = <0x13>;
compatible = "allwinner,sun20i-d1-mmc";
status = "okay";
disable-wp;
reg = <0x4020000 0x1000>;
max-frequency = <0x8f0d180>;
reset-names = "ahb";
cd-gpios = <0x22 0x05 0x06 0x00>;
};
g2d@5410000 {
iommus = <0x11 0x03>;
interconnect-names = "dma-mem";
interconnects = <0x05 0x09>;
interrupts = <0x69 0x04>;
reg = <0x5410000 0x40000>;
};
mailbox@3003000 {
resets = <0x02 0x07>;
interrupts = <0x65 0x04 0x66 0x04>;
clocks = <0x02 0x26>;
#mbox-cells = <0x02>;
compatible = "allwinner,sun20i-d1-msgbox";
interrupt-names = "rx\0tx";
reg = <0x3003000 0x1000>;
};
dsp@1700000 {
clock-names = "cfg\0dsp";
reg-names = "cfg";
allwinner,sram = <0x0c 0x01>;
resets = <0x02 0x3f 0x02 0x40 0x02 0x3e>;
interrupts = <0x88 0x04 0x89 0x04>;
clocks = <0x02 0x83 0x02 0x82>;
compatible = "allwinner,sun20i-d1-dsp";
interrupt-names = "dee\0pfe";
reg = <0x1700000 0x400>;
mboxes = <0x0d 0x01 0x00 0x0e 0x02 0x01>;
mbox-names = "rx\0tx";
};
watchdog@6011000 {
interrupts = <0x93 0x04>;
clocks = <0x0f>;
compatible = "allwinner,sun20i-d1-wdt";
reg = <0x6011000 0x20>;
};
mailbox@1701000 {
resets = <0x02 0x08>;
interrupts = <0x8b 0x04 0x8c 0x04>;
clocks = <0x02 0x27>;
#mbox-cells = <0x02>;
compatible = "allwinner,sun20i-d1-msgbox";
interrupt-names = "rx\0tx";
reg = <0x1701000 0x1000>;
phandle = <0x0e>;
};
dma-controller@3002000 {
clock-names = "bus\0mbus";
resets = <0x02 0x06>;
interrupts = <0x42 0x04 0x8e 0x04>;
clocks = <0x02 0x25 0x02 0x30>;
dma-requests = <0x30>;
compatible = "allwinner,sun20i-d1-dma";
reg = <0x3002000 0x1000>;
phandle = <0x16>;
dma-channels = <0x10>;
#dma-cells = <0x01>;
};
tcon-top@5460000 {
clock-output-names = "tcon-top-tv0\0tcon-top-dsi";
clock-names = "bus\0tcon-tv0\0tve0\0dsi";
resets = <0x02 0x30>;
clocks = <0x02 0x69 0x02 0x72 0x02 0x74 0x02 0x6e>;
#clock-cells = <0x01>;
compatible = "allwinner,sun20i-d1-tcon-top";
reg = <0x5460000 0x1000>;
phandle = <0x3d>;
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@0 {
#address-cells = <0x01>;
#size-cells = <0x00>;
reg = <0x00>;
endpoint@0 {
remote-endpoint = <0x33>;
reg = <0x00>;
phandle = <0x31>;
};
};
port@5 {
reg = <0x05>;
endpoint {
remote-endpoint = <0x3a>;
phandle = <0x43>;
};
};
port@3 {
#address-cells = <0x01>;
#size-cells = <0x00>;
reg = <0x03>;
endpoint@2 {
remote-endpoint = <0x38>;
reg = <0x02>;
phandle = <0x3f>;
};
endpoint@0 {
remote-endpoint = <0x37>;
reg = <0x00>;
phandle = <0x3c>;
};
};
port@1 {
#address-cells = <0x01>;
#size-cells = <0x00>;
reg = <0x01>;
endpoint@2 {
remote-endpoint = <0x35>;
reg = <0x02>;
phandle = <0x3e>;
};
endpoint@0 {
remote-endpoint = <0x34>;
reg = <0x00>;
phandle = <0x3b>;
};
};
port@4 {
reg = <0x04>;
endpoint {
remote-endpoint = <0x39>;
phandle = <0x40>;
};
};
port@2 {
#address-cells = <0x01>;
#size-cells = <0x00>;
reg = <0x02>;
endpoint@1 {
remote-endpoint = <0x36>;
reg = <0x01>;
phandle = <0x32>;
};
};
};
};
serial@2501400 {
reg-io-width = <0x04>;
fifo-size = <0x100>;
resets = <0x02 0x17>;
interrupts = <0x17 0x04>;
clocks = <0x02 0x43>;
dma-names = "rx\0tx";
compatible = "allwinner,sun20i-d1-uart\0snps,dw-apb-uart";
status = "disabled";
reg = <0x2501400 0x400>;
dmas = <0x16 0x13 0x16 0x13>;
reg-shift = <0x02>;
};
spi@4026000 {
pinctrl-names = "default";
#address-cells = <0x01>;
num-cs = <0x01>;
pinctrl-0 = <0x29>;
clock-names = "ahb\0mod";
resets = <0x02 0x1d>;
interrupts = <0x20 0x04>;
clocks = <0x02 0x4b 0x02 0x49>;
#size-cells = <0x00>;
dma-names = "rx\0tx";
compatible = "allwinner,sun20i-d1-spi-dbi\0allwinner,sun50i-r329-spi-dbi\0allwinner,sun50i-r329-spi";
status = "okay";
reg = <0x4026000 0x1000>;
dmas = <0x16 0x17 0x16 0x17>;
};
keys@2009800 {
vref-supply = <0x19>;
wakeup-source;
resets = <0x02 0x2f>;
interrupts = <0x4d 0x04>;
clocks = <0x02 0x68>;
compatible = "allwinner,sun20i-d1-lradc\0allwinner,sun50i-r329-lradc";
status = "okay";
reg = <0x2009800 0x400>;
button-160 {
label = "OK";
channel = <0x00>;
linux,code = <0x160>;
voltage = <0x27100>;
};
};
csi@5800000 {
iommus = <0x11 0x01>;
interconnect-names = "dma-mem";
interconnects = <0x05 0x07>;
interrupts = <0x6f 0x04 0x70 0x04 0x74 0x04 0x7a 0x04>;
reg = <0x5800000 0x400000>;
};
phy@5510000 {
clock-names = "bus\0mod";
resets = <0x02 0x32>;
clocks = <0x02 0x6d 0x02 0x6a>;
#phy-cells = <0x00>;
compatible = "allwinner,sun20i-d1-hdmi-phy";
status = "okay";
reg = <0x5510000 0x10000>;
phandle = <0x41>;
reset-names = "phy";
};
adc@2009000 {
resets = <0x02 0x20>;
interrupts = <0x49 0x04>;
clocks = <0x02 0x50>;
dma-names = "rx";
compatible = "allwinner,sun20i-d1-gpadc";
status = "disabled";
reg = <0x2009000 0x400>;
dmas = <0x16 0x0c>;
};
i2c@2502400 {
#address-cells = <0x01>;
resets = <0x02 0x19>;
interrupts = <0x1a 0x04>;
clocks = <0x02 0x45>;
#size-cells = <0x00>;
dma-names = "rx\0tx";
compatible = "allwinner,sun20i-d1-i2c\0allwinner,sun6i-a31-i2c";
status = "disabled";
reg = <0x2502400 0x400>;
dmas = <0x16 0x2c 0x16 0x2c>;
};
i2s@2033000 {
clock-names = "apb\0mod";
resets = <0x02 0x23>;
interrupts = <0x2b 0x04>;
clocks = <0x02 0x57 0x02 0x53>;
dma-names = "rx\0tx";
#sound-dai-cells = <0x00>;
compatible = "allwinner,sun20i-d1-i2s";
status = "disabled";
reg = <0x2033000 0x1000>;
dmas = <0x16 0x04 0x16 0x04>;
};
lcd-controller@5461000 {
clock-output-names = "tcon-pixel-clock";
clock-names = "ahb\0tcon-ch0";
resets = <0x02 0x34 0x02 0x36>;
interrupts = <0x6a 0x04>;
clocks = <0x02 0x71 0x02 0x70>;
#clock-cells = <0x00>;
compatible = "allwinner,sun20i-d1-tcon-lcd";
reg = <0x5461000 0x1000>;
reset-names = "lcd\0lvds";
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@0 {
#address-cells = <0x01>;
#size-cells = <0x00>;
reg = <0x00>;
endpoint@1 {
remote-endpoint = <0x3c>;
reg = <0x01>;
phandle = <0x37>;
};
endpoint@0 {
remote-endpoint = <0x3b>;
reg = <0x00>;
phandle = <0x34>;
};
};
port@1 {
reg = <0x01>;
};
};
};
touchscreen@2009c00 {
clock-names = "bus\0mod";
resets = <0x02 0x3d>;
interrupts = <0x4e 0x04>;
clocks = <0x02 0x80 0x02 0x7f>;
dma-names = "rx";
compatible = "allwinner,sun20i-d1-ts";
status = "disabled";
reg = <0x2009c00 0x400>;
dmas = <0x16 0x0d>;
};
video-codec@5600000 {
reg = <0x5600000 0x4000>;
};
mixer@5200000 {
iommus = <0x11 0x02>;
clock-names = "bus\0mod";
resets = <0x30 0x01>;
clocks = <0x30 0x01 0x30 0x07>;
compatible = "allwinner,sun20i-d1-de2-mixer-1";
reg = <0x5200000 0x100000>;
phandle = <0x07>;
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@1 {
reg = <0x01>;
endpoint {
remote-endpoint = <0x32>;
phandle = <0x36>;
};
};
};
};
ir@7040000 {
clock-names = "apb\0ir";
resets = <0x46 0x03>;
interrupts = <0xa7 0x04>;
clocks = <0x46 0x06 0x46 0x05>;
compatible = "allwinner,sun20i-d1-ir\0allwinner,sun6i-a31-ir";
reg = <0x7040000 0x400>;
};
audio-codec@2030000 {
clock-names = "bus\0adc\0dac\0hosc\0losc";
resets = <0x02 0x27>;
interrupts = <0x29 0x04>;
clocks = <0x02 0x60 0x02 0x5f 0x02 0x5e 0x0f 0x12 0x00>;
allwinner,widgets = "Microphone\0Headset Microphone\0Headphone\0Headphone Jack";
avcc-supply = <0x19>;
allwinner,routing = "Headphone Jack\0HPOUTL\0Headphone Jack\0HPOUTR\0LINEINL\0HPOUTL\0LINEINR\0HPOUTR\0MICIN3\0Headset Microphone\0Headset Microphone\0HBIAS";
dma-names = "rx\0tx";
#sound-dai-cells = <0x00>;
compatible = "allwinner,sun20i-d1-audio-codec";
status = "okay";
reg = <0x2030000 0x1000>;
dmas = <0x16 0x07 0x16 0x07>;
hpvcc-supply = <0x1a>;
vdd33-supply = <0x13>;
regulators {
hpldo {
regulator-max-microvolt = <0x1b7740>;
regulator-min-microvolt = <0x1b7740>;
regulator-name = "hpldo";
phandle = <0x1a>;
hpldoin-supply = <0x13>;
};
aldo {
regulator-max-microvolt = <0x1b7740>;
regulator-min-microvolt = <0x1b7740>;
regulator-name = "aldo";
phandle = <0x19>;
vdd33-supply = <0x13>;
};
};
};
timer@3008000 {
resets = <0x02 0x0b>;
interrupts = <0x47 0x04 0x48 0x04>;
clocks = <0x02 0x2a>;
compatible = "allwinner,sun20i-d1-hstimer\0allwinner,sun50i-h6-hstimer";
reg = <0x3008000 0x1000>;
};
serial@2500800 {
reg-io-width = <0x04>;
fifo-size = <0x100>;
resets = <0x02 0x14>;
interrupts = <0x14 0x04>;
clocks = <0x02 0x40>;
dma-names = "rx\0tx";
compatible = "allwinner,sun20i-d1-uart\0snps,dw-apb-uart";
status = "disabled";
reg = <0x2500800 0x400>;
dmas = <0x16 0x10 0x16 0x10>;
reg-shift = <0x02>;
};
spdif@2036000 {
pinctrl-names = "default";
pinctrl-0 = <0x1e>;
clock-names = "apb\0rx\0tx";
resets = <0x02 0x25>;
interrupts = <0x27 0x04>;
clocks = <0x02 0x5b 0x02 0x5a 0x02 0x59>;
dma-names = "rx\0tx";
#sound-dai-cells = <0x00>;
compatible = "allwinner,sun20i-d1-spdif";
status = "okay";
reg = <0x2036000 0x400>;
dmas = <0x16 0x02 0x16 0x02>;
};
led-controller@2008000 {
pinctrl-names = "default";
#address-cells = <0x01>;
pinctrl-0 = <0x17>;
clock-names = "bus\0mod";
resets = <0x02 0x3b>;
interrupts = <0x24 0x04>;
clocks = <0x02 0x7b 0x02 0x7a>;
#size-cells = <0x00>;
dma-names = "tx";
compatible = "allwinner,sun20i-d1-ledc\0allwinner,sun50i-r329-ledc";
status = "okay";
reg = <0x2008000 0x400>;
dmas = <0x16 0x2a>;
led@0 {
function = "indicator";
color = <0x09>;
reg = <0x00>;
};
};
i2c@2502c00 {
#address-cells = <0x01>;
resets = <0x02 0x1b>;
interrupts = <0x1c 0x04>;
clocks = <0x02 0x47>;
#size-cells = <0x00>;
dma-names = "rx\0tx";
compatible = "allwinner,sun20i-d1-i2c\0allwinner,sun6i-a31-i2c";
status = "disabled";
reg = <0x2502c00 0x400>;
dmas = <0x16 0x2e 0x16 0x2e>;
};
};
usbvbus {
regulator-max-microvolt = <0x4c4b40>;
gpio = <0x22 0x03 0x13 0x00>;
enable-active-high;
regulator-min-microvolt = <0x4c4b40>;
regulator-name = "usbvbus";
compatible = "regulator-fixed";
phandle = <0x2b>;
vin-supply = <0x2c>;
};
binman {
multiple-images;
itb {
filename = "u-boot.itb";
fit {
fit,fdt-list = "of-list";
#address-cells = <0x01>;
description = "Configuration to load OpenSBI before U-Boot";
images {
uboot {
description = "U-Boot";
load = <0x4a000000>;
os = "U-Boot";
type = "standalone";
arch = "riscv";
compression = "none";
blob-ext {
filename = "u-boot-nodtb.bin";
};
};
opensbi {
description = "OpenSBI fw_dynamic Firmware";
load = <0x40000000>;
os = "opensbi";
type = "firmware";
arch = "riscv";
entry = <0x40000000>;
compression = "none";
opensbi {
filename = "fw_dynamic.bin";
};
};
};
configurations {
default = "conf-1";
conf-1 {
description = "NAME";
firmware = "opensbi";
loadables = "uboot";
};
};
};
};
};
aliases {
ethernet0 = "/soc/ethernet@4500000";
spi0 = "/soc/spi@4025000";
mmc1 = "/soc/mmc@4021000";
mmc2 = "/soc/mmc@4022000";
mmc0 = "/soc/mmc@4020000";
serial0 = "/soc/serial@2500000";
};
display-engine {
interconnect-names = "dma-mem";
interconnects = <0x05 0x0b>;
allwinner,pipelines = <0x06 0x07>;
compatible = "allwinner,sun20i-d1-display-engine";
status = "okay";
};
chosen {
linux,initrd-end = <0x42dff011>;
bootargs = "root=UUID=09392a76-5b44-4ed0-b8c1-ea71be0c5a91 console=ttyS0,115200n8 console=tty0 earlycon=sbi cma=96M rootflags=data=writeback rw no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0 bootsplash.bootfile=bootsplash.armbian";
boot-hartid = <0x00>;
linux,initrd-start = <0x41fa3000>;
stdout-path = "serial0:115200n8";
};
vcc-3v3 {
regulator-max-microvolt = <0x325aa0>;
regulator-min-microvolt = <0x325aa0>;
regulator-name = "vcc-3v3";
compatible = "regulator-fixed";
phandle = <0x13>;
vin-supply = <0x2c>;
};
vcc {
regulator-max-microvolt = <0x4c4b40>;
regulator-min-microvolt = <0x4c4b40>;
regulator-name = "vcc";
compatible = "regulator-fixed";
phandle = <0x2c>;
};
pmu {
compatible = "thead,c900-pmu";
};
cpus {
#address-cells = <0x01>;
#size-cells = <0x00>;
timebase-frequency = <0x16e3600>;
cpu@0 {
cpu-supply = <0x04>;
clocks = <0x02 0x84>;
d-cache-block-size = <0x40>;
clock-frequency = <0x16e3600>;
device_type = "cpu";
compatible = "thead,c906\0riscv";
mmu-type = "riscv,sv39";
d-cache-size = <0x8000>;
i-cache-size = <0x8000>;
reg = <0x00>;
phandle = <0x0a>;
d-cache-sets = <0x100>;
i-cache-block-size = <0x40>;
operating-points-v2 = <0x03>;
i-cache-sets = <0x80>;
riscv,isa = "rv64imafdc";
#cooling-cells = <0x02>;
interrupt-controller {
#address-cells = <0x00>;
compatible = "riscv,cpu-intc";
#interrupt-cells = <0x01>;
phandle = <0x47>;
interrupt-controller;
};
};
};
reserved-memory {
#address-cells = <0x01>;
#size-cells = <0x01>;
ranges;
mmode_resv0@40000000 {
reg = <0x40000000 0x40000>;
};
};
osc24M_clk {
clock-output-names = "osc24M";
#clock-cells = <0x00>;
clock-frequency = <0x16e3600>;
compatible = "fixed-clock";
phandle = <0x0f>;
};
memory {
device_type = "memory";
reg = <0x40000000 0x20000000>;
};
};