linuxOS_AP06/u-boot/arch/arm/dts/rk3506.dtsi
2025-06-03 12:28:32 +08:00

1724 lines
46 KiB
Plaintext

// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2023 Rockchip Electronics Co., Ltd.
*/
#include <dt-bindings/clock/rockchip,rk3506-cru.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/pinctrl/rockchip.h>
#include <dt-bindings/soc/rockchip,boot-mode.h>
/ {
#address-cells = <1>;
#size-cells = <1>;
compatible = "rockchip,rk3506";
interrupt-parent = <&gic>;
aliases {
ethernet0 = &gmac0;
ethernet1 = &gmac1;
gpio0 = &gpio0;
gpio1 = &gpio1;
gpio2 = &gpio2;
gpio3 = &gpio3;
gpio4 = &gpio4;
i2c0 = &i2c0;
i2c1 = &i2c1;
i2c2 = &i2c2;
serial0 = &uart0;
serial1 = &uart1;
serial2 = &uart2;
serial3 = &uart3;
serial4 = &uart4;
serial5 = &uart5;
spi0 = &spi0;
spi1 = &spi1;
spi2 = &fspi;
spi3 = &flexbus_fspi;
};
clocks {
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <1>;
ranges;
clk_rc: clk-rc {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <400000>;
clock-output-names = "clk_rc";
};
xin24m: xin24m {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <24000000>;
clock-output-names = "xin24m";
};
xin32k: xin32k {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <32768>;
clock-output-names = "xin32k";
};
mclkin_sai0: mclkin-sai0 {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <0>;
clock-output-names = "sai0_mclk_in";
};
mclkin_sai1: mclkin-sai1 {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <0>;
clock-output-names = "sai1_mclk_in";
};
mclkin_sai2: mclkin-sai2 {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <0>;
clock-output-names = "sai2_mclk_in";
};
mclkin_sai3: mclkin-sai3 {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <0>;
clock-output-names = "sai3_mclk_in";
};
mclkout_sai0: mclkout-sai0@ff910004 {
compatible = "rockchip,clk-out";
reg = <0xff910004 0x4>;
clocks = <&cru MCLK_OUT_SAI0>;
#clock-cells = <0>;
clock-output-names = "mclk_sai0_to_io";
rockchip,bit-shift = <8>;
};
mclkout_sai1: mclkout-sai1@ff910004 {
compatible = "rockchip,clk-out";
reg = <0xff910004 0x4>;
clocks = <&cru MCLK_OUT_SAI1>;
#clock-cells = <0>;
clock-output-names = "mclk_sai1_to_io";
rockchip,bit-shift = <9>;
};
mclkout_sai2: mclkout-sai2@ff288004 {
compatible = "rockchip,clk-out";
reg = <0xff288004 0x4>;
clocks = <&cru MCLK_OUT_SAI2>;
#clock-cells = <0>;
clock-output-names = "mclk_sai2_to_io";
rockchip,bit-shift = <2>;
};
mclkout_sai3: mclkout-sai3@ff288004 {
compatible = "rockchip,clk-out";
reg = <0xff288004 0x4>;
clocks = <&cru MCLK_OUT_SAI3>;
#clock-cells = <0>;
clock-output-names = "mclk_sai3_to_io";
rockchip,bit-shift = <3>;
};
pvtpll_core: pvtpll-core@ff840000 {
compatible = "rockchip,rk3506-core-pvtpll", "syscon";
reg = <0xff840000 0x100>;
#clock-cells = <0>;
clock-output-names = "clk_core_pvtpll";
assigned-clocks = <&pvtpll_core>;
assigned-clock-rates = <1200000000>;
};
};
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu0: cpu@f00 {
device_type = "cpu";
compatible = "arm,cortex-a7";
reg = <0xf00>;
enable-method = "psci";
clocks = <&cru ARMCLK>;
operating-points-v2 = <&cpu0_opp_table>;
};
cpu1: cpu@f01 {
device_type = "cpu";
compatible = "arm,cortex-a7";
reg = <0xf01>;
enable-method = "psci";
clocks = <&cru ARMCLK>;
operating-points-v2 = <&cpu0_opp_table>;
};
cpu2: cpu@f02 {
device_type = "cpu";
compatible = "arm,cortex-a7";
reg = <0xf02>;
enable-method = "psci";
clocks = <&cru ARMCLK>;
operating-points-v2 = <&cpu0_opp_table>;
};
};
cpu0_opp_table: cpu0-opp-table {
compatible = "operating-points-v2";
opp-shared;
nvmem-cells = <&cpu_leakage>;
nvmem-cell-names = "leakage";
rockchip,pvtm-voltage-sel = <
0 1584 0
1585 1619 1
1620 1654 2
1655 1689 3
1690 1724 4
1725 1759 5
1760 1794 6
1795 9999 7
>;
rockchip,pvtm-pvtpll;
rockchip,pvtm-offset = <0x18>;
rockchip,pvtm-sample-time = <500>;
rockchip,pvtm-freq = <1608000>;
rockchip,pvtm-volt = <1000000>;
rockchip,pvtm-ref-temp = <40>;
rockchip,pvtm-temp-prop = <0 0>;
rockchip,pvtm-thermal-zone = "soc-thermal";
rockchip,grf = <&pvtpll_core>;
rockchip,temp-hysteresis = <5000>;
rockchip,low-temp = <10000>;
rockchip,low-temp-min-volt = <900000>;
opp-600000000 {
opp-hz = /bits/ 64 <600000000>;
opp-microvolt = <850000 850000 1000000>;
clock-latency-ns = <40000>;
opp-suspend;
};
opp-800000000 {
opp-hz = /bits/ 64 <800000000>;
opp-microvolt = <850000 850000 1000000>;
clock-latency-ns = <40000>;
};
opp-1008000000 {
opp-hz = /bits/ 64 <1008000000>;
opp-microvolt = <850000 850000 1000000>;
opp-microvolt-L0 = <875000 875000 1000000>;
clock-latency-ns = <40000>;
};
opp-1200000000 {
opp-hz = /bits/ 64 <1200000000>;
opp-microvolt = <850000 850000 1000000>;
opp-microvolt-L0 = <875000 875000 1000000>;
clock-latency-ns = <40000>;
};
opp-1296000000 {
opp-hz = /bits/ 64 <1296000000>;
opp-microvolt = <900000 900000 1000000>;
opp-microvolt-L0 = <900000 900000 1000000>;
opp-microvolt-L1 = <887500 887500 1000000>;
opp-microvolt-L2 = <875000 875000 1000000>;
opp-microvolt-L3 = <862500 862500 1000000>;
opp-microvolt-L4 = <850000 850000 1000000>;
opp-microvolt-L5 = <850000 850000 1000000>;
opp-microvolt-L6 = <850000 850000 1000000>;
opp-microvolt-L7 = <850000 850000 1000000>;
clock-latency-ns = <40000>;
};
opp-1416000000 {
opp-hz = /bits/ 64 <1416000000>;
opp-microvolt = <937500 937500 1000000>;
opp-microvolt-L0 = <937500 937500 1000000>;
opp-microvolt-L1 = <925000 925000 1000000>;
opp-microvolt-L2 = <912500 912500 1000000>;
opp-microvolt-L3 = <900000 900000 1000000>;
opp-microvolt-L4 = <887500 887500 1000000>;
opp-microvolt-L5 = <875000 875000 1000000>;
opp-microvolt-L6 = <862500 862500 1000000>;
opp-microvolt-L7 = <850000 850000 1000000>;
clock-latency-ns = <40000>;
};
opp-1512000000 {
opp-hz = /bits/ 64 <1512000000>;
opp-microvolt = <975000 975000 1000000>;
opp-microvolt-L0 = <975000 975000 1000000>;
opp-microvolt-L1 = <962500 962500 1000000>;
opp-microvolt-L2 = <950000 950000 1000000>;
opp-microvolt-L3 = <937500 937500 1000000>;
opp-microvolt-L4 = <925000 925000 1000000>;
opp-microvolt-L5 = <912500 912000 1000000>;
opp-microvolt-L6 = <900000 900000 1000000>;
opp-microvolt-L7 = <887500 887500 1000000>;
clock-latency-ns = <40000>;
};
};
arm_pmu: arm-pmu {
compatible = "arm,cortex-a7-pmu";
interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>;
};
cpuinfo {
compatible = "rockchip,cpuinfo";
nvmem-cells = <&otp_id>, <&otp_cpu_version>, <&cpu_code>;
nvmem-cell-names = "id", "cpu-version", "cpu-code";
};
display_subsystem: display-subsystem {
compatible = "rockchip,display-subsystem";
ports = <&vop_out>;
status = "disabled";
route {
route_dsi: route-dsi {
status = "disabled";
logo,uboot = "logo.bmp";
logo,kernel = "logo_kernel.bmp";
logo,mode = "center";
charge_logo,mode = "center";
connect = <&vop_out_dsi>;
};
route_rgb: route-rgb {
status = "disabled";
logo,uboot = "logo.bmp";
logo,kernel = "logo_kernel.bmp";
logo,mode = "center";
charge_logo,mode = "center";
connect = <&vop_out_rgb>;
};
};
};
psci: psci {
compatible = "arm,psci-1.0";
method = "smc";
};
rockchip_system_monitor: rockchip-system-monitor {
compatible = "rockchip,system-monitor";
rockchip,thermal-zone = "soc-thermal";
};
thermal_zones: thermal-zones {
soc_thermal: soc-thermal {
polling-delay-passive = <20>; /* milliseconds */
polling-delay = <1000>; /* milliseconds */
thermal-sensors = <&tsadc 0>;
trips {
soc_crit: soc-crit {
/* millicelsius */
temperature = <115000>;
/* millicelsius */
hysteresis = <2000>;
type = "critical";
};
};
};
};
timer {
compatible = "arm,armv7-timer";
interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(3) | IRQ_TYPE_LEVEL_HIGH)>,
<GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(3) | IRQ_TYPE_LEVEL_HIGH)>,
<GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(3) | IRQ_TYPE_LEVEL_HIGH)>,
<GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(3) | IRQ_TYPE_LEVEL_HIGH)>;
clock-frequency = <24000000>;
};
dmac0: dma-controller@ff000000 {
compatible = "arm,pl330", "arm,primecell";
reg = <0xff000000 0x4000>;
interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru ACLK_DMAC0>;
clock-names = "apb_pclk";
#dma-cells = <5>;
arm,pl330-periph-burst;
};
dmac1: dma-controller@ff008000 {
compatible = "arm,pl330", "arm,primecell";
reg = <0xff008000 0x4000>;
interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru ACLK_DMAC1>;
clock-names = "apb_pclk";
#dma-cells = <5>;
arm,pl330-periph-burst;
};
i2c0: i2c@ff040000 {
compatible = "rockchip,rk3506-i2c", "rockchip,rk3399-i2c";
reg = <0xff040000 0x1000>;
interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
clocks = <&cru CLK_I2C0>, <&cru PCLK_I2C0>;
clock-names = "i2c", "pclk";
status = "disabled";
};
i2c1: i2c@ff050000 {
compatible = "rockchip,rk3506-i2c", "rockchip,rk3399-i2c";
reg = <0xff050000 0x1000>;
interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
clocks = <&cru CLK_I2C1>, <&cru PCLK_I2C1>;
clock-names = "i2c", "pclk";
status = "disabled";
};
i2c2: i2c@ff060000 {
compatible = "rockchip,rk3506-i2c", "rockchip,rk3399-i2c";
reg = <0xff060000 0x1000>;
interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
clocks = <&cru CLK_I2C2>, <&cru PCLK_I2C2>;
clock-names = "i2c", "pclk";
status = "disabled";
};
uart0: serial@ff0a0000 {
compatible = "rockchip,rk3506-uart", "snps,dw-apb-uart";
reg = <0xff0a0000 0x100>;
interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
reg-shift = <2>;
reg-io-width = <4>;
dmas = <&dmac0 4 0xff2880a8 0x03000100 0x0 0x0>,
<&dmac0 5 0xff2880a8 0x0c000400 0x0 0x0>;
clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;
clock-names = "baudclk", "apb_pclk";
pinctrl-names = "default";
pinctrl-0 = <&uart0_xfer_pins>;
status = "disabled";
};
uart1: serial@ff0b0000 {
compatible = "rockchip,rk3506-uart", "snps,dw-apb-uart";
reg = <0xff0b0000 0x100>;
interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
reg-shift = <2>;
reg-io-width = <4>;
dmas = <&dmac0 6 0xff2880a8 0x30001000 0x0 0x0>,
<&dmac0 7 0xff2880a8 0xc0004000 0x0 0x0>;
clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
clock-names = "baudclk", "apb_pclk";
status = "disabled";
};
uart2: serial@ff0c0000 {
compatible = "rockchip,rk3506-uart", "snps,dw-apb-uart";
reg = <0xff0c0000 0x100>;
interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
reg-shift = <2>;
reg-io-width = <4>;
dmas = <&dmac0 8 0xff2880ac 0x00030001 0x0 0x0>,
<&dmac0 9 0xff2880ac 0x000c0004 0x0 0x0>;
clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
clock-names = "baudclk", "apb_pclk";
status = "disabled";
};
uart3: serial@ff0d0000 {
compatible = "rockchip,rk3506-uart", "snps,dw-apb-uart";
reg = <0xff0d0000 0x100>;
interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
reg-shift = <2>;
reg-io-width = <4>;
dmas = <&dmac0 10 0xff2880ac 0x00300010 0x0 0x0>,
<&dmac0 11 0xff2880ac 0x00c00040 0x0 0x0>;
clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>;
clock-names = "baudclk", "apb_pclk";
status = "disabled";
};
uart4: serial@ff0e0000 {
compatible = "rockchip,rk3506-uart", "snps,dw-apb-uart";
reg = <0xff0e0000 0x100>;
interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
reg-shift = <2>;
reg-io-width = <4>;
dmas = <&dmac1 12 0x0 0x0 0x0 0x0>, <&dmac1 13 0x0 0x0 0x0 0x0>;
clocks = <&cru SCLK_UART4>, <&cru PCLK_UART4>;
clock-names = "baudclk", "apb_pclk";
status = "disabled";
};
spi0: spi@ff120000 {
compatible = "rockchip,rk3506-spi", "rockchip,rk3066-spi";
reg = <0xff120000 0x1000>;
interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
clocks = <&cru CLK_SPI0>, <&cru PCLK_SPI0>;
clock-names = "spiclk", "apb_pclk";
dmas = <&dmac0 0 0xff2880a8 0x00030001 0x0 0x0>,
<&dmac0 1 0xff2880a8 0x000c0004 0x0 0x0>;
dma-names = "tx", "rx";
num-cs = <2>;
pinctrl-names = "default";
pinctrl-0 = <&spi0_csn0_pins &spi0_csn1_pins &spi0_clk_pins>;
status = "disabled";
};
spi1: spi@ff130000 {
compatible = "rockchip,rk3506-spi", "rockchip,rk3066-spi";
reg = <0xff130000 0x1000>;
interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
clocks = <&cru CLK_SPI1>, <&cru PCLK_SPI1>;
clock-names = "spiclk", "apb_pclk";
dmas = <&dmac0 2 0xff2880a8 0x00300010 0x0 0x0>,
<&dmac0 3 0xff2880a8 0x00c00040 0x0 0x0>;
dma-names = "tx", "rx";
num-cs = <2>;
pinctrl-names = "default";
pinctrl-0 = <&spi1_csn0_pins &spi1_csn1_pins &spi1_clk_pins>;
status = "disabled";
};
pwm1_8ch_0: pwm@ff170000 {
compatible = "rockchip,rk3506-pwm", "rockchip,rk3576-pwm";
reg = <0xff170000 0x200>;
interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>;
clock-names = "pwm", "pclk";
#pwm-cells = <3>;
status = "disabled";
};
pwm1_8ch_1: pwm@ff171000 {
compatible = "rockchip,rk3506-pwm", "rockchip,rk3576-pwm";
reg = <0xff171000 0x200>;
interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>;
clock-names = "pwm", "pclk";
#pwm-cells = <3>;
status = "disabled";
};
pwm1_8ch_2: pwm@ff172000 {
compatible = "rockchip,rk3506-pwm", "rockchip,rk3576-pwm";
reg = <0xff172000 0x200>;
interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>;
clock-names = "pwm", "pclk";
#pwm-cells = <3>;
status = "disabled";
};
pwm1_8ch_3: pwm@ff173000 {
compatible = "rockchip,rk3506-pwm", "rockchip,rk3576-pwm";
reg = <0xff173000 0x200>;
interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>;
clock-names = "pwm", "pclk";
#pwm-cells = <3>;
status = "disabled";
};
pwm1_8ch_4: pwm@ff174000 {
compatible = "rockchip,rk3506-pwm", "rockchip,rk3576-pwm";
reg = <0xff174000 0x200>;
interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>;
clock-names = "pwm", "pclk";
#pwm-cells = <3>;
status = "disabled";
};
pwm1_8ch_5: pwm@ff175000 {
compatible = "rockchip,rk3506-pwm", "rockchip,rk3576-pwm";
reg = <0xff175000 0x200>;
interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>;
clock-names = "pwm", "pclk";
#pwm-cells = <3>;
status = "disabled";
};
pwm1_8ch_6: pwm@ff176000 {
compatible = "rockchip,rk3506-pwm", "rockchip,rk3576-pwm";
reg = <0xff176000 0x200>;
interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>;
clock-names = "pwm", "pclk";
#pwm-cells = <3>;
status = "disabled";
};
pwm1_8ch_7: pwm@ff177000 {
compatible = "rockchip,rk3506-pwm", "rockchip,rk3576-pwm";
reg = <0xff177000 0x200>;
interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>;
clock-names = "pwm", "pclk";
#pwm-cells = <3>;
status = "disabled";
};
hwlock0: hwspinlock@ff240000 {
compatible = "rockchip,hwspinlock";
reg = <0xff240000 0x20>;
#hwlock-cells = <1>;
rockchip,hwlock-num-locks = <8>;
status = "disabled";
};
hwlock1: hwspinlock@ff241000 {
compatible = "rockchip,hwspinlock";
reg = <0xff241000 0x20>;
#hwlock-cells = <1>;
rockchip,hwlock-num-locks = <8>;
status = "disabled";
};
hwlock2: hwspinlock@ff242000 {
compatible = "rockchip,hwspinlock";
reg = <0xff242000 0x20>;
#hwlock-cells = <1>;
rockchip,hwlock-num-locks = <8>;
status = "disabled";
};
hwlock3: hwspinlock@ff243000 {
compatible = "rockchip,hwspinlock";
reg = <0xff243000 0x20>;
#hwlock-cells = <1>;
rockchip,hwlock-num-locks = <8>;
status = "disabled";
};
wdt0: watchdog@ff260000 {
compatible = "snps,dw-wdt";
reg = <0xff260000 0x100>;
clocks = <&cru TCLK_WDT0>, <&cru PCLK_WDT0>;
clock-names = "tclk", "pclk";
interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled";
};
wdt1: watchdog@ff268000 {
compatible = "snps,dw-wdt";
reg = <0xff268000 0x100>;
clocks = <&cru TCLK_WDT1>, <&cru PCLK_WDT1>;
clock-names = "tclk", "pclk";
interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled";
};
grf: syscon@ff288000 {
compatible = "rockchip,rk3506-grf", "syscon", "simple-mfd";
reg = <0xff288000 0x4000>;
rgb: rgb {
compatible = "rockchip,rk3506-rgb";
status = "disabled";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
rgb_in_vop: endpoint@0 {
reg = <0>;
remote-endpoint = <&vop_out_rgb>;
};
};
};
};
};
mailbox0: mailbox@ff290000 {
compatible = "rockchip,rk3506-mailbox", "rockchip,rk3576-mailbox";
reg = <0xff290000 0x20>;
interrupts = <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru PCLK_MAILBOX>;
clock-names = "pclk_mailbox";
#mbox-cells = <1>;
status = "disabled";
};
mailbox1: mailbox@ff291000 {
compatible = "rockchip,rk3506-mailbox", "rockchip,rk3576-mailbox";
reg = <0xff291000 0x20>;
interrupts = <GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru PCLK_MAILBOX>;
clock-names = "pclk_mailbox";
#mbox-cells = <1>;
status = "disabled";
};
mailbox2: mailbox@ff292000 {
compatible = "rockchip,rk3506-mailbox", "rockchip,rk3576-mailbox";
reg = <0xff292000 0x20>;
interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru PCLK_MAILBOX>;
clock-names = "pclk_mailbox";
#mbox-cells = <1>;
status = "disabled";
};
mailbox3: mailbox@ff293000 {
compatible = "rockchip,rk3506-mailbox", "rockchip,rk3576-mailbox";
reg = <0xff293000 0x20>;
interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru PCLK_MAILBOX>;
clock-names = "pclk_mailbox";
#mbox-cells = <1>;
status = "disabled";
};
usb2phy: usb2-phy@ff2b0000 {
compatible = "rockchip,rk3506-usb2phy";
reg = <0xff2b0000 0x8000>;
clocks = <&cru CLK_REF_USBPHY_TOP>, <&cru PCLK_USBPHY>;
clock-names = "phyclk", "apb_pclk";
#clock-cells = <0>;
rockchip,usbgrf = <&grf>;
status = "disabled";
u2phy_otg0: otg-port {
#phy-cells = <0>;
interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "otg-bvalid",
"otg-id",
"linestate";
status = "disabled";
};
u2phy_otg1: host-port {
#phy-cells = <0>;
interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "otg-bvalid",
"otg-id",
"linestate";
status = "disabled";
};
};
sai0: sai@ff300000 {
compatible = "rockchip,rk3506-sai", "rockchip,sai-v1";
reg = <0xff300000 0x1000>;
interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru MCLK_SAI0>, <&cru HCLK_SAI0>;
clock-names = "mclk", "hclk";
dmas = <&dmac1 1 0xff2880a4 0x01000000 0x0 0x0>,
<&dmac1 0 0xff2880a4 0x00800000 0x0 0x0>;
// dmas = <&dmac0 9 0xff2880a4 0x01000100 0xff2880ac 0x000c0000>,
// <&dmac0 8 0xff2880a4 0x00800080 0xff2880ac 0x00030002>;
dma-names = "tx", "rx";
resets = <&cru SRST_M_SAI0>, <&cru SRST_H_SAI0>;
reset-names = "m", "h";
#sound-dai-cells = <0>;
sound-name-prefix = "SAI0";
pinctrl-names = "default";
pinctrl-0 = <&sai0_lrck_pins
&sai0_sclk_pins
&sai0_sdi0_pins
&sai0_sdi1_pins
&sai0_sdi2_pins
&sai0_sdi3_pins
&sai0_sdo_pins>;
status = "disabled";
};
sai1: sai@ff310000 {
compatible = "rockchip,rk3506-sai", "rockchip,sai-v1";
reg = <0xff310000 0x1000>;
interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru MCLK_SAI1>, <&cru HCLK_SAI1>;
clock-names = "mclk", "hclk";
dmas = <&dmac1 3 0xff2880a4 0x04000000 0x0 0x0>,
<&dmac1 2 0xff2880a4 0x02000000 0x0 0x0>;
// dmas = <&dmac0 11 0xff2880a4 0x04000400 0xff2880ac 0x00c00000>,
// <&dmac0 10 0xff2880a4 0x02000200 0xff2880ac 0x00300020>;
dma-names = "tx", "rx";
resets = <&cru SRST_M_SAI1>, <&cru SRST_H_SAI1>;
reset-names = "m", "h";
#sound-dai-cells = <0>;
sound-name-prefix = "SAI1";
pinctrl-names = "default";
pinctrl-0 = <&sai1_lrck_pins
&sai1_sclk_pins
&sai1_sdi_pins
&sai1_sdo0_pins
&sai1_sdo1_pins
&sai1_sdo2_pins
&sai1_sdo3_pins>;
status = "disabled";
};
can0: can@ff320000 {
compatible = "rockchip,rk3506-canfd", "rockchip,rk3576-canfd";
reg = <0xff320000 0x1000>;
interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru CLK_CAN0>, <&cru HCLK_CAN0>;
clock-names = "baudclk", "apb_pclk";
resets = <&cru SRST_CAN0>, <&cru SRST_H_CAN0>;
reset-names = "can", "can-apb";
status = "disabled";
};
can1: can@ff330000 {
compatible = "rockchip,rk3506-canfd", "rockchip,rk3576-canfd";
reg = <0xff330000 0x1000>;
interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru CLK_CAN1>, <&cru HCLK_CAN1>;
clock-names = "baudclk", "apb_pclk";
resets = <&cru SRST_CAN1>, <&cru SRST_H_CAN1>;
reset-names = "can", "can-apb";
status = "disabled";
};
pdm: pdm@ff380000 {
compatible = "rockchip,rk3506-pdm", "rockchip,rk3576-pdm";
reg = <0xff380000 0x1000>;
interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru MCLK_PDM>, <&cru HCLK_PDM>, <&cru CLKOUT_PDM>;
clock-names = "pdm_clk", "pdm_hclk", "pdm_clk_out";
dmas = <&dmac1 9 0xff2880a4 0x00100000 0x0 0x0>;
// dmas = <&dmac0 5 0xff2880a4 0x00100010 0xff2880a8 0x0c000800>;
dma-names = "rx";
pinctrl-names = "default";
pinctrl-0 = <&rm_io0_pdm_clk0
&rm_io0_pdm_clk1
&rm_io0_pdm_sdi0
&rm_io0_pdm_sdi1
&rm_io0_pdm_sdi2
&rm_io0_pdm_sdi3>;
#sound-dai-cells = <0>;
sound-name-prefix = "PDM0";
status = "disabled";
};
spdif_tx: spdif-tx@ff3a0000 {
compatible = "rockchip,rk3506-spdif", "rockchip,rk3066-spdif";
reg = <0xff3a0000 0x1000>;
interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru MCLK_SPDIFTX>, <&cru HCLK_SPDIFTX>;
clock-names = "mclk", "hclk";
dmas = <&dmac1 10 0xff2880a4 0x00200000 0xff2880ac 0x03000100>;
// dmas = <&dmac0 6 0xff2880a4 0x00200020 0xff2880a8 0x30000000>;
dma-names = "tx";
pinctrl-names = "default";
pinctrl-0 = <&rm_io0_spdif_tx>;
#sound-dai-cells = <0>;
status = "disabled";
};
spdif_rx: spdif-rx@ff3b0000 {
compatible = "rockchip,rk3506-spdifrx", "rockchip,rk3308-spdifrx";
reg = <0xff3b0000 0x1000>;
interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru MCLK_SPDIFRX>, <&cru HCLK_SPDIFRX>;
clock-names = "mclk", "hclk";
dmas = <&dmac1 11 0xff2880a4 0x00400000 0xff2880ac 0x0c000400>;
// dmas = <&dmac0 7 0xff2880a4 0x00400040 0xff2880a8 0xc0000000>;
dma-names = "rx";
resets = <&cru SRST_SPDIFRX>;
reset-names = "spdifrx-m";
pinctrl-names = "default";
pinctrl-0 = <&rm_io0_spdif_rx>;
#sound-dai-cells = <0>;
status = "disabled";
};
mmc: mmc@ff480000 {
compatible = "rockchip,rk3506-dw-mshc", "rockchip,rk3288-dw-mshc";
reg = <0xff480000 0x4000>;
interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
max-frequency = <150000000>;
bus-width = <4>;
clocks = <&cru HCLK_SDMMC>, <&cru CCLK_SRC_SDMMC>;
clock-names = "biu", "ciu";
fifo-depth = <0x100>;
resets = <&cru SRST_H_SDMMC>;
reset-names = "reset";
status = "disabled";
};
fspi: spi@ff488000 {
compatible = "rockchip,fspi";
reg = <0xff488000 0x4000>;
interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru SCLK_FSPI>, <&cru HCLK_FSPI>;
clock-names = "clk_sfc", "hclk_sfc";
rockchip,max-dll = <0x17F>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
sai2: sai@ff498000 {
compatible = "rockchip,rk3506-sai", "rockchip,sai-v1";
reg = <0xff498000 0x1000>;
interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru MCLK_SAI2>, <&cru HCLK_SAI2>;
clock-names = "mclk", "hclk";
dmas = <&dmac1 5 0x0 0x0 0x0 0x0>, <&dmac1 4 0x0 0x0 0x0 0x0>;
dma-names = "tx", "rx";
resets = <&cru SRST_M_SAI2>, <&cru SRST_H_SAI2>;
reset-names = "m", "h";
#sound-dai-cells = <0>;
sound-name-prefix = "SAI2";
pinctrl-names = "default";
pinctrl-0 = <&sai2m0_lrck_pins
&sai2m0_sclk_pins
&sai2m0_sdi_pins
&sai2m0_sdo_pins>;
status = "disabled";
};
sai3: sai@ff4a0000 {
compatible = "rockchip,rk3506-sai", "rockchip,sai-v1";
reg = <0xff4a0000 0x1000>;
interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru MCLK_SAI3>, <&cru HCLK_SAI3>;
clock-names = "mclk", "hclk";
dmas = <&dmac1 6 0x0 0x0 0x0 0x0>, <&dmac1 7 0x0 0x0 0x0 0x0>;
dma-names = "tx", "rx";
resets = <&cru SRST_M_SAI3>, <&cru SRST_H_SAI3>;
reset-names = "m", "h";
#sound-dai-cells = <0>;
sound-name-prefix = "SAI3";
pinctrl-names = "default";
pinctrl-0 = <&sai3_lrck_pins
&sai3_sclk_pins
&sai3_sdi_pins
&sai3_sdo_pins>;
status = "disabled";
};
sai4: sai@ff4a8000 {
compatible = "rockchip,rk3506-sai", "rockchip,sai-v1";
reg = <0xff4a8000 0x1000>;
interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru MCLK_SAI4>, <&cru HCLK_SAI4>;
clock-names = "mclk", "hclk";
dmas = <&dmac1 8 0x0 0x0 0x0 0x0>;
dma-names = "rx";
resets = <&cru SRST_M_SAI4>, <&cru SRST_H_SAI4>;
reset-names = "m", "h";
#sound-dai-cells = <0>;
sound-name-prefix = "SAI4";
status = "disabled";
};
acdcdig_dsm: acdcdig-dsm@ff4b0000 {
compatible = "rockchip,rk3506-dsm";
reg = <0xff4b0000 0x1000>;
clocks = <&cru MCLK_DSM>, <&cru HCLK_DSM>;
clock-names = "dac", "pclk";
resets = <&cru SRST_M_DSM>;
reset-names = "reset" ;
rockchip,grf = <&grf>;
pinctrl-names = "default";
pinctrl-0 = <&dsm_audm0_ln_pins
&dsm_audm0_lp_pins
&dsm_audm0_rn_pins
&dsm_audm0_rp_pins>;
#sound-dai-cells = <0>;
status = "disabled";
};
gmac0: ethernet@ff4c8000 {
compatible = "rockchip,rk3506-gmac", "snps,dwmac-4.20a";
reg = <0xff4c8000 0x2000>;
interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "macirq", "eth_wake_irq";
rockchip,grf = <&grf>;
clocks = <&cru CLK_MAC0>, <&cru CLK_MAC0_PTP>,
<&cru PCLK_MAC0>, <&cru ACLK_MAC0>;
clock-names = "stmmaceth", "ptp_ref",
"pclk_mac", "aclk_mac";
resets = <&cru SRST_A_MAC0>;
reset-names = "stmmaceth";
snps,mixed-burst;
snps,tso;
snps,axi-config = <&gmac0_stmmac_axi_setup>;
snps,mtl-rx-config = <&gmac0_mtl_rx_setup>;
snps,mtl-tx-config = <&gmac0_mtl_tx_setup>;
phy-mode = "rmii";
status = "disabled";
mdio0: mdio {
compatible = "snps,dwmac-mdio";
#address-cells = <0x1>;
#size-cells = <0x0>;
};
gmac0_stmmac_axi_setup: stmmac-axi-config {
snps,wr_osr_lmt = <4>;
snps,rd_osr_lmt = <8>;
snps,blen = <0 0 0 0 16 8 4>;
};
gmac0_mtl_rx_setup: rx-queues-config {
snps,rx-queues-to-use = <1>;
queue0 {
status = "okay";
};
};
gmac0_mtl_tx_setup: tx-queues-config {
snps,tx-queues-to-use = <1>;
queue0 {
status = "okay";
};
};
};
gmac1: ethernet@ff4d0000 {
compatible = "rockchip,rk3506-gmac", "snps,dwmac-4.20a";
reg = <0xff4d0000 0x2000>;
interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "macirq", "eth_wake_irq";
rockchip,grf = <&grf>;
clocks = <&cru CLK_MAC1>, <&cru CLK_MAC1_PTP>,
<&cru PCLK_MAC1>, <&cru ACLK_MAC1>;
clock-names = "stmmaceth", "ptp_ref",
"pclk_mac", "aclk_mac";
resets = <&cru SRST_A_MAC1>;
reset-names = "stmmaceth";
snps,mixed-burst;
snps,tso;
snps,axi-config = <&gmac1_stmmac_axi_setup>;
snps,mtl-rx-config = <&gmac1_mtl_rx_setup>;
snps,mtl-tx-config = <&gmac1_mtl_tx_setup>;
phy-mode = "rmii";
status = "disabled";
mdio1: mdio {
compatible = "snps,dwmac-mdio";
#address-cells = <0x1>;
#size-cells = <0x0>;
};
gmac1_stmmac_axi_setup: stmmac-axi-config {
snps,wr_osr_lmt = <4>;
snps,rd_osr_lmt = <8>;
snps,blen = <0 0 0 0 16 8 4>;
};
gmac1_mtl_rx_setup: rx-queues-config {
snps,rx-queues-to-use = <1>;
queue0 {
status = "okay";
};
};
gmac1_mtl_tx_setup: tx-queues-config {
snps,tx-queues-to-use = <1>;
queue0 {
status = "okay";
};
};
};
ioc_grf: syscon@ff4d8000 {
compatible = "rockchip,rk3506-ioc-grf", "syscon";
reg = <0xff4d8000 0x8000>;
};
uart5: serial@ff4e0000 {
compatible = "rockchip,rk3506-uart", "snps,dw-apb-uart";
reg = <0xff4e0000 0x100>;
interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
reg-shift = <2>;
reg-io-width = <4>;
dmas = <&dmac1 14 0x0 0x0 0x0 0x0>, <&dmac1 15 0x0 0x0 0x0 0x0>;
clocks = <&cru SCLK_UART5>, <&cru PCLK_UART5>;
clock-names = "baudclk", "apb_pclk";
pinctrl-names = "default";
pinctrl-0 = <&uart5m0_xfer_pins &uart5m0_ctsn_pins &uart5m0_rtsn_pins>;
status = "disabled";
};
saradc: adc@ff4e8000 {
compatible = "rockchip,rk3506-saradc", "rockchip,rk3562-saradc";
reg = <0xff4e8000 0x8000>;
interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
#io-channel-cells = <1>;
clocks = <&cru CLK_SARADC>, <&cru PCLK_SARADC>;
clock-names = "saradc", "apb_pclk";
resets = <&cru SRST_P_SARADC>;
reset-names = "saradc-apb";
status = "disabled";
};
otp: otp@ff4f0000 {
compatible = "rockchip,rk3506-otp";
reg = <0xff4f0000 0x4000>;
#address-cells = <1>;
#size-cells = <1>;
clocks = <&cru CLK_USER_OTPC_NS>, <&cru CLK_SBPI_OTPC_NS>,
<&cru PCLK_OTPC_NS>;
clock-names = "usr", "sbpi", "apb";
resets = <&cru SRST_USER_OTPC_NS>, <&cru SRST_SBPI_OTPC_NS>,
<&cru SRST_P_OTPC_NS>;
reset-names = "usr", "sbpi", "apb";
/* Data cells */
cpu_code: cpu-code@2 {
reg = <0x02 0x2>;
};
otp_cpu_version: cpu-version@5 {
reg = <0x05 0x1>;
bits = <3 3>;
};
otp_id: id@a {
reg = <0x0a 0x10>;
};
cpu_leakage: cpu-leakage@1e {
reg = <0x1e 0x1>;
};
log_leakage: log-leakage@1f {
reg = <0x1f 0x1>;
};
};
audio_codec: audio-codec@ff4f8000 {
compatible = "rockchip,rk3506-codec";
reg = <0xff4f8000 0x1000>;
#sound-dai-cells = <0>;
clocks = <&cru PCLK_AUDIO_ADC>, <&cru MCLK_AUDIO_ADC>;
clock-names = "pclk", "mclk";
resets = <&cru SRST_M_AUDIO_ADC>;
reset-names = "rst";
status = "disabled";
};
gic: interrupt-controller@ff581000 {
compatible = "arm,gic-400";
reg = <0xff581000 0x1000>,
<0xff582000 0x2000>,
<0xff584000 0x2000>,
<0xff586000 0x2000>;
interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
#interrupt-cells = <3>;
interrupt-controller;
#address-cells = <0>;
};
vop: vop@ff600000 {
compatible = "rockchip,rk3506-vop";
reg = <0xff600000 0x200>, <0xff600a00 0x400>;
reg-names = "regs", "gamma_lut";
rockchip,grf = <&grf>;
interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru ACLK_VOP>, <&cru DCLK_VOP>, <&cru HCLK_VOP>;
clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
status = "disabled";
vop_out: port {
#address-cells = <1>;
#size-cells = <0>;
vop_out_rgb: endpoint@0 {
reg = <0>;
remote-endpoint = <&rgb_in_vop>;
};
vop_out_dsi: endpoint@1 {
reg = <1>;
remote-endpoint = <&dsi_in_vop>;
};
};
};
rga2: rga@ff610000 {
compatible = "rockchip,rga2";
reg = <0xff610000 0x1000>;
interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "rga2_irq";
clocks = <&cru ACLK_RGA>, <&cru HCLK_RGA>, <&cru CLK_CORE_RGA>;
clock-names = "aclk_rga", "hclk_rga", "clk_rga";
status = "disabled";
};
dsi: dsi@ff640000 {
compatible = "rockchip,rk3506-mipi-dsi";
reg = <0xff640000 0x10000>;
interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru PCLK_DSI_HOST>;
clock-names = "pclk";
resets = <&cru SRST_P_DSI_HOST>;
reset-names = "apb";
phys = <&dsi_dphy>;
phy-names = "dphy";
rockchip,grf = <&grf>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
ports {
#address-cells = <1>;
#size-cells = <0>;
dsi_in: port@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
dsi_in_vop: endpoint@0 {
reg = <0>;
remote-endpoint = <&vop_out_dsi>;
status = "disabled";
};
};
};
};
tsadc: tsadc@ff650000 {
compatible = "rockchip,rk3506-tsadc";
reg = <0xff650000 0x400>;
interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru CLK_TSADC>, <&cru PCLK_TSADC>, <&cru CLK_TSADC_TSEN>;
clock-names = "tsadc", "apb_pclk", "tsen";
assigned-clocks = <&cru CLK_TSADC>, <&cru CLK_TSADC_TSEN>;
assigned-clock-rates = <1000000>, <12000000>;
resets = <&cru SRST_TSADC>, <&cru SRST_P_TSADC>;
reset-names = "tsadc", "tsadc-apb";
#thermal-sensor-cells = <1>;
rockchip,grf = <&grf>;
rockchip,hw-tshut-temp = <120000>;
rockchip,hw-tshut-mode = <0>; /* tshut mode 0:CRU 1:GPIO */
rockchip,hw-tshut-polarity = <0>; /* tshut polarity 0:LOW 1:HIGH */
status = "disabled";
};
ioc1: syscon@ff660000 {
compatible = "rockchip,rk3506-ioc1", "syscon";
reg = <0xff660000 0x10000>;
};
dsi_dphy: phy@ff670000 {
compatible = "rockchip,rk3506-dsi-dphy";
reg = <0xff670000 0x10000>,
<0xff640000 0x10000>;
reg-names = "phy", "host";
clocks = <&cru CLK_REF_DPHY_TOP>,
<&cru PCLK_DPHY>, <&cru PCLK_DSI_HOST>;
clock-names = "ref", "pclk", "pclk_host";
#clock-cells = <0>;
resets = <&cru SRST_P_DPHY>;
reset-names = "apb";
#phy-cells = <0>;
status = "disabled";
};
crypto: crypto@ff700000 {
compatible = "rockchip,crypto-v4";
reg = <0xff700000 0x2000>;
interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru ACLK_CRYPTO_NS>, <&cru HCLK_CRYPTO_NS>,
<&cru CLK_CORE_CRYPTO_NS>, <&cru CLK_PKA_CRYPTO_NS>;
clock-names = "aclk", "hclk", "core", "pka";
resets = <&cru SRST_H_CRYPTO>;
reset-names = "crypto-rst";
status = "disabled";
};
rng: rng@ff710000 {
compatible = "rockchip,rkrng";
reg = <0xff710000 0x200>;
interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru HCLK_RNG>;
clock-names = "hclk_trng";
resets = <&cru SRST_H_RNG>;
reset-names = "reset";
status = "disabled";
};
usb20_otg0: usb@ff740000 {
compatible = "rockchip,rk3506-usb", "rockchip,rk3066-usb",
"snps,dwc2";
reg = <0xff740000 0x40000>;
interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru HCLK_USBOTG0>, <&cru HCLK_USBOTG0_PMU>,
<&cru CLK_USBOTG0_ADP>;
clock-names = "otg", "pmu", "adp";
dr_mode = "otg";
phys = <&u2phy_otg0>;
phy-names = "usb2-phy";
g-np-tx-fifo-size = <16>;
g-rx-fifo-size = <280>;
g-tx-fifo-size = <256 128 128 64 32 16>;
status = "disabled";
};
usb20_otg1: usb@ff780000 {
compatible = "rockchip,rk3506-usb", "rockchip,rk3066-usb",
"snps,dwc2";
reg = <0xff780000 0x40000>;
interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru HCLK_USBOTG1>, <&cru HCLK_USBOTG1_PMU>,
<&cru CLK_USBOTG1_ADP>;
clock-names = "otg", "pmu", "adp";
dr_mode = "otg";
phys = <&u2phy_otg1>;
phy-names = "usb2-phy";
g-np-tx-fifo-size = <16>;
g-rx-fifo-size = <280>;
g-tx-fifo-size = <256 128 128 64 32 16>;
status = "disabled";
};
arm-debug@ff810000 {
compatible = "rockchip,debug";
reg = <0xff810000 0x1000>,
<0xff812000 0x1000>,
<0xff814000 0x1000>;
};
flexbus: flexbus@ff880000 {
compatible = "rockchip,rk3506-flexbus";
reg = <0xff880000 0x200>;
interrupts = <GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru CLK_FLEXBUS_TX>, <&cru CLK_FLEXBUS_RX>,
<&cru ACLK_FLEXBUS>, <&cru HCLK_FLEXBUS>;
clock-names = "tx_clk_flexbus", "rx_clk_flexbus",
"aclk_flexbus", "hclk_flexbus";
rockchip,grf = <&grf>;
status = "disabled";
flexbus_adc: adc {
compatible = "rockchip,flexbus-adc";
#io-channel-cells = <0>;
rockchip,slave-mode;
rockchip,free-sclk;
rockchip,auto-pad;
rockchip,dfs = <16>;
status = "disabled";
};
flexbus_cif: cif {
compatible = "rockchip,flexbus-cif-rk3506";
status = "disabled";
};
flexbus_dac: dac {
compatible = "rockchip,flexbus-dac";
#io-channel-cells = <0>;
rockchip,free-sclk;
rockchip,dfs = <16>;
status = "disabled";
};
flexbus_fspi: fspi {
compatible = "rockchip,flexbus-fspi";
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
};
dsmc_lb_slave: dsmc-lb-slave@ff880000 {
compatible = "rockchip,rk3506-dsmc-lb-slave";
reg = <0xff880000 0x10000>;
#address-cells = <1>;
#size-cells = <1>;
rockchip,grf = <&grf>;
interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
resets = <&cru SRST_DSMC_SLV>, <&cru SRST_A_DSMC_SLV>,
<&cru SRST_H_DSMC_SLV>;
reset-names = "dsmc_slv", "a_dsmc_slv", "h_dsmc_slv";
clocks = <&cru ACLK_DSMC_SLV>,
<&cru HCLK_DSMC_SLV>;
clock-names = "aclk_dsmc_slv", "hclk_dsmc_slv";
status = "disabled";
};
dsmc: dsmc@ff8b0000 {
compatible = "rockchip,rk3506-dsmc";
reg = <0xff8b0000 0x10000>;
#address-cells = <1>;
#size-cells = <1>;
rockchip,grf = <&ioc_grf>;
interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
resets = <&cru SRST_A_DSMC>, <&cru SRST_P_DSMC>;
reset-names = "dsmc", "apb";
clocks = <&cru CLK_DSMC>,
<&cru ACLK_DSMC>,
<&cru PCLK_DSMC>,
<&cru CLK_DSMC>;
clock-names = "clk_sys", "aclk_dsmc", "pclk", "aclk_root";
clock-frequency = <100000000>;
dmas = <&dmac0 2 0xff288078 0x80000000 0xff2880a8 0x00300000>,
<&dmac0 3 0xff288078 0x40000000 0xff2880a8 0x00c00000>;
// dmas = <&dmac0 8 0xff288078 0x80008000 0xff2880ac 0x00030000>,
// <&dmac0 10 0xff288078 0x40004000 0xff2880ac 0x00300000>;
dma-names = "req0", "req1";
status = "disabled";
slave {
rockchip,dqs-dll = <0x40 0x40
0x40 0x40
0x40 0x40
0x40 0x40>;
rockchip,ranges = <0x0 0xc0000000 0x0 0x2000000>;
rockchip,slave-dev = <&dsmc_slave>;
};
};
dsmc_slave: dsmc-slave {
compatible = "rockchip,dsmc-slave";
rockchip,clk-mode = <0>;
status = "disabled";
psram {
dsmc_psram0: psram0 {
status = "disabled";
};
dsmc_psram1: psram1 {
status = "disabled";
};
dsmc_psram2: psram2 {
status = "disabled";
};
dsmc_psram3: psram3 {
status = "disabled";
};
};
lb-slave {
dsmc_lb_slave0: lb-slave0 {
status = "disabled";
dsmc_p0_region: region {
dsmc_p0_region0: region0 {
rockchip,attribute = "Merged FIFO";
rockchip,ca-addr-width = <0>;
rockchip,dummy-clk-num = <1>;
rockchip,cs0-be-ctrled = <0>;
rockchip,cs0-ctrl = <0>;
status = "disabled";
};
dsmc_p0_region1: region1 {
rockchip,attribute = "No-Merge FIFO";
rockchip,ca-addr-width = <0>;
rockchip,dummy-clk-num = <1>;
rockchip,cs0-be-ctrled = <0>;
rockchip,cs0-ctrl = <0>;
status = "disabled";
};
dsmc_p0_region2: region2 {
rockchip,attribute = "DPRA";
rockchip,ca-addr-width = <0>;
rockchip,dummy-clk-num = <1>;
rockchip,cs0-be-ctrled = <0>;
rockchip,cs0-ctrl = <0>;
status = "disabled";
};
dsmc_p0_region3: region3 {
rockchip,attribute = "Register";
rockchip,ca-addr-width = <0>;
rockchip,dummy-clk-num = <1>;
rockchip,cs0-be-ctrled = <0>;
rockchip,cs0-ctrl = <0>;
status = "disabled";
};
};
};
dsmc_lb_slave1: lb-slave1 {
status = "disabled";
dsmc_p1_region: region {
dsmc_p1_region0: region0 {
rockchip,attribute = "Merged FIFO";
rockchip,ca-addr-width = <0>;
rockchip,dummy-clk-num = <1>;
rockchip,cs0-be-ctrled = <0>;
rockchip,cs0-ctrl = <0>;
status = "disabled";
};
dsmc_p1_region1: region1 {
rockchip,attribute = "No-Merge FIFO";
rockchip,ca-addr-width = <0>;
rockchip,dummy-clk-num = <1>;
rockchip,cs0-be-ctrled = <0>;
rockchip,cs0-ctrl = <0>;
status = "disabled";
};
dsmc_p1_region2: region2 {
rockchip,attribute = "DPRA";
rockchip,ca-addr-width = <0>;
rockchip,dummy-clk-num = <1>;
rockchip,cs0-be-ctrled = <0>;
rockchip,cs0-ctrl = <0>;
status = "disabled";
};
dsmc_p1_region3: region3 {
rockchip,attribute = "Register";
rockchip,ca-addr-width = <0>;
rockchip,dummy-clk-num = <1>;
rockchip,cs0-be-ctrled = <0>;
rockchip,cs0-ctrl = <0>;
status = "disabled";
};
};
};
dsmc_lb_slave2: lb-slave2 {
status = "disabled";
dsmc_p2_region: region {
dsmc_p2_region0: region0 {
rockchip,attribute = "Merged FIFO";
rockchip,ca-addr-width = <0>;
rockchip,dummy-clk-num = <1>;
rockchip,cs0-be-ctrled = <0>;
rockchip,cs0-ctrl = <0>;
status = "disabled";
};
dsmc_p2_region1: region1 {
rockchip,attribute = "No-Merge FIFO";
rockchip,ca-addr-width = <0>;
rockchip,dummy-clk-num = <1>;
rockchip,cs0-be-ctrled = <0>;
rockchip,cs0-ctrl = <0>;
status = "disabled";
};
dsmc_p2_region2: region2 {
rockchip,attribute = "DPRA";
rockchip,ca-addr-width = <0>;
rockchip,dummy-clk-num = <1>;
rockchip,cs0-be-ctrled = <0>;
rockchip,cs0-ctrl = <0>;
status = "disabled";
};
dsmc_p2_region3: region3 {
rockchip,attribute = "Register";
rockchip,ca-addr-width = <0>;
rockchip,dummy-clk-num = <1>;
rockchip,cs0-be-ctrled = <0>;
rockchip,cs0-ctrl = <0>;
status = "disabled";
};
};
};
dsmc_lb_slave3: lb-slave3 {
status = "disabled";
dsmc_p3_region: region {
dsmc_p3_region0: region0 {
rockchip,attribute = "Merged FIFO";
rockchip,ca-addr-width = <0>;
rockchip,dummy-clk-num = <1>;
rockchip,cs0-be-ctrled = <0>;
rockchip,cs0-ctrl = <0>;
status = "disabled";
};
dsmc_p3_region1: region1 {
rockchip,attribute = "No-Merge FIFO";
rockchip,ca-addr-width = <0>;
rockchip,dummy-clk-num = <1>;
rockchip,cs0-be-ctrled = <0>;
rockchip,cs0-ctrl = <0>;
status = "disabled";
};
dsmc_p3_region2: region2 {
rockchip,attribute = "DPRA";
rockchip,ca-addr-width = <0>;
rockchip,dummy-clk-num = <1>;
rockchip,cs0-be-ctrled = <0>;
rockchip,cs0-ctrl = <0>;
status = "disabled";
};
dsmc_p3_region3: region3 {
rockchip,attribute = "Register";
rockchip,ca-addr-width = <0>;
rockchip,dummy-clk-num = <1>;
rockchip,cs0-be-ctrled = <0>;
rockchip,cs0-ctrl = <0>;
status = "disabled";
};
};
};
};
};
grf_pmu: syscon@ff910000 {
compatible = "rockchip,rk3506-grf-pmu", "syscon", "simple-mfd";
reg = <0xff910000 0x4000>;
reboot_mode: reboot-mode {
compatible = "syscon-reboot-mode";
offset = <0x200>;
mode-bootloader = <BOOT_BL_DOWNLOAD>;
mode-charge = <BOOT_CHARGING>;
mode-fastboot = <BOOT_FASTBOOT>;
mode-loader = <BOOT_BL_DOWNLOAD>;
mode-normal = <BOOT_NORMAL>;
mode-recovery = <BOOT_RECOVERY>;
mode-ums = <BOOT_UMS>;
mode-panic = <BOOT_PANIC>;
mode-watchdog = <BOOT_WATCHDOG>;
};
};
pwm0_4ch_0: pwm@ff930000 {
compatible = "rockchip,rk3506-pwm", "rockchip,rk3576-pwm";
reg = <0xff930000 0x200>;
interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru CLK_PWM0>, <&cru PCLK_PWM0>;
clock-names = "pwm", "pclk";
#pwm-cells = <3>;
status = "disabled";
};
pwm0_4ch_1: pwm@ff931000 {
compatible = "rockchip,rk3506-pwm", "rockchip,rk3576-pwm";
reg = <0xff931000 0x200>;
interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru CLK_PWM0>, <&cru PCLK_PWM0>;
clock-names = "pwm", "pclk";
#pwm-cells = <3>;
status = "disabled";
};
pwm0_4ch_2: pwm@ff932000 {
compatible = "rockchip,rk3506-pwm", "rockchip,rk3576-pwm";
reg = <0xff932000 0x200>;
interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru CLK_PWM0>, <&cru PCLK_PWM0>;
clock-names = "pwm", "pclk";
#pwm-cells = <3>;
status = "disabled";
};
pwm0_4ch_3: pwm@ff933000 {
compatible = "rockchip,rk3506-pwm", "rockchip,rk3576-pwm";
reg = <0xff933000 0x200>;
interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru CLK_PWM0>, <&cru PCLK_PWM0>;
clock-names = "pwm", "pclk";
#pwm-cells = <3>;
status = "disabled";
};
ioc_pmu: syscon@ff950000 {
compatible = "rockchip,rk3506-ioc-pmu", "syscon";
reg = <0xff950000 0x10000>;
};
cru: clock-controller@ff9a0000 {
compatible = "rockchip,rk3506-cru";
reg = <0xff9a0000 0x20000>;
rockchip,grf = <&grf>;
#clock-cells = <1>;
#reset-cells = <1>;
};
pinctrl: pinctrl {
compatible = "rockchip,rk3506-pinctrl";
rockchip,grf = <&ioc_grf>;
rockchip,ioc1 = <&ioc1>;
rockchip,pmu = <&ioc_pmu>;
rockchip,rmio = <&grf_pmu>;
#address-cells = <1>;
#size-cells = <1>;
ranges;
gpio0: gpio@ff940000 {
compatible = "rockchip,gpio-bank";
reg = <0xff940000 0x200>;
interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru PCLK_GPIO0>, <&cru DBCLK_GPIO0>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = <&pinctrl 0 0 32>;
interrupt-controller;
#interrupt-cells = <2>;
};
gpio1: gpio@ff870000 {
compatible = "rockchip,gpio-bank";
reg = <0xff870000 0x200>;
interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru PCLK_GPIO1>, <&cru DBCLK_GPIO1>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = <&pinctrl 0 32 32>;
interrupt-controller;
#interrupt-cells = <2>;
};
gpio2: gpio@ff1c0000 {
compatible = "rockchip,gpio-bank";
reg = <0xff1c0000 0x200>;
interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru PCLK_GPIO2>, <&cru DBCLK_GPIO2>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = <&pinctrl 0 64 32>;
interrupt-controller;
#interrupt-cells = <2>;
};
gpio3: gpio@ff1d0000 {
compatible = "rockchip,gpio-bank";
reg = <0xff1d0000 0x200>;
interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru PCLK_GPIO3>, <&cru DBCLK_GPIO3>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = <&pinctrl 0 96 32>;
interrupt-controller;
#interrupt-cells = <2>;
};
gpio4: gpio@ff1e0000 {
compatible = "rockchip,gpio-bank";
reg = <0xff1e0000 0x200>;
interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru PCLK_GPIO4>, <&cru DBCLK_GPIO4>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = <&pinctrl 0 128 32>;
interrupt-controller;
#interrupt-cells = <2>;
};
};
};
#include "rk3506-pinctrl.dtsi"
#include "rk3506-pinctrl-rmio.dtsi"