diff options
| author | Tom Rini <trini@konsulko.com> | 2022-10-20 22:32:38 -0400 | 
|---|---|---|
| committer | Tom Rini <trini@konsulko.com> | 2022-10-20 22:32:38 -0400 | 
| commit | 145a996592669d2f763a1157aa5342e00a659d28 (patch) | |
| tree | 05b9912b6374b5e3b05624b8ec84cb00d9a5861c /arch | |
| parent | d843273a8022e70ccbdb6ad446b3335c3753e84f (diff) | |
| parent | 85a8ef1264fca77827f7702594272d17c7c39ce1 (diff) | |
Merge tag 'u-boot-rockchip-20221020' of https://source.denx.de/u-boot/custodians/u-boot-rockchip
- dts update and sync for rk356x, rk3288, rk3399 from Linux;
- Add rk3399 EAIDK-610 board support;
- Update for puma-rk3399 board;
- some fix and typo fix in different drivers;
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/arm/dts/Makefile | 1 | ||||
| -rw-r--r-- | arch/arm/dts/rk3288-thermal.dtsi | 87 | ||||
| -rw-r--r-- | arch/arm/dts/rk3288-veyron-jerry.dts | 6 | ||||
| -rw-r--r-- | arch/arm/dts/rk3288-veyron.dtsi | 4 | ||||
| -rw-r--r-- | arch/arm/dts/rk3288.dtsi | 570 | ||||
| -rw-r--r-- | arch/arm/dts/rk3399-eaidk-610-u-boot.dtsi | 18 | ||||
| -rw-r--r-- | arch/arm/dts/rk3399-eaidk-610.dts | 939 | ||||
| -rw-r--r-- | arch/arm/dts/rk3399-puma-haikou-u-boot.dtsi | 75 | ||||
| -rw-r--r-- | arch/arm/dts/rk3566.dtsi | 35 | ||||
| -rw-r--r-- | arch/arm/dts/rk3568-evb-u-boot.dtsi | 2 | ||||
| -rw-r--r-- | arch/arm/dts/rk3568-pinctrl.dtsi | 9 | ||||
| -rw-r--r-- | arch/arm/dts/rk3568.dtsi | 848 | ||||
| -rw-r--r-- | arch/arm/dts/rk356x-u-boot.dtsi (renamed from arch/arm/dts/rk3568-u-boot.dtsi) | 7 | ||||
| -rw-r--r-- | arch/arm/dts/rk356x.dtsi | 1706 | ||||
| -rw-r--r-- | arch/arm/include/asm/arch-rockchip/cru_px30.h | 19 | ||||
| -rw-r--r-- | arch/arm/mach-rockchip/px30/px30.c | 37 | ||||
| -rw-r--r-- | arch/arm/mach-rockchip/rk3288/Kconfig | 1 | ||||
| -rw-r--r-- | arch/arm/mach-rockchip/rk3399/rk3399.c | 67 | 
18 files changed, 3442 insertions, 989 deletions
| diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile index 162d108781d..eeb0839afe3 100644 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile @@ -136,6 +136,7 @@ dtb-$(CONFIG_ROCKCHIP_RK3368) += \  dtb-$(CONFIG_ROCKCHIP_RK3399) += \  	rk3399-evb.dtb \ +	rk3399-eaidk-610.dtb \  	rk3399-ficus.dtb \  	rk3399-firefly.dtb \  	rk3399-gru-bob.dtb \ diff --git a/arch/arm/dts/rk3288-thermal.dtsi b/arch/arm/dts/rk3288-thermal.dtsi deleted file mode 100644 index 87dd8142d91..00000000000 --- a/arch/arm/dts/rk3288-thermal.dtsi +++ /dev/null @@ -1,87 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Device Tree Source for RK3288 SoC thermal - * - * Copyright (c) 2014, Fuzhou Rockchip Electronics Co., Ltd - */ - -#include <dt-bindings/thermal/thermal.h> - -reserve_thermal: reserve_thermal { -	polling-delay-passive = <1000>; /* milliseconds */ -	polling-delay = <5000>; /* milliseconds */ - -			/* sensor	ID */ -	thermal-sensors = <&tsadc	0>; - -}; - -cpu_thermal: cpu_thermal { -	polling-delay-passive = <100>; /* milliseconds */ -	polling-delay = <5000>; /* milliseconds */ - -			/* sensor	ID */ -	thermal-sensors = <&tsadc	1>; -	linux,hwmon; - -	trips { -		cpu_alert0: cpu_alert0 { -			temperature = <70000>; /* millicelsius */ -			hysteresis = <2000>; /* millicelsius */ -			type = "passive"; -		}; -		cpu_alert1: cpu_alert1 { -			temperature = <75000>; /* millicelsius */ -			hysteresis = <2000>; /* millicelsius */ -			type = "passive"; -		}; -		cpu_crit: cpu_crit { -			temperature = <100000>; /* millicelsius */ -			hysteresis = <2000>; /* millicelsius */ -			type = "critical"; -		}; -	}; - -	cooling-maps { -		map0 { -			trip = <&cpu_alert0>; -			cooling-device = -				<&cpu0 THERMAL_NO_LIMIT 6>; -		}; -		map1 { -			trip = <&cpu_alert1>; -			cooling-device = -				<&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; -		}; -	}; -}; - -gpu_thermal: gpu_thermal { -	polling-delay-passive = <100>; /* milliseconds */ -	polling-delay = <5000>; /* milliseconds */ - -			/* sensor	ID */ -	thermal-sensors = <&tsadc	2>; -	linux,hwmon; - -	trips { -		gpu_alert0: gpu_alert0 { -			temperature = <80000>; /* millicelsius */ -			hysteresis = <2000>; /* millicelsius */ -			type = "passive"; -		}; -		gpu_crit: gpu_crit { -			temperature = <100000>; /* millicelsius */ -			hysteresis = <2000>; /* millicelsius */ -			type = "critical"; -		}; -	}; - -	cooling-maps { -		map0 { -			trip = <&gpu_alert0>; -			cooling-device = -				<&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; -		}; -	}; -}; diff --git a/arch/arm/dts/rk3288-veyron-jerry.dts b/arch/arm/dts/rk3288-veyron-jerry.dts index ff7669eba4d..40fee55c750 100644 --- a/arch/arm/dts/rk3288-veyron-jerry.dts +++ b/arch/arm/dts/rk3288-veyron-jerry.dts @@ -137,12 +137,6 @@  		};  	}; -	edp { -		edp_hpd: edp_hpd { -			rockchip,pins = <7 11 RK_FUNC_2 &pcfg_pull_down>; -		}; -	}; -  	emmc {  		/* Make sure eMMC is not in reset */  		emmc_deassert_reset: emmc-deassert-reset { diff --git a/arch/arm/dts/rk3288-veyron.dtsi b/arch/arm/dts/rk3288-veyron.dtsi index 4a9c27a49e2..35db8827431 100644 --- a/arch/arm/dts/rk3288-veyron.dtsi +++ b/arch/arm/dts/rk3288-veyron.dtsi @@ -560,10 +560,6 @@  	status = "okay";  }; -&hdmi_audio { -	status = "okay"; -}; -  &gpu {  	status = "okay";  }; diff --git a/arch/arm/dts/rk3288.dtsi b/arch/arm/dts/rk3288.dtsi index 53ee760b989..8c394c1e539 100644 --- a/arch/arm/dts/rk3288.dtsi +++ b/arch/arm/dts/rk3288.dtsi @@ -15,6 +15,7 @@  	interrupt-parent = <&gic>;  	aliases { +		ethernet0 = &gmac;  		i2c0 = &i2c0;  		i2c1 = &i2c1;  		i2c2 = &i2c2; @@ -35,6 +36,15 @@  		spi2 = &spi2;  	}; +	arm-pmu { +		compatible = "arm,cortex-a12-pmu"; +		interrupts = <GIC_SPI 151 IRQ_TYPE_LEVEL_HIGH>, +			     <GIC_SPI 152 IRQ_TYPE_LEVEL_HIGH>, +			     <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>, +			     <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>; +		interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>; +	}; +  	cpus {  		#address-cells = <1>;  		#size-cells = <0>; @@ -45,44 +55,119 @@  			device_type = "cpu";  			compatible = "arm,cortex-a12";  			reg = <0x500>; -			operating-points = < -				/* KHz    uV */ -				1800000 1400000 -				1704000 1350000 -				1608000 1300000 -				1512000 1250000 -				1416000 1200000 -				1200000 1100000 -				1008000 1050000 -				 816000 1000000 -				 696000  950000 -				 600000  900000 -				 408000  900000 -				 216000  900000 -				 126000  900000 -			>; +			resets = <&cru SRST_CORE0>; +			operating-points-v2 = <&cpu_opp_table>;  			#cooling-cells = <2>; /* min followed by max */  			clock-latency = <40000>;  			clocks = <&cru ARMCLK>; -			resets = <&cru SRST_CORE0>; +			dynamic-power-coefficient = <370>;  		}; -		cpu@501 { +		cpu1: cpu@501 {  			device_type = "cpu";  			compatible = "arm,cortex-a12";  			reg = <0x501>;  			resets = <&cru SRST_CORE1>; +			operating-points-v2 = <&cpu_opp_table>; +			#cooling-cells = <2>; /* min followed by max */ +			clock-latency = <40000>; +			clocks = <&cru ARMCLK>; +			dynamic-power-coefficient = <370>;  		}; -		cpu@502 { +		cpu2: cpu@502 {  			device_type = "cpu";  			compatible = "arm,cortex-a12";  			reg = <0x502>;  			resets = <&cru SRST_CORE2>; +			operating-points-v2 = <&cpu_opp_table>; +			#cooling-cells = <2>; /* min followed by max */ +			clock-latency = <40000>; +			clocks = <&cru ARMCLK>; +			dynamic-power-coefficient = <370>;  		}; -		cpu@503 { +		cpu3: cpu@503 {  			device_type = "cpu";  			compatible = "arm,cortex-a12";  			reg = <0x503>;  			resets = <&cru SRST_CORE3>; +			operating-points-v2 = <&cpu_opp_table>; +			#cooling-cells = <2>; /* min followed by max */ +			clock-latency = <40000>; +			clocks = <&cru ARMCLK>; +			dynamic-power-coefficient = <370>; +		}; +	}; + +	cpu_opp_table: opp-table-0 { +		compatible = "operating-points-v2"; +		opp-shared; + +		opp-126000000 { +			opp-hz = /bits/ 64 <126000000>; +			opp-microvolt = <900000>; +		}; +		opp-216000000 { +			opp-hz = /bits/ 64 <216000000>; +			opp-microvolt = <900000>; +		}; +		opp-312000000 { +			opp-hz = /bits/ 64 <312000000>; +			opp-microvolt = <900000>; +		}; +		opp-408000000 { +			opp-hz = /bits/ 64 <408000000>; +			opp-microvolt = <900000>; +		}; +		opp-600000000 { +			opp-hz = /bits/ 64 <600000000>; +			opp-microvolt = <900000>; +		}; +		opp-696000000 { +			opp-hz = /bits/ 64 <696000000>; +			opp-microvolt = <950000>; +		}; +		opp-816000000 { +			opp-hz = /bits/ 64 <816000000>; +			opp-microvolt = <1000000>; +		}; +		opp-1008000000 { +			opp-hz = /bits/ 64 <1008000000>; +			opp-microvolt = <1050000>; +		}; +		opp-1200000000 { +			opp-hz = /bits/ 64 <1200000000>; +			opp-microvolt = <1100000>; +		}; +		opp-1416000000 { +			opp-hz = /bits/ 64 <1416000000>; +			opp-microvolt = <1200000>; +		}; +		opp-1512000000 { +			opp-hz = /bits/ 64 <1512000000>; +			opp-microvolt = <1300000>; +		}; +		opp-1608000000 { +			opp-hz = /bits/ 64 <1608000000>; +			opp-microvolt = <1350000>; +		}; +	}; + +	reserved-memory { +		#address-cells = <1>; +		#size-cells = <1>; +		ranges; + +		/* +		 * The rk3288 cannot use the memory area above 0xfe000000 +		 * for dma operations for some reason. While there is +		 * probably a better solution available somewhere, we +		 * haven't found it yet and while devices with 2GB of ram +		 * are not affected, this issue prevents 4GB from booting. +		 * So to make these devices at least bootable, block +		 * this area for the time being until the real solution +		 * is found. +		 */ +		dma-unusable@fe000000 { +			reg = <0xfe000000 0x1000000>;  		};  	}; @@ -94,14 +179,22 @@  	};  	timer { -	        arm,use-physical-timer;  		compatible = "arm,armv7-timer"; +		arm,cpu-registers-not-fw-configured;  		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,  			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,  			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,  			     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;  		clock-frequency = <24000000>; -		always-on; +		arm,no-tick-in-suspend; +	}; + +	timer: timer@ff810000 { +		compatible = "rockchip,rk3288-timer"; +		reg = <0x0 0xff810000 0x0 0x20>; +		interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru PCLK_TIMER>, <&xin24m>; +		clock-names = "pclk", "timer";  	};  	display-subsystem { @@ -118,6 +211,8 @@  		fifo-depth = <0x100>;  		interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;  		reg = <0xff0c0000 0x4000>; +		resets = <&cru SRST_MMC0>; +		reset-names = "reset";  		status = "disabled";  	}; @@ -130,6 +225,8 @@  		fifo-depth = <0x100>;  		interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;  		reg = <0xff0d0000 0x4000>; +		resets = <&cru SRST_SDIO0>; +		reset-names = "reset";  		status = "disabled";  	}; @@ -142,6 +239,8 @@  		fifo-depth = <0x100>;  		interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;  		reg = <0xff0e0000 0x4000>; +		resets = <&cru SRST_SDIO1>; +		reset-names = "reset";  		status = "disabled";  	}; @@ -154,6 +253,8 @@  		fifo-depth = <0x100>;  		interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;  		reg = <0xff0f0000 0x4000>; +		resets = <&cru SRST_EMMC>; +		reset-names = "reset";  		status = "disabled";  	}; @@ -164,6 +265,8 @@  		#io-channel-cells = <1>;  		clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;  		clock-names = "saradc", "apb_pclk"; +		resets = <&cru SRST_SARADC>; +		reset-names = "saradc-apb";  		status = "disabled";  	}; @@ -263,6 +366,7 @@  		pinctrl-0 = <&i2c5_xfer>;  		status = "disabled";  	}; +  	uart0: serial@ff180000 {  		compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";  		reg = <0xff180000 0x100>; @@ -271,6 +375,8 @@  		reg-io-width = <4>;  		clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;  		clock-names = "baudclk", "apb_pclk"; +		dmas = <&dmac_peri 1>, <&dmac_peri 2>; +		dma-names = "tx", "rx";  		pinctrl-names = "default";  		pinctrl-0 = <&uart0_xfer>;  		status = "disabled"; @@ -284,6 +390,8 @@  		reg-io-width = <4>;  		clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;  		clock-names = "baudclk", "apb_pclk"; +		dmas = <&dmac_peri 3>, <&dmac_peri 4>; +		dma-names = "tx", "rx";  		pinctrl-names = "default";  		pinctrl-0 = <&uart1_xfer>;  		status = "disabled"; @@ -301,6 +409,7 @@  		pinctrl-0 = <&uart2_xfer>;  		status = "disabled";  	}; +  	uart3: serial@ff1b0000 {  		compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";  		reg = <0xff1b0000 0x100>; @@ -309,6 +418,8 @@  		reg-io-width = <4>;  		clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>;  		clock-names = "baudclk", "apb_pclk"; +		dmas = <&dmac_peri 7>, <&dmac_peri 8>; +		dma-names = "tx", "rx";  		pinctrl-names = "default";  		pinctrl-0 = <&uart3_xfer>;  		status = "disabled"; @@ -322,6 +433,8 @@  		reg-io-width = <4>;  		clocks = <&cru SCLK_UART4>, <&cru PCLK_UART4>;  		clock-names = "baudclk", "apb_pclk"; +		dmas = <&dmac_peri 9>, <&dmac_peri 10>; +		dma-names = "tx", "rx";  		pinctrl-names = "default";  		pinctrl-0 = <&uart4_xfer>;  		status = "disabled"; @@ -333,13 +446,91 @@  		interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,  			     <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;  		#dma-cells = <1>; -		broken-no-flushp; +		arm,pl330-broken-no-flushp; +		arm,pl330-periph-burst;  		clocks = <&cru ACLK_DMAC2>;  		clock-names = "apb_pclk";  	};  	thermal: thermal-zones { -		#include "rk3288-thermal.dtsi" +		reserve_thermal: reserve-thermal { +			polling-delay-passive = <1000>; /* milliseconds */ +			polling-delay = <5000>; /* milliseconds */ + +			thermal-sensors = <&tsadc 0>; +		}; + +		cpu_thermal: cpu-thermal { +			polling-delay-passive = <100>; /* milliseconds */ +			polling-delay = <5000>; /* milliseconds */ + +			thermal-sensors = <&tsadc 1>; + +			trips { +				cpu_alert0: cpu_alert0 { +					temperature = <70000>; /* millicelsius */ +					hysteresis = <2000>; /* millicelsius */ +					type = "passive"; +				}; +				cpu_alert1: cpu_alert1 { +					temperature = <75000>; /* millicelsius */ +					hysteresis = <2000>; /* millicelsius */ +					type = "passive"; +				}; +				cpu_crit: cpu_crit { +					temperature = <90000>; /* millicelsius */ +					hysteresis = <2000>; /* millicelsius */ +					type = "critical"; +				}; +			}; + +			cooling-maps { +				map0 { +					trip = <&cpu_alert0>; +					cooling-device = +						<&cpu0 THERMAL_NO_LIMIT 6>, +						<&cpu1 THERMAL_NO_LIMIT 6>, +						<&cpu2 THERMAL_NO_LIMIT 6>, +						<&cpu3 THERMAL_NO_LIMIT 6>; +				}; +				map1 { +					trip = <&cpu_alert1>; +					cooling-device = +						<&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, +						<&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, +						<&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, +						<&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; +				}; +			}; +		}; + +		gpu_thermal: gpu-thermal { +			polling-delay-passive = <100>; /* milliseconds */ +			polling-delay = <5000>; /* milliseconds */ + +			thermal-sensors = <&tsadc 2>; + +			trips { +				gpu_alert0: gpu_alert0 { +					temperature = <70000>; /* millicelsius */ +					hysteresis = <2000>; /* millicelsius */ +					type = "passive"; +				}; +				gpu_crit: gpu_crit { +					temperature = <90000>; /* millicelsius */ +					hysteresis = <2000>; /* millicelsius */ +					type = "critical"; +				}; +			}; + +			cooling-maps { +				map0 { +					trip = <&gpu_alert0>; +					cooling-device = +						<&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; +				}; +			}; +		};  	};  	tsadc: tsadc@ff280000 { @@ -371,6 +562,8 @@  			"mac_clk_rx", "mac_clk_tx",  			"clk_mac_ref", "clk_mac_refout",  			"aclk_mac", "pclk_mac"; +		resets = <&cru SRST_MAC>; +		reset-names = "stmmaceth";  	};  	usb_host0_ehci: usb@ff500000 { @@ -384,7 +577,7 @@  		status = "disabled";  	}; -	/* NOTE: doesn't work on RK3288, but fixed on RK3288W */ +	/* NOTE: doesn't work on RK3288, but was fixed on RK3288W */  	usb_host0_ohci: usb@ff520000 {  		compatible = "generic-ohci";  		reg = <0x0 0xff520000 0x0 0x100>; @@ -402,8 +595,10 @@  		interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;  		clocks = <&cru HCLK_USBHOST1>;  		clock-names = "otg"; +		dr_mode = "host";  		phys = <&usbphy2>;  		phy-names = "usb2-phy"; +		snps,reset-phy-on-wake;  		status = "disabled";  	}; @@ -415,6 +610,9 @@  		clocks = <&cru HCLK_OTG0>;  		clock-names = "otg";  		dr_mode = "otg"; +		g-np-tx-fifo-size = <16>; +		g-rx-fifo-size = <275>; +		g-tx-fifo-size = <256 128 128 64 64 32>;  		phys = <&usbphy0>;  		phy-names = "usb2-phy";  		status = "disabled"; @@ -435,7 +633,8 @@  		interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,  			     <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;  		#dma-cells = <1>; -		broken-no-flushp; +		arm,pl330-broken-no-flushp; +		arm,pl330-periph-burst;  		clocks = <&cru ACLK_DMAC1>;  		clock-names = "apb_pclk";  		status = "disabled"; @@ -515,7 +714,7 @@  		status = "disabled";  	}; -	bus_intmem: bus_intmem@ff700000 { +	bus_intmem: sram@ff700000 {  		compatible = "mmio-sram";  		reg = <0xff700000 0x18000>;  		#address-cells = <1>; @@ -527,7 +726,7 @@  		};  	}; -	sram@ff720000 { +	pmu_sram: sram@ff720000 {  		compatible = "rockchip,rk3288-pmu-sram", "mmio-sram";  		reg = <0xff720000 0x1000>;  	}; @@ -569,7 +768,7 @@  		compatible = "rockchip,rk3288-wdt", "snps,dw-wdt";  		reg = <0xff800000 0x100>;  		clocks = <&cru PCLK_WDT>; -		interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>; +		interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;  		status = "disabled";  	}; @@ -577,11 +776,11 @@  		compatible = "rockchip,rk3288-spdif", "rockchip,rk3066-spdif";  		reg = <0xff8b0000 0x10000>;  		#sound-dai-cells = <0>; -		clock-names = "hclk", "mclk"; -		clocks = <&cru HCLK_SPDIF8CH>, <&cru SCLK_SPDIF8CH>; +		clocks = <&cru SCLK_SPDIF8CH>, <&cru HCLK_SPDIF8CH>; +		clock-names = "mclk", "hclk";  		dmas = <&dmac_bus_s 3>;  		dma-names = "tx"; -		interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>; +		interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;  		pinctrl-names = "default";  		pinctrl-0 = <&spdif_tx>;  		rockchip,grf = <&grf>; @@ -591,50 +790,97 @@  	i2s: i2s@ff890000 {  		compatible = "rockchip,rk3288-i2s", "rockchip,rk3066-i2s";  		reg = <0xff890000 0x10000>; -		interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>; -		#address-cells = <1>; -		#size-cells = <0>; -		#sound-dai-cells = <1>; +		#sound-dai-cells = <0>; +		interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru SCLK_I2S0>, <&cru HCLK_I2S0>; +		clock-names = "i2s_clk", "i2s_hclk";  		dmas = <&dmac_bus_s 0>, <&dmac_bus_s 1>;  		dma-names = "tx", "rx"; -		clock-names = "i2s_hclk", "i2s_clk"; -		clocks = <&cru HCLK_I2S0>, <&cru SCLK_I2S0>;  		pinctrl-names = "default";  		pinctrl-0 = <&i2s0_bus>; +		rockchip,playback-channels = <8>; +		rockchip,capture-channels = <2>; +		status = "disabled"; +	}; + +	crypto: crypto@ff8a0000 { +		compatible = "rockchip,rk3288-crypto"; +		reg = <0xff8a0000 0x4000>; +		interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru ACLK_CRYPTO>, <&cru HCLK_CRYPTO>, +			 <&cru SCLK_CRYPTO>, <&cru ACLK_DMAC1>; +		clock-names = "aclk", "hclk", "sclk", "apb_pclk"; +		resets = <&cru SRST_CRYPTO>; +		reset-names = "crypto-rst"; +	}; + +	iep_mmu: iommu@ff900800 { +		compatible = "rockchip,iommu"; +		reg = <0xff900800 0x40>; +		interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru ACLK_IEP>, <&cru HCLK_IEP>; +		clock-names = "aclk", "iface"; +		#iommu-cells = <0>;  		status = "disabled";  	}; +	isp_mmu: iommu@ff914000 { +		compatible = "rockchip,iommu"; +		reg = <0xff914000 0x100>, <0xff915000 0x100>; +		interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru ACLK_ISP>, <&cru HCLK_ISP>; +		clock-names = "aclk", "iface"; +		#iommu-cells = <0>; +		rockchip,disable-mmu-reset; +		status = "disabled"; +	}; + +	rga: rga@ff920000 { +		compatible = "rockchip,rk3288-rga"; +		reg = <0xff920000 0x180>; +		interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru ACLK_RGA>, <&cru HCLK_RGA>, <&cru SCLK_RGA>; +		clock-names = "aclk", "hclk", "sclk"; +		power-domains = <&power RK3288_PD_VIO>; +		resets = <&cru SRST_RGA_CORE>, <&cru SRST_RGA_AXI>, <&cru SRST_RGA_AHB>; +		reset-names = "core", "axi", "ahb"; +	}; +  	vopb: vop@ff930000 {  		compatible = "rockchip,rk3288-vop";  		reg = <0xff930000 0x19c>;  		interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;  		clocks = <&cru ACLK_VOP0>, <&cru DCLK_VOP0>, <&cru HCLK_VOP0>;  		clock-names = "aclk_vop", "dclk_vop", "hclk_vop"; +		power-domains = <&power RK3288_PD_VIO>;  		resets = <&cru SRST_LCDC0_AXI>, <&cru SRST_LCDC0_AHB>, <&cru SRST_LCDC0_DCLK>;  		reset-names = "axi", "ahb", "dclk";  		iommus = <&vopb_mmu>; -		power-domains = <&power RK3288_PD_VIO>;  		status = "disabled"; +  		vopb_out: port {  			#address-cells = <1>;  			#size-cells = <0>; +  			vopb_out_edp: endpoint@0 {  				reg = <0>;  				remote-endpoint = <&edp_in_vopb>;  			}; +  			vopb_out_hdmi: endpoint@1 {  				reg = <1>;  				remote-endpoint = <&hdmi_in_vopb>;  			}; +  			vopb_out_lvds: endpoint@2 {  				reg = <2>;  				remote-endpoint = <&lvds_in_vopb>;  			}; +  			vopb_out_mipi: endpoint@3 {  				reg = <3>;  				remote-endpoint = <&mipi_in_vopb>;  			}; -  		};  	}; @@ -642,7 +888,8 @@  		compatible = "rockchip,iommu";  		reg = <0xff930300 0x100>;  		interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>; -		interrupt-names = "vopb_mmu"; +		clocks = <&cru ACLK_VOP0>, <&cru HCLK_VOP0>; +		clock-names = "aclk", "iface";  		power-domains = <&power RK3288_PD_VIO>;  		#iommu-cells = <0>;  		status = "disabled"; @@ -654,31 +901,35 @@  		interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;  		clocks = <&cru ACLK_VOP1>, <&cru DCLK_VOP1>, <&cru HCLK_VOP1>;  		clock-names = "aclk_vop", "dclk_vop", "hclk_vop"; +		power-domains = <&power RK3288_PD_VIO>;  		resets = <&cru SRST_LCDC1_AXI>, <&cru SRST_LCDC1_AHB>, <&cru SRST_LCDC1_DCLK>;  		reset-names = "axi", "ahb", "dclk";  		iommus = <&vopl_mmu>; -		power-domains = <&power RK3288_PD_VIO>;  		status = "disabled"; +  		vopl_out: port {  			#address-cells = <1>;  			#size-cells = <0>; +  			vopl_out_edp: endpoint@0 {  				reg = <0>;  				remote-endpoint = <&edp_in_vopl>;  			}; +  			vopl_out_hdmi: endpoint@1 {  				reg = <1>;  				remote-endpoint = <&hdmi_in_vopl>;  			}; +  			vopl_out_lvds: endpoint@2 {  				reg = <2>;  				remote-endpoint = <&lvds_in_vopl>;  			}; +  			vopl_out_mipi: endpoint@3 {  				reg = <3>;  				remote-endpoint = <&mipi_in_vopl>;  			}; -  		};  	}; @@ -686,7 +937,8 @@  		compatible = "rockchip,iommu";  		reg = <0xff940300 0x100>;  		interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>; -		interrupt-names = "vopl_mmu"; +		clocks = <&cru ACLK_VOP1>, <&cru HCLK_VOP1>; +		clock-names = "aclk", "iface";  		power-domains = <&power RK3288_PD_VIO>;  		#iommu-cells = <0>;  		status = "disabled"; @@ -695,16 +947,14 @@  	mipi_dsi: mipi@ff960000 {  		compatible = "rockchip,rk3288_mipi_dsi";  		reg = <0xff960000 0x4000>; +		interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;  		clocks = <&cru PCLK_MIPI_DSI0>;  		clock-names = "pclk_mipi"; -		/*pinctrl-names = "default"; -		pinctrl-0 = <&lcdc0_ctl>;*/ +		power-domains = <&power RK3288_PD_VIO>;  		rockchip,grf = <&grf>; -		#address-cells = <1>; -		#size-cells = <0>;  		status = "disabled"; +  		ports { -			reg = <1>;  			mipi_in: port {  				#address-cells = <1>;  				#size-cells = <0>; @@ -726,16 +976,21 @@  		clocks = <&cru PCLK_LVDS_PHY>;  		clock-names = "pclk_lvds";  		pinctrl-names = "default"; -		pinctrl-0 = <&lcdc0_ctl>; +		pinctrl-0 = <&lcdc_ctl>; +		power-domains = <&power RK3288_PD_VIO>;  		rockchip,grf = <&grf>;  		status = "disabled"; +  		ports {  			#address-cells = <1>;  			#size-cells = <0>; +  			lvds_in: port@0 {  				reg = <0>; +  				#address-cells = <1>;  				#size-cells = <0>; +  				lvds_in_vopb: endpoint@0 {  					reg = <0>;  					remote-endpoint = <&vopb_out_lvds>; @@ -753,12 +1008,13 @@  		reg = <0xff970000 0x4000>;  		interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;  		clocks = <&cru SCLK_EDP>, <&cru SCLK_EDP_24M>, <&cru PCLK_EDP_CTRL>; -		rockchip,grf = <&grf>;  		clock-names = "clk_edp", "clk_edp_24m", "pclk_edp"; -		resets = <&cru 111>; +		resets = <&cru SRST_EDP>;  		reset-names = "edp"; +		rockchip,grf = <&grf>;  		power-domains = <&power RK3288_PD_VIO>;  		status = "disabled"; +  		ports {  			edp_in: port {  				#address-cells = <1>; @@ -779,12 +1035,14 @@  		compatible = "rockchip,rk3288-dw-hdmi";  		reg = <0xff980000 0x20000>;  		reg-io-width = <4>; -		ddc-i2c-bus = <&i2c5>; +		#sound-dai-cells = <0>;  		rockchip,grf = <&grf>;  		interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;  		clocks = <&cru  PCLK_HDMI_CTRL>, <&cru SCLK_HDMI_HDCP>;  		clock-names = "iahb", "isfr"; +		power-domains = <&power RK3288_PD_VIO>;  		status = "disabled"; +  		ports {  			hdmi_in: port {  				#address-cells = <1>; @@ -801,65 +1059,155 @@  		};  	}; -	hdmi_audio: hdmi_audio { -		compatible = "rockchip,rk3288-hdmi-audio"; -		i2s-controller = <&i2s>; -		status = "disable"; -	}; -  	vpu: video-codec@ff9a0000 {  		compatible = "rockchip,rk3288-vpu";  		reg = <0xff9a0000 0x800>;  		interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>, -				<GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>; +			     <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;  		interrupt-names = "vepu", "vdpu";  		clocks = <&cru ACLK_VCODEC>, <&cru HCLK_VCODEC>; -		clock-names = "aclk_vcodec", "hclk_vcodec"; -		power-domains = <&power RK3288_PD_VIDEO>; +		clock-names = "aclk", "hclk";  		iommus = <&vpu_mmu>; +		power-domains = <&power RK3288_PD_VIDEO>;  	};  	vpu_mmu: iommu@ff9a0800 {  		compatible = "rockchip,iommu";  		reg = <0xff9a0800 0x100>;  		interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>; -		interrupt-names = "vpu_mmu"; +		clocks = <&cru ACLK_VCODEC>, <&cru HCLK_VCODEC>; +		clock-names = "aclk", "iface"; +		#iommu-cells = <0>;  		power-domains = <&power RK3288_PD_VIDEO>; +	}; + +	hevc_mmu: iommu@ff9c0440 { +		compatible = "rockchip,iommu"; +		reg = <0xff9c0440 0x40>, <0xff9c0480 0x40>; +		interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru ACLK_HEVC>, <&cru HCLK_HEVC>; +		clock-names = "aclk", "iface";  		#iommu-cells = <0>; +		status = "disabled";  	};  	gpu: gpu@ffa30000 { -		compatible = "arm,malit764", -			     "arm,malit76x", -			     "arm,malit7xx", -			     "arm,mali-midgard"; +		compatible = "rockchip,rk3288-mali", "arm,mali-t760";  		reg = <0xffa30000 0x10000>;  		interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,  			     <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,  			     <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>; -		interrupt-names = "JOB", "MMU", "GPU"; +		interrupt-names = "job", "mmu", "gpu";  		clocks = <&cru ACLK_GPU>; -		clock-names = "aclk_gpu"; -		operating-points = < -			/* KHz uV */ -			100000 950000 -			200000 950000 -			300000 1000000 -			400000 1100000 -			/* 500000 1200000 - See crosbug.com/p/33857 */ -			600000 1250000 -		>; +		operating-points-v2 = <&gpu_opp_table>; +		#cooling-cells = <2>; /* min followed by max */  		power-domains = <&power RK3288_PD_GPU>;  		status = "disabled";  	}; +	gpu_opp_table: opp-table-1 { +		compatible = "operating-points-v2"; + +		opp-100000000 { +			opp-hz = /bits/ 64 <100000000>; +			opp-microvolt = <950000>; +		}; +		opp-200000000 { +			opp-hz = /bits/ 64 <200000000>; +			opp-microvolt = <950000>; +		}; +		opp-300000000 { +			opp-hz = /bits/ 64 <300000000>; +			opp-microvolt = <1000000>; +		}; +		opp-400000000 { +			opp-hz = /bits/ 64 <400000000>; +			opp-microvolt = <1100000>; +		}; +		opp-600000000 { +			opp-hz = /bits/ 64 <600000000>; +			opp-microvolt = <1250000>; +		}; +	}; + +	qos_gpu_r: qos@ffaa0000 { +		compatible = "rockchip,rk3288-qos", "syscon"; +		reg = <0xffaa0000 0x20>; +	}; + +	qos_gpu_w: qos@ffaa0080 { +		compatible = "rockchip,rk3288-qos", "syscon"; +		reg = <0xffaa0080 0x20>; +	}; + +	qos_vio1_vop: qos@ffad0000 { +		compatible = "rockchip,rk3288-qos", "syscon"; +		reg = <0xffad0000 0x20>; +	}; + +	qos_vio1_isp_w0: qos@ffad0100 { +		compatible = "rockchip,rk3288-qos", "syscon"; +		reg = <0xffad0100 0x20>; +	}; + +	qos_vio1_isp_w1: qos@ffad0180 { +		compatible = "rockchip,rk3288-qos", "syscon"; +		reg = <0x0 0xffad0180 0x0 0x20>; +	}; + +	qos_vio0_vop: qos@ffad0400 { +		compatible = "rockchip,rk3288-qos", "syscon"; +		reg = <0x0 0xffad0400 0x0 0x20>; +	}; + +	qos_vio0_vip: qos@ffad0480 { +		compatible = "rockchip,rk3288-qos", "syscon"; +		reg = <0xffad0480 0x20>; +	}; + +	qos_vio0_iep: qos@ffad0500 { +		compatible = "rockchip,rk3288-qos", "syscon"; +		reg = <0xffad0500 0x20>; +	}; + +	qos_vio2_rga_r: qos@ffad0800 { +		compatible = "rockchip,rk3288-qos", "syscon"; +		reg = <0xffad0800 0x20>; +	}; + +	qos_vio2_rga_w: qos@ffad0880 { +		compatible = "rockchip,rk3288-qos", "syscon"; +		reg = <0xffad0880 0x20>; +	}; + +	qos_vio1_isp_r: qos@ffad0900 { +		compatible = "rockchip,rk3288-qos", "syscon"; +		reg = <0xffad0900 0x20>; +	}; + +	qos_video: qos@ffae0000 { +		compatible = "rockchip,rk3288-qos", "syscon"; +		reg = <0xffae0000 0x20>; +	}; + +	qos_hevc_r: qos@ffaf0000 { +		compatible = "rockchip,rk3288-qos", "syscon"; +		reg = <0xffaf0000 0x20>; +	}; + +	qos_hevc_w: qos@ffaf0080 { +		compatible = "rockchip,rk3288-qos", "syscon"; +		reg = <0xffaf0080 0x20>; +	}; +  	dmac_bus_s: dma-controller@ffb20000 {  		compatible = "arm,pl330", "arm,primecell";  		reg = <0xffb20000 0x4000>;  		interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,  			     <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;  		#dma-cells = <1>; -		broken-no-flushp; +		arm,pl330-broken-no-flushp; +		arm,pl330-periph-burst;  		clocks = <&cru ACLK_DMAC1>;  		clock-names = "apb_pclk";  	}; @@ -867,7 +1215,17 @@  	efuse: efuse@ffb40000 {  		compatible = "rockchip,rk3288-efuse";  		reg = <0xffb40000 0x10000>; -		status = "disabled"; +		#address-cells = <1>; +		#size-cells = <1>; +		clocks = <&cru PCLK_EFUSE256>; +		clock-names = "pclk_efuse"; + +		cpu_id: cpu-id@7 { +			reg = <0x07 0x10>; +		}; +		cpu_leakage: cpu_leakage@17 { +			reg = <0x17 0x1>; +		};  	};  	gic: interrupt-controller@ffc01000 { @@ -926,7 +1284,7 @@  		gpio0: gpio0@ff750000 {  			compatible = "rockchip,gpio-bank"; -			reg =	<0xff750000 0x100>; +			reg = <0xff750000 0x100>;  			interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;  			clocks = <&cru PCLK_GPIO0>; @@ -1045,6 +1403,24 @@  			hdmi_cec_c0: hdmi-cec-c0 {  				rockchip,pins = <7 RK_PC0 2 &pcfg_pull_none>;  			}; + +			hdmi_cec_c7: hdmi-cec-c7 { +				rockchip,pins = <7 RK_PC7 4 &pcfg_pull_none>; +			}; + +			hdmi_ddc: hdmi-ddc { +				rockchip,pins = <7 RK_PC3 2 &pcfg_pull_none>, +						<7 RK_PC4 2 &pcfg_pull_none>; +			}; + +			hdmi_ddc_unwedge: hdmi-ddc-unwedge { +				rockchip,pins = <7 RK_PC3 RK_FUNC_GPIO &pcfg_output_low>, +						<7 RK_PC4 2 &pcfg_pull_none>; +			}; +		}; + +		pcfg_output_low: pcfg-output-low { +			output-low;  		};  		pcfg_pull_up: pcfg-pull-up { @@ -1064,7 +1440,7 @@  			drive-strength = <12>;  		}; -		sleep { +		suspend {  			global_pwroff: global-pwroff {  				rockchip,pins = <0 RK_PA0 1 &pcfg_pull_none>;  			}; @@ -1082,6 +1458,12 @@  			};  		}; +		edp { +			edp_hpd: edp-hpd { +				rockchip,pins = <7 RK_PB3 2 &pcfg_pull_down>; +			}; +		}; +  		i2c0 {  			i2c0_xfer: i2c0-xfer {  				rockchip,pins = <0 RK_PB7 1 &pcfg_pull_none>, @@ -1135,8 +1517,8 @@  			};  		}; -		lcdc0 { -			lcdc0_ctl: lcdc0-ctl { +		lcdc { +			lcdc_ctl: lcdc-ctl {  				rockchip,pins = <1 RK_PD0 1 &pcfg_pull_none>,  						<1 RK_PD1 1 &pcfg_pull_none>,  						<1 RK_PD2 1 &pcfg_pull_none>, @@ -1153,7 +1535,7 @@  				rockchip,pins = <6 RK_PC5 1 &pcfg_pull_up>;  			}; -			sdmmc_cd: sdmcc-cd { +			sdmmc_cd: sdmmc-cd {  				rockchip,pins = <6 RK_PC6 1 &pcfg_pull_up>;  			}; @@ -1344,7 +1726,7 @@  			};  			uart0_cts: uart0-cts { -				rockchip,pins = <4 RK_PC2 1 &pcfg_pull_none>; +				rockchip,pins = <4 RK_PC2 1 &pcfg_pull_up>;  			};  			uart0_rts: uart0-rts { @@ -1359,7 +1741,7 @@  			};  			uart1_cts: uart1-cts { -				rockchip,pins = <5 RK_PB2 1 &pcfg_pull_none>; +				rockchip,pins = <5 RK_PB2 1 &pcfg_pull_up>;  			};  			uart1_rts: uart1-rts { @@ -1382,7 +1764,7 @@  			};  			uart3_cts: uart3-cts { -				rockchip,pins = <7 RK_PB1 1 &pcfg_pull_none>; +				rockchip,pins = <7 RK_PB1 1 &pcfg_pull_up>;  			};  			uart3_rts: uart3-rts { @@ -1392,20 +1774,24 @@  		uart4 {  			uart4_xfer: uart4-xfer { -				rockchip,pins = <5 RK_PB4 3 &pcfg_pull_up>, -						<5 RK_PB5 3 &pcfg_pull_none>; +				rockchip,pins = <5 RK_PB7 3 &pcfg_pull_up>, +						<5 RK_PB6 3 &pcfg_pull_none>;  			};  			uart4_cts: uart4-cts { -				rockchip,pins = <5 RK_PB6 3 &pcfg_pull_none>; +				rockchip,pins = <5 RK_PB4 3 &pcfg_pull_up>;  			};  			uart4_rts: uart4-rts { -				rockchip,pins = <5 RK_PB7 3 &pcfg_pull_none>; +				rockchip,pins = <5 RK_PB5 3 &pcfg_pull_none>;  			};  		};  		tsadc { +			otp_pin: otp-pin { +				rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>; +			}; +  			otp_out: otp-out {  				rockchip,pins = <0 RK_PB2 1 &pcfg_pull_none>;  			}; diff --git a/arch/arm/dts/rk3399-eaidk-610-u-boot.dtsi b/arch/arm/dts/rk3399-eaidk-610-u-boot.dtsi new file mode 100644 index 00000000000..a3f27566e43 --- /dev/null +++ b/arch/arm/dts/rk3399-eaidk-610-u-boot.dtsi @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2022 Andy Yan <andy.yan@gmail.com> + */ + +#include "rk3399-u-boot.dtsi" +#include "rk3399-sdram-lpddr3-4GB-1600.dtsi" + +/ { +	chosen { +		stdout-path = "serial2:1500000n8"; +		u-boot,spl-boot-order = "same-as-spl", &sdhci, &sdmmc; +	}; +}; + +&vdd_log { +	regulator-init-microvolt = <950000>; +}; diff --git a/arch/arm/dts/rk3399-eaidk-610.dts b/arch/arm/dts/rk3399-eaidk-610.dts new file mode 100644 index 00000000000..d1f343345f6 --- /dev/null +++ b/arch/arm/dts/rk3399-eaidk-610.dts @@ -0,0 +1,939 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2022 Fuzhou Rockchip Electronics Co., Ltd. + */ + +/dts-v1/; +#include <dt-bindings/input/linux-event-codes.h> +#include <dt-bindings/pwm/pwm.h> +#include <dt-bindings/usb/pd.h> +#include "rk3399.dtsi" +#include "rk3399-opp.dtsi" + +/ { +	model = "OPEN AI LAB EAIDK-610"; +	compatible = "openailab,eaidk-610", "rockchip,rk3399"; + +	aliases { +		mmc0 = &sdio0; +		mmc1 = &sdmmc; +		mmc2 = &sdhci; +	}; + +	backlight: backlight { +		compatible = "pwm-backlight"; +		pwms = <&pwm0 0 25000 0>; +		brightness-levels = < +			  0   1   2   3   4   5   6   7 +			  8   9  10  11  12  13  14  15 +			 16  17  18  19  20  21  22  23 +			 24  25  26  27  28  29  30  31 +			 32  33  34  35  36  37  38  39 +			 40  41  42  43  44  45  46  47 +			 48  49  50  51  52  53  54  55 +			 56  57  58  59  60  61  62  63 +			 64  65  66  67  68  69  70  71 +			 72  73  74  75  76  77  78  79 +			 80  81  82  83  84  85  86  87 +			 88  89  90  91  92  93  94  95 +			 96  97  98  99 100 101 102 103 +			104 105 106 107 108 109 110 111 +			112 113 114 115 116 117 118 119 +			120 121 122 123 124 125 126 127 +			128 129 130 131 132 133 134 135 +			136 137 138 139 140 141 142 143 +			144 145 146 147 148 149 150 151 +			152 153 154 155 156 157 158 159 +			160 161 162 163 164 165 166 167 +			168 169 170 171 172 173 174 175 +			176 177 178 179 180 181 182 183 +			184 185 186 187 188 189 190 191 +			192 193 194 195 196 197 198 199 +			200 201 202 203 204 205 206 207 +			208 209 210 211 212 213 214 215 +			216 217 218 219 220 221 222 223 +			224 225 226 227 228 229 230 231 +			232 233 234 235 236 237 238 239 +			240 241 242 243 244 245 246 247 +			248 249 250 251 252 253 254 255>; +		default-brightness-level = <200>; +	}; + +	clkin_gmac: external-gmac-clock { +		compatible = "fixed-clock"; +		clock-frequency = <125000000>; +		clock-output-names = "clkin_gmac"; +		#clock-cells = <0>; +	}; + +	dc_12v: dc-12v { +		compatible = "regulator-fixed"; +		regulator-name = "dc_12v"; +		regulator-always-on; +		regulator-boot-on; +		regulator-min-microvolt = <12000000>; +		regulator-max-microvolt = <12000000>; +	}; + +	gpio-keys { +		compatible = "gpio-keys"; +		autorepeat; +		pinctrl-names = "default"; +		pinctrl-0 = <&pwrbtn>; + +		key-power { +			debounce-interval = <100>; +			gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>; +			label = "GPIO Key Power"; +			linux,code = <KEY_POWER>; +			wakeup-source; +		}; +	}; + +	leds { +		compatible = "gpio-leds"; +		pinctrl-names = "default"; +		pinctrl-0 = <&work_led_pin>, <&user_led_pin>, +			    <&heartbeat_led_pin>, <&wlan_active_led_pin>, +			    <&bt_active_led_pin>; + +		work_led: led-0 { +			label = "blue:work"; +			default-state = "on"; +			gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>; +		}; + +		user_led: led-1 { +			label = "read:user"; +			default-state = "off"; +			gpios = <&gpio0 RK_PB4 GPIO_ACTIVE_HIGH>; +		}; + +		heartbeat_led: led-2 { +			label = "green:heartbeat"; +			linux,default-trigger = "heartbeat"; +			gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>; +		}; + +		wlan_active_led: led-3 { +			label = "yellow:wlan"; +			gpios = <&gpio2 RK_PD3 GPIO_ACTIVE_HIGH>; +			linux,default-trigger = "phy0tx"; +			default-state = "off"; +		}; + +		bt_active_led: led-4 { +			label = "blue:bt"; +			gpios = <&gpio2 RK_PD4 GPIO_ACTIVE_HIGH>; +			linux,default-trigger = "hci0-power"; +			default-state = "off"; +		}; +	}; + +	rt5651-sound { +		compatible = "simple-audio-card"; +		simple-audio-card,name = "realtek,rt5651-codec"; +		simple-audio-card,format = "i2s"; +		simple-audio-card,mclk-fs = <256>; +		simple-audio-card,widgets = +			"Microphone", "Mic Jack", +			"Headphone", "Headphone Jack"; +		simple-audio-card,routing = +			"Mic Jack", "MICBIAS1", +			"IN1P", "Mic Jack", +			"Headphone Jack", "HPOL", +			"Headphone Jack", "HPOR"; +		simple-audio-card,cpu { +			sound-dai = <&i2s1>; +		}; +		simple-audio-card,codec { +			sound-dai = <&rt5651>; +		}; +	}; + +	sdio_pwrseq: sdio-pwrseq { +		compatible = "mmc-pwrseq-simple"; +		clocks = <&rk808 1>; +		clock-names = "ext_clock"; +		pinctrl-names = "default"; +		pinctrl-0 = <&wifi_enable_h>; + +		/* +		 * On the module itself this is one of these (depending +		 * on the actual card populated): +		 * - SDIO_RESET_L_WL_REG_ON +		 * - PDN (power down when low) +		 */ +		reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>; +	}; + +	/* switched by pmic_sleep */ +	vcc1v8_s3: vcca1v8_s3: vcc1v8-s3 { +		compatible = "regulator-fixed"; +		regulator-name = "vcc1v8_s3"; +		regulator-always-on; +		regulator-boot-on; +		regulator-min-microvolt = <1800000>; +		regulator-max-microvolt = <1800000>; +		vin-supply = <&vcc_1v8>; +	}; + +	vcc3v3_sys: vcc3v3-sys { +		compatible = "regulator-fixed"; +		regulator-name = "vcc3v3_sys"; +		regulator-always-on; +		regulator-boot-on; +		regulator-min-microvolt = <3300000>; +		regulator-max-microvolt = <3300000>; +		vin-supply = <&dc_12v>; +	}; + +	vcc5v0_sys: vcc5v0-sys { +		compatible = "regulator-fixed"; +		regulator-name = "vcc5v0_sys"; +		regulator-always-on; +		regulator-boot-on; +		regulator-min-microvolt = <5000000>; +		regulator-max-microvolt = <5000000>; +		vin-supply = <&dc_12v>; +	}; + +	/* For USB3.0 Port1/2 */ +	vcc5v0_host1: vcc5v0-host1-regulator { +		compatible = "regulator-fixed"; +		enable-active-high; +		gpio = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>; +		pinctrl-names = "default"; +		pinctrl-0 = <&vcc5v0_host1_en>; +		regulator-name = "vcc5v0_host1"; +		regulator-always-on; +		vin-supply = <&vcc5v0_sys>; +	}; + +	/* For USB2.0 Port1/2 */ +	vcc5v0_host3: vcc5v0-host3-regulator { +		compatible = "regulator-fixed"; +		enable-active-high; +		gpio = <&gpio0 RK_PB0 GPIO_ACTIVE_HIGH>; +		pinctrl-names = "default"; +		pinctrl-0 = <&vcc5v0_host3_en>; +		regulator-name = "vcc5v0_host3"; +		regulator-always-on; +		vin-supply = <&vcc5v0_sys>; +	}; + +	vcc5v0_typec: vcc5v0-typec-regulator { +		compatible = "regulator-fixed"; +		enable-active-high; +		gpio = <&gpio4 RK_PC5 GPIO_ACTIVE_HIGH>; +		pinctrl-names = "default"; +		pinctrl-0 = <&vcc5v0_typec_en>; +		regulator-name = "vcc5v0_typec"; +		regulator-always-on; +		vin-supply = <&vcc3v3_sys>; +	}; + +	vdd_log: vdd-log { +		compatible = "regulator-fixed"; +		regulator-name = "vdd_log"; +		regulator-always-on; +		regulator-boot-on; +		regulator-min-microvolt = <900000>; +		regulator-max-microvolt = <900000>; +	}; +}; + +&cpu_l0 { +	cpu-supply = <&vdd_cpu_l>; +}; + +&cpu_l1 { +	cpu-supply = <&vdd_cpu_l>; +}; + +&cpu_l2 { +	cpu-supply = <&vdd_cpu_l>; +}; + +&cpu_l3 { +	cpu-supply = <&vdd_cpu_l>; +}; + +&cpu_b0 { +	cpu-supply = <&vdd_cpu_b>; +}; + +&cpu_b1 { +	cpu-supply = <&vdd_cpu_b>; +}; + +&emmc_phy { +	status = "okay"; +}; + +&gmac { +	assigned-clocks = <&cru SCLK_RMII_SRC>; +	assigned-clock-parents = <&clkin_gmac>; +	clock_in_out = "input"; +	phy-supply = <&vcc_lan>; +	phy-mode = "rgmii"; +	pinctrl-names = "default"; +	pinctrl-0 = <&rgmii_pins>; +	snps,reset-gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>; +	snps,reset-active-low; +	snps,reset-delays-us = <0 10000 50000>; +	tx_delay = <0x28>; +	rx_delay = <0x11>; +	status = "okay"; +}; + +&gpu { +	mali-supply = <&vdd_gpu>; +	status = "okay"; +}; + +&hdmi { +	ddc-i2c-bus = <&i2c3>; +	pinctrl-names = "default"; +	pinctrl-0 = <&hdmi_cec>; +	status = "okay"; +}; + +&i2c0 { +	status = "okay"; + +	rk808: pmic@1b { +		compatible = "rockchip,rk808"; +		reg = <0x1b>; +		interrupt-parent = <&gpio1>; +		interrupts = <21 IRQ_TYPE_LEVEL_LOW>; +		pinctrl-names = "default"; +		pinctrl-0 = <&pmic_int_l>; +		rockchip,system-power-controller; +		wakeup-source; +		#clock-cells = <1>; +		clock-output-names = "xin32k", "rk808-clkout2"; + +		vcc1-supply = <&vcc3v3_sys>; +		vcc2-supply = <&vcc3v3_sys>; +		vcc3-supply = <&vcc3v3_sys>; +		vcc4-supply = <&vcc3v3_sys>; +		vcc6-supply = <&vcc3v3_sys>; +		vcc7-supply = <&vcc3v3_sys>; +		vcc8-supply = <&vcc3v3_sys>; +		vcc9-supply = <&vcc3v3_sys>; +		vcc10-supply = <&vcc3v3_sys>; +		vcc11-supply = <&vcc3v3_sys>; +		vcc12-supply = <&vcc3v3_sys>; +		vddio-supply = <&vcc_3v0>; + +		regulators { +			vdd_center: DCDC_REG1 { +				regulator-name = "vdd_center"; +				regulator-min-microvolt = <750000>; +				regulator-max-microvolt = <1350000>; +				regulator-ramp-delay = <6001>; +				regulator-always-on; +				regulator-boot-on; + +				regulator-state-mem { +					regulator-off-in-suspend; +				}; +			}; + +			vdd_cpu_l: DCDC_REG2 { +				regulator-name = "vdd_cpu_l"; +				regulator-min-microvolt = <750000>; +				regulator-max-microvolt = <1350000>; +				regulator-ramp-delay = <6001>; +				regulator-always-on; +				regulator-boot-on; + +				regulator-state-mem { +					regulator-off-in-suspend; +				}; +			}; + +			vcc_ddr: DCDC_REG3 { +				regulator-name = "vcc_ddr"; +				regulator-always-on; +				regulator-boot-on; +				regulator-state-mem { +					regulator-on-in-suspend; +				}; +			}; + +			vcc_1v8: DCDC_REG4 { +				regulator-name = "vcc_1v8"; +				regulator-min-microvolt = <1800000>; +				regulator-max-microvolt = <1800000>; +				regulator-always-on; +				regulator-boot-on; + +				regulator-state-mem { +					regulator-on-in-suspend; +					regulator-suspend-microvolt = <1800000>; +				}; +			}; + +			vcc1v8_dvp: LDO_REG1 { +				regulator-name = "vcc1v8_dvp"; +				regulator-min-microvolt = <1800000>; +				regulator-max-microvolt = <1800000>; +				regulator-always-on; +				regulator-boot-on; + +				regulator-state-mem { +					regulator-off-in-suspend; +				}; +			}; + +			vcc2v8_dvp: LDO_REG2 { +				regulator-name = "vcc2v8_dvp"; +				regulator-min-microvolt = <2800000>; +				regulator-max-microvolt = <2800000>; +				regulator-always-on; +				regulator-boot-on; + +				regulator-state-mem { +					regulator-off-in-suspend; +				}; +			}; + +			vcc1v8_pmu: LDO_REG3 { +				regulator-name = "vcc1v8_pmu"; +				regulator-min-microvolt = <1800000>; +				regulator-max-microvolt = <1800000>; +				regulator-always-on; +				regulator-boot-on; + +				regulator-state-mem { +					regulator-on-in-suspend; +					regulator-suspend-microvolt = <1800000>; +				}; +			}; + +			vcc_sdio: LDO_REG4 { +				regulator-name = "vcc_sdio"; +				regulator-min-microvolt = <1800000>; +				regulator-max-microvolt = <3000000>; +				regulator-always-on; +				regulator-boot-on; + +				regulator-state-mem { +					regulator-on-in-suspend; +					regulator-suspend-microvolt = <3000000>; +				}; +			}; + +			vcca3v0_codec: LDO_REG5 { +				regulator-name = "vcca3v0_codec"; +				regulator-min-microvolt = <3000000>; +				regulator-max-microvolt = <3000000>; +				regulator-always-on; +				regulator-boot-on; + +				regulator-state-mem { +					regulator-off-in-suspend; +				}; +			}; + +			vcc_1v5: LDO_REG6 { +				regulator-name = "vcc_1v5"; +				regulator-min-microvolt = <1500000>; +				regulator-max-microvolt = <1500000>; +				regulator-always-on; +				regulator-boot-on; + +				regulator-state-mem { +					regulator-on-in-suspend; +					regulator-suspend-microvolt = <1500000>; +				}; +			}; + +			vcca1v8_codec: LDO_REG7 { +				regulator-name = "vcca1v8_codec"; +				regulator-min-microvolt = <1800000>; +				regulator-max-microvolt = <1800000>; +				regulator-always-on; +				regulator-boot-on; + +				regulator-state-mem { +					regulator-off-in-suspend; +				}; +			}; + +			vcc_3v0: LDO_REG8 { +				regulator-name = "vcc_3v0"; +				regulator-min-microvolt = <3000000>; +				regulator-max-microvolt = <3000000>; +				regulator-always-on; +				regulator-boot-on; + +				regulator-state-mem { +					regulator-on-in-suspend; +					regulator-suspend-microvolt = <3000000>; +				}; +			}; + +			vcc3v3_s3: vcc_lan: SWITCH_REG1 { +				regulator-name = "vcc3v3_s3"; +				regulator-always-on; +				regulator-boot-on; +				regulator-state-mem { +					regulator-off-in-suspend; +				}; +			}; + +			vcc3v3_s0: SWITCH_REG2 { +				regulator-name = "vcc3v3_s0"; +				regulator-always-on; +				regulator-boot-on; +				regulator-state-mem { +					regulator-off-in-suspend; +				}; +			}; +		}; +	}; + +	vdd_cpu_b: regulator@40 { +		compatible = "silergy,syr827"; +		reg = <0x40>; +		fcs,suspend-voltage-selector = <1>; +		regulator-name = "vdd_cpu_b"; +		pinctrl-names = "default"; +		pinctrl-0 = <&vsel1_pin>; +		regulator-min-microvolt = <712500>; +		regulator-max-microvolt = <1500000>; +		regulator-ramp-delay = <1000>; +		regulator-always-on; +		regulator-boot-on; +		vin-supply = <&vcc3v3_sys>; + +		regulator-state-mem { +			regulator-off-in-suspend; +		}; +	}; + +	vdd_gpu: regulator@41 { +		compatible = "silergy,syr828"; +		reg = <0x41>; +		fcs,suspend-voltage-selector = <1>; +		regulator-name = "vdd_gpu"; +		pinctrl-names = "default"; +		pinctrl-0 = <&vsel2_pin>; +		regulator-min-microvolt = <712500>; +		regulator-max-microvolt = <1500000>; +		regulator-ramp-delay = <1000>; +		regulator-always-on; +		regulator-boot-on; +		vin-supply = <&vcc3v3_sys>; + +		regulator-state-mem { +			regulator-off-in-suspend; +		}; +	}; +}; + +&i2c1 { +	i2c-scl-rising-time-ns = <300>; +	i2c-scl-falling-time-ns = <15>; +	status = "okay"; + +	rt5651: audio-codec@1a { +		compatible = "rockchip,rt5651"; +		reg = <0x1a>; +		clocks = <&cru SCLK_I2S_8CH_OUT>; +		clock-names = "mclk"; +		hp-det-gpio = <&gpio4 RK_PD4 GPIO_ACTIVE_LOW>; +		spk-con-gpio = <&gpio0 RK_PB3 GPIO_ACTIVE_HIGH>; +		#sound-dai-cells = <0>; +	}; + +}; + +&i2c3 { +	i2c-scl-rising-time-ns = <450>; +	i2c-scl-falling-time-ns = <15>; +	status = "okay"; +}; + +&i2c4 { +	i2c-scl-rising-time-ns = <600>; +	i2c-scl-falling-time-ns = <20>; +	status = "okay"; + +	fusb0: typec-portc@22 { +		compatible = "fcs,fusb302"; +		reg = <0x22>; +		interrupt-parent = <&gpio1>; +		interrupts = <RK_PA2 IRQ_TYPE_LEVEL_LOW>; +		pinctrl-names = "default"; +		pinctrl-0 = <&fusb0_int>; +		vbus-supply = <&vcc5v0_typec>; + +		ports { +			#address-cells = <1>; +			#size-cells = <0>; + +			port@0 { +				reg = <0>; +				usbc0_role_sw: endpoint@0 { +					remote-endpoint = <&dwc3_0_role_switch>; +				}; +			}; +		}; + +		connector { +			compatible = "usb-c-connector"; +			data-role = "dual"; +			label = "USB-C"; + +			ports { +				#address-cells = <1>; +				#size-cells = <0>; + +				port@0 { +					reg = <0>; + +					usbc_hs: endpoint { +						remote-endpoint = <&u2phy0_typec_hs>; +					}; +				}; + +				port@1 { +					reg = <1>; + +					usbc_ss: endpoint { +						remote-endpoint = <&tcphy0_typec_ss>; +					}; +				}; +			}; +		}; +	}; +}; + +&i2s1 { +	rockchip,playback-channels = <2>; +	rockchip,capture-channels = <2>; +	status = "okay"; +}; + +&i2s2 { +	status = "okay"; +}; + +&io_domains { +	status = "okay"; + +	audio-supply = <&vcca1v8_codec>; +	bt656-supply = <&vcc_3v0>; +	gpio1830-supply = <&vcc_3v0>; +	sdmmc-supply = <&vcc_sdio>; +}; + +&pmu_io_domains { +	status = "okay"; + +	pmu1830-supply = <&vcc_3v0>; +}; + +&pinctrl { +	buttons { +		pwrbtn: pwrbtn { +			rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>; +		}; +	}; + +	bt { +		bt_enable_h: bt-enable-h { +			rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>; +		}; + +		bt_host_wake_l: bt-host-wake-l { +			rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>; +		}; + +		bt_wake_l: bt-wake-l { +			rockchip,pins = <2 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>; +		}; +	}; + +	fusb302x { +		fusb0_int: fusb0-int { +			rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>; +		}; +	}; + +	lcd-panel { +		lcd_panel_reset: lcd-panel-reset { +			rockchip,pins = <4 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up>; +		}; +	}; + +	leds { +		work_led_pin: work-led-pin { +			rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>; +		}; + +		user_led_pin: user-led-pin { +			rockchip,pins = <0 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>; +		}; + +		heartbeat_led_pin: heartbeat-led-pin { +			rockchip,pins = <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>; +		}; + +		wlan_active_led_pin: wlan-led-pin { +			rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>; +		}; + +		bt_active_led_pin: bt-led-pin { +			rockchip,pins = <2 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>; +		}; + + +	}; + +	pmic { +		pmic_int_l: pmic-int-l { +			rockchip,pins = <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>; +		}; + +		vsel1_pin: vsel1-pin { +			rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>; +		}; + +		vsel2_pin: vsel2-pin { +			rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>; +		}; +	}; + +	rt5651 { +		rt5651_hpcon: rt5640-hpcon { +			rockchip,pins = <4 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>; +		}; +	}; + +	sdio-pwrseq { +		wifi_enable_h: wifi-enable-h { +			rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>; +		}; +	}; + +	usb-typec { +		vcc5v0_typec_en: vcc5v0_typec_en { +			rockchip,pins = <4 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>; +		}; +	}; + +	usb2 { +		vcc5v0_host3_en: vcc5v0-host3-en { +			rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>; +		}; + +		vcc5v0_host1_en: vcc5v0-host1-en { +			rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>; +		}; +	}; + +	wifi { +		wifi_host_wake_l: wifi-host-wake-l { +			rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>; +		}; +	}; +}; + +&pwm0 { +	status = "okay"; +}; + +&saradc { +	vref-supply = <&vcca1v8_s3>; +	status = "okay"; +}; + +&sdio0 { +	/* WiFi & BT combo module AMPAK AP6255 */ +	#address-cells = <1>; +	#size-cells = <0>; +	bus-width = <4>; +	clock-frequency = <50000000>; +	cap-sdio-irq; +	cap-sd-highspeed; +	keep-power-in-suspend; +	mmc-pwrseq = <&sdio_pwrseq>; +	non-removable; +	pinctrl-names = "default"; +	pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>; +	sd-uhs-sdr104; +	status = "okay"; + +	brcmf: wifi@1 { +		compatible = "brcm,bcm4329-fmac"; +		reg = <1>; +		interrupt-parent = <&gpio0>; +		interrupts = <RK_PA3 GPIO_ACTIVE_HIGH>; +		interrupt-names = "host-wake"; +		pinctrl-names = "default"; +		pinctrl-0 = <&wifi_host_wake_l>; +	}; +}; + +&sdmmc { +	bus-width = <4>; +	cap-mmc-highspeed; +	cap-sd-highspeed; +	cd-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>; +	disable-wp; +	max-frequency = <150000000>; +	pinctrl-names = "default"; +	pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_bus4>; +	status = "okay"; +}; + +&sdhci { +	bus-width = <8>; +	non-removable; +	status = "okay"; +}; + +&tcphy0 { +	status = "okay"; +}; + +&tcphy0_usb3 { +	orientation-switch; +	port { +		tcphy0_typec_ss: endpoint { +			remote-endpoint = <&usbc_ss>; +		}; +	}; +}; + +&tcphy1 { +	status = "okay"; +}; + +&tsadc { +	/* tshut mode 0:CRU 1:GPIO */ +	rockchip,hw-tshut-mode = <1>; +	/* tshut polarity 0:LOW 1:HIGH */ +	rockchip,hw-tshut-polarity = <1>; +	status = "okay"; +}; + +&u2phy0 { +	status = "okay"; + +	u2phy0_otg: otg-port { +		status = "okay"; +	}; + +	u2phy0_host: host-port { +		phy-supply = <&vcc5v0_host3>; +		status = "okay"; +	}; + +	port { +		u2phy0_typec_hs: endpoint { +			remote-endpoint = <&usbc_hs>; +		}; +	}; +}; + +&u2phy1 { +	status = "okay"; + +	u2phy1_otg: otg-port { +		status = "okay"; +	}; + +	u2phy1_host: host-port { +		phy-supply = <&vcc5v0_host3>; +		status = "okay"; +	}; +}; + +&uart0 { +	pinctrl-names = "default"; +	pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>; +	status = "okay"; + +	bluetooth { +		compatible = "brcm,bcm4345c5"; +		clocks = <&rk808 1>; +		clock-names = "lpo"; +		device-wakeup-gpios = <&gpio2 RK_PD2 GPIO_ACTIVE_HIGH>; +		host-wakeup-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_HIGH>; +		shutdown-gpios = <&gpio0 RK_PB1 GPIO_ACTIVE_HIGH>; +		max-speed = <1500000>; +		pinctrl-names = "default"; +		pinctrl-0 = <&bt_host_wake_l &bt_wake_l &bt_enable_h>; +		vbat-supply = <&vcc3v3_sys>; +		vddio-supply = <&vcc_1v8>; +	}; +}; + +&uart2 { +	status = "okay"; +}; + +&usb_host0_ehci { +	status = "okay"; +}; + +&usb_host0_ohci { +	status = "okay"; +}; + +&usb_host1_ehci { +	status = "okay"; +}; + +&usb_host1_ohci { +	status = "okay"; +}; + +&usbdrd3_0 { +	status = "okay"; +}; + +&usbdrd_dwc3_0 { +	status = "okay"; +	usb-role-switch; + +	port { +		#address-cells = <1>; +		#size-cells = <0>; +		dwc3_0_role_switch: endpoint@0 { +			reg = <0>; +			remote-endpoint = <&usbc0_role_sw>; +		}; +	}; +}; + +&usbdrd3_1 { +	status = "okay"; +}; + +&usbdrd_dwc3_1 { +	status = "okay"; +	dr_mode = "host"; +}; + +&vopb { +	status = "okay"; +}; + +&vopb_mmu { +	status = "okay"; +}; + +&vopl { +	status = "okay"; +}; + +&vopl_mmu { +	status = "okay"; +}; diff --git a/arch/arm/dts/rk3399-puma-haikou-u-boot.dtsi b/arch/arm/dts/rk3399-puma-haikou-u-boot.dtsi index e0476ab25c9..f8335c74a74 100644 --- a/arch/arm/dts/rk3399-puma-haikou-u-boot.dtsi +++ b/arch/arm/dts/rk3399-puma-haikou-u-boot.dtsi @@ -14,7 +14,7 @@  / {  	config { -		u-boot,spl-payload-offset = <0x40000>; /* @ 256KB */ +		u-boot,spl-payload-offset = <0x80000>; /* @ 512KB */  		u-boot,mmc-env-offset = <0x4000>;      /* @  16KB */  		u-boot,efi-partition-entries-offset = <0x200000>; /* 2MB */  		u-boot,boot-led = "module_led"; @@ -31,24 +31,6 @@  		spi5 = &spi5;  	}; -	/* -	 * The Qseven BIOS_DISABLE signal on the RK3399-Q7 keeps the on-module -	 * eMMC and SPI flash powered-down initially (in fact it keeps the -	 * reset signal asserted).  Even though it is an enable signal, we -	 * model this as a regulator. -	 */ -	bios_enable: bios_enable { -		compatible = "regulator-fixed"; -		u-boot,dm-pre-reloc; -		regulator-name = "bios_enable"; -		enable-active-high; -		gpio = <&gpio3 RK_PD5 GPIO_ACTIVE_LOW>; -		regulator-always-on; -		regulator-boot-on; -		regulator-min-microvolt = <1800000>; -		regulator-max-microvolt = <1800000>; -	}; -  	vdd_log: vdd-log {  		compatible = "pwm-regulator";  		pwms = <&pwm2 0 25000 1>; @@ -62,14 +44,69 @@  	};  }; +&binman { +	simple-bin { +		blob { +			offset = <((CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR - 64) * 512)>; +		}; +	}; + +#ifdef CONFIG_ROCKCHIP_SPI_IMAGE +	simple-bin-spi { +		blob { +			/* same as u-boot,spl-payload-offset */ +			offset = <0x80000>; +		}; +	}; +#endif +}; +  &gpio1 {  	u-boot,dm-pre-reloc;  };  &gpio3 {  	u-boot,dm-pre-reloc; + +	/* +	 * The Qseven BIOS_DISABLE signal on the RK3399-Q7 keeps the on-module +	 * eMMC and SPI flash powered-down initially (in fact it keeps the +	 * reset signal asserted). BIOS_DISABLE_OVERRIDE pin allows to re-enable +	 * eMMC and SPI after the SPL has been booted from SD Card. +	 */ +	bios_disable_override { +		u-boot,dm-pre-reloc; +		gpios = <RK_PD5 GPIO_ACTIVE_LOW>; +		output-high; +		line-name = "bios_disable_override"; +		gpio-hog; +	}; +}; + +&gpio4 { +	u-boot,dm-pre-reloc;  };  &norflash {  	u-boot,dm-pre-reloc;  }; + +&pcfg_pull_none { +	u-boot,dm-pre-reloc; +}; + +&pcfg_pull_up { +	u-boot,dm-pre-reloc; +}; + +&sdmmc_bus4 { +	u-boot,dm-pre-reloc; +}; + +&sdmmc_clk { +	u-boot,dm-pre-reloc; +}; + +&sdmmc_cmd { +	u-boot,dm-pre-reloc; +}; diff --git a/arch/arm/dts/rk3566.dtsi b/arch/arm/dts/rk3566.dtsi new file mode 100644 index 00000000000..6c4b17d27bd --- /dev/null +++ b/arch/arm/dts/rk3566.dtsi @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) + +#include "rk356x.dtsi" + +/ { +	compatible = "rockchip,rk3566"; +}; + +&pipegrf { +	compatible = "rockchip,rk3566-pipe-grf", "syscon"; +}; + +&power { +	power-domain@RK3568_PD_PIPE { +		reg = <RK3568_PD_PIPE>; +		clocks = <&cru PCLK_PIPE>; +		pm_qos = <&qos_pcie2x1>, +			 <&qos_sata1>, +			 <&qos_sata2>, +			 <&qos_usb3_0>, +			 <&qos_usb3_1>; +		#power-domain-cells = <0>; +	}; +}; + +&usb_host0_xhci { +	phys = <&usb2phy0_otg>; +	phy-names = "usb2-phy"; +	extcon = <&usb2phy0>; +	maximum-speed = "high-speed"; +}; + +&vop { +	compatible = "rockchip,rk3566-vop"; +}; diff --git a/arch/arm/dts/rk3568-evb-u-boot.dtsi b/arch/arm/dts/rk3568-evb-u-boot.dtsi index b03cbeaedf9..17503d3d275 100644 --- a/arch/arm/dts/rk3568-evb-u-boot.dtsi +++ b/arch/arm/dts/rk3568-evb-u-boot.dtsi @@ -3,7 +3,7 @@   * (C) Copyright 2021 Rockchip Electronics Co., Ltd   */ -#include "rk3568-u-boot.dtsi" +#include "rk356x-u-boot.dtsi"  / {  	chosen { diff --git a/arch/arm/dts/rk3568-pinctrl.dtsi b/arch/arm/dts/rk3568-pinctrl.dtsi index a588ca95ace..8f90c66dd9e 100644 --- a/arch/arm/dts/rk3568-pinctrl.dtsi +++ b/arch/arm/dts/rk3568-pinctrl.dtsi @@ -3108,4 +3108,13 @@  				<4 RK_PA0 3 &pcfg_pull_none_drv_level_2>;  		};  	}; + +	tsadc { +		/omit-if-no-ref/ +		tsadc_pin: tsadc-pin { +			rockchip,pins = +				/* tsadc_pin */ +				<0 RK_PA1 0 &pcfg_pull_none>; +		}; +	};  }; diff --git a/arch/arm/dts/rk3568.dtsi b/arch/arm/dts/rk3568.dtsi index 12a071e6790..2bdf8c7e976 100644 --- a/arch/arm/dts/rk3568.dtsi +++ b/arch/arm/dts/rk3568.dtsi @@ -3,777 +3,141 @@   * Copyright (c) 2021 Rockchip Electronics Co., Ltd.   */ -#include <dt-bindings/clock/rk3568-cru.h> -#include <dt-bindings/interrupt-controller/arm-gic.h> -#include <dt-bindings/interrupt-controller/irq.h> -#include <dt-bindings/phy/phy.h> -#include <dt-bindings/pinctrl/rockchip.h> -#include <dt-bindings/soc/rockchip,boot-mode.h> -#include <dt-bindings/thermal/thermal.h> +#include "rk356x.dtsi"  / {  	compatible = "rockchip,rk3568"; -	interrupt-parent = <&gic>; -	#address-cells = <2>; -	#size-cells = <2>; - -	aliases { -		gpio0 = &gpio0; -		gpio1 = &gpio1; -		gpio2 = &gpio2; -		gpio3 = &gpio3; -		gpio4 = &gpio4; -		i2c0 = &i2c0; -		i2c1 = &i2c1; -		i2c2 = &i2c2; -		i2c3 = &i2c3; -		i2c4 = &i2c4; -		i2c5 = &i2c5; -		serial0 = &uart0; -		serial1 = &uart1; -		serial2 = &uart2; -		serial3 = &uart3; -		serial4 = &uart4; -		serial5 = &uart5; -		serial6 = &uart6; -		serial7 = &uart7; -		serial8 = &uart8; -		serial9 = &uart9; -	}; - -	cpus { -		#address-cells = <2>; -		#size-cells = <0>; - -		cpu0: cpu@0 { -			device_type = "cpu"; -			compatible = "arm,cortex-a55"; -			reg = <0x0 0x0>; -			clocks = <&scmi_clk 0>; -			enable-method = "psci"; -			operating-points-v2 = <&cpu0_opp_table>; -		}; - -		cpu1: cpu@100 { -			device_type = "cpu"; -			compatible = "arm,cortex-a55"; -			reg = <0x0 0x100>; -			enable-method = "psci"; -			operating-points-v2 = <&cpu0_opp_table>; -		}; - -		cpu2: cpu@200 { -			device_type = "cpu"; -			compatible = "arm,cortex-a55"; -			reg = <0x0 0x200>; -			enable-method = "psci"; -			operating-points-v2 = <&cpu0_opp_table>; -		}; - -		cpu3: cpu@300 { -			device_type = "cpu"; -			compatible = "arm,cortex-a55"; -			reg = <0x0 0x300>; -			enable-method = "psci"; -			operating-points-v2 = <&cpu0_opp_table>; -		}; -	}; - -	cpu0_opp_table: cpu0-opp-table { -		compatible = "operating-points-v2"; -		opp-shared; - -		opp-408000000 { -			opp-hz = /bits/ 64 <408000000>; -			opp-microvolt = <900000 900000 1150000>; -			clock-latency-ns = <40000>; -		}; - -		opp-600000000 { -			opp-hz = /bits/ 64 <600000000>; -			opp-microvolt = <900000 900000 1150000>; -		}; - -		opp-816000000 { -			opp-hz = /bits/ 64 <816000000>; -			opp-microvolt = <900000 900000 1150000>; -			opp-suspend; -		}; - -		opp-1104000000 { -			opp-hz = /bits/ 64 <1104000000>; -			opp-microvolt = <900000 900000 1150000>; -		}; - -		opp-1416000000 { -			opp-hz = /bits/ 64 <1416000000>; -			opp-microvolt = <900000 900000 1150000>; -		}; - -		opp-1608000000 { -			opp-hz = /bits/ 64 <1608000000>; -			opp-microvolt = <975000 975000 1150000>; -		}; - -		opp-1800000000 { -			opp-hz = /bits/ 64 <1800000000>; -			opp-microvolt = <1050000 1050000 1150000>; -		}; - -		opp-1992000000 { -			opp-hz = /bits/ 64 <1992000000>; -			opp-microvolt = <1150000 1150000 1150000>; -		}; -	}; - -	firmware { -		scmi: scmi { -			compatible = "arm,scmi-smc"; -			arm,smc-id = <0x82000010>; -			shmem = <&scmi_shmem>; -			#address-cells = <1>; -			#size-cells = <0>; - -			scmi_clk: protocol@14 { -				reg = <0x14>; -				#clock-cells = <1>; -			}; -		}; - -	}; - -	pmu { -		compatible = "arm,cortex-a55-pmu"; -		interrupts = <GIC_SPI 228 IRQ_TYPE_LEVEL_HIGH>, -			     <GIC_SPI 229 IRQ_TYPE_LEVEL_HIGH>, -			     <GIC_SPI 230 IRQ_TYPE_LEVEL_HIGH>, -			     <GIC_SPI 231 IRQ_TYPE_LEVEL_HIGH>; -		interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>; -	}; - -	psci { -		compatible = "arm,psci-1.0"; -		method = "smc"; -	}; - -	timer { -		compatible = "arm,armv8-timer"; -		interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>, -			     <GIC_PPI 14 IRQ_TYPE_LEVEL_HIGH>, -			     <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>, -			     <GIC_PPI 10 IRQ_TYPE_LEVEL_HIGH>; -		arm,no-tick-in-suspend; -	}; - -	xin24m: xin24m { -		compatible = "fixed-clock"; -		clock-frequency = <24000000>; -		clock-output-names = "xin24m"; -		#clock-cells = <0>; -	}; - -	xin32k: xin32k { -		compatible = "fixed-clock"; -		clock-frequency = <32768>; -		clock-output-names = "xin32k"; -		pinctrl-0 = <&clk32k_out0>; -		pinctrl-names = "default"; -		#clock-cells = <0>; -	}; - -	sram@10f000 { -		compatible = "mmio-sram"; -		reg = <0x0 0x0010f000 0x0 0x100>; - -		#address-cells = <1>; -		#size-cells = <1>; -		ranges = <0 0x0 0x0010f000 0x100>; - -		scmi_shmem: sram@0 { -			compatible = "arm,scmi-shmem"; -			reg = <0x0 0x100>; -		}; -	}; - -	gic: interrupt-controller@fd400000 { -		compatible = "arm,gic-v3"; -		reg = <0x0 0xfd400000 0 0x10000>, /* GICD */ -		      <0x0 0xfd460000 0 0x80000>; /* GICR */ -		interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>; -		interrupt-controller; -		#interrupt-cells = <3>; -		mbi-alias = <0x0 0xfd100000>; -		mbi-ranges = <296 24>; -		msi-controller; -	}; - -	pmugrf: syscon@fdc20000 { -		compatible = "rockchip,rk3568-pmugrf", "syscon", "simple-mfd"; -		reg = <0x0 0xfdc20000 0x0 0x10000>; -	}; - -	grf: syscon@fdc60000 { -		compatible = "rockchip,rk3568-grf", "syscon", "simple-mfd"; -		reg = <0x0 0xfdc60000 0x0 0x10000>; -	}; - -	pmucru: clock-controller@fdd00000 { -		compatible = "rockchip,rk3568-pmucru"; -		reg = <0x0 0xfdd00000 0x0 0x1000>; -		#clock-cells = <1>; -		#reset-cells = <1>; -	}; - -	cru: clock-controller@fdd20000 { -		compatible = "rockchip,rk3568-cru"; -		reg = <0x0 0xfdd20000 0x0 0x1000>; -		#clock-cells = <1>; -		#reset-cells = <1>; -	}; - -	i2c0: i2c@fdd40000 { -		compatible = "rockchip,rk3568-i2c", "rockchip,rk3399-i2c"; -		reg = <0x0 0xfdd40000 0x0 0x1000>; -		interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>; -		clocks = <&pmucru CLK_I2C0>, <&pmucru PCLK_I2C0>; -		clock-names = "i2c", "pclk"; -		pinctrl-0 = <&i2c0_xfer>; -		pinctrl-names = "default"; -		#address-cells = <1>; -		#size-cells = <0>; +	sata0: sata@fc000000 { +		compatible = "rockchip,rk3568-dwc-ahci", "snps,dwc-ahci"; +		reg = <0 0xfc000000 0 0x1000>; +		clocks = <&cru ACLK_SATA0>, <&cru CLK_SATA0_PMALIVE>, +			 <&cru CLK_SATA0_RXOOB>; +		clock-names = "sata", "pmalive", "rxoob"; +		interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>; +		phys = <&combphy0 PHY_TYPE_SATA>; +		phy-names = "sata-phy"; +		ports-implemented = <0x1>; +		power-domains = <&power RK3568_PD_PIPE>;  		status = "disabled";  	}; -	uart0: serial@fdd50000 { -		compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart"; -		reg = <0x0 0xfdd50000 0x0 0x100>; -		interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>; -		clocks = <&pmucru SCLK_UART0>, <&pmucru PCLK_UART0>; -		clock-names = "baudclk", "apb_pclk"; -		dmas = <&dmac0 0>, <&dmac0 1>; -		pinctrl-0 = <&uart0_xfer>; -		pinctrl-names = "default"; -		reg-io-width = <4>; -		reg-shift = <2>; -		status = "disabled"; +	pipe_phy_grf0: syscon@fdc70000 { +		compatible = "rockchip,rk3568-pipe-phy-grf", "syscon"; +		reg = <0x0 0xfdc70000 0x0 0x1000>;  	}; -	pwm0: pwm@fdd70000 { -		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; -		reg = <0x0 0xfdd70000 0x0 0x10>; -		clocks = <&pmucru CLK_PWM0>, <&pmucru PCLK_PWM0>; -		clock-names = "pwm", "pclk"; -		pinctrl-0 = <&pwm0m0_pins>; -		pinctrl-names = "active"; -		#pwm-cells = <3>; -		status = "disabled"; +	qos_pcie3x1: qos@fe190080 { +		compatible = "rockchip,rk3568-qos", "syscon"; +		reg = <0x0 0xfe190080 0x0 0x20>;  	}; -	pwm1: pwm@fdd70010 { -		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; -		reg = <0x0 0xfdd70010 0x0 0x10>; -		clocks = <&pmucru CLK_PWM0>, <&pmucru PCLK_PWM0>; -		clock-names = "pwm", "pclk"; -		pinctrl-0 = <&pwm1m0_pins>; -		pinctrl-names = "active"; -		#pwm-cells = <3>; -		status = "disabled"; +	qos_pcie3x2: qos@fe190100 { +		compatible = "rockchip,rk3568-qos", "syscon"; +		reg = <0x0 0xfe190100 0x0 0x20>;  	}; -	pwm2: pwm@fdd70020 { -		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; -		reg = <0x0 0xfdd70020 0x0 0x10>; -		clocks = <&pmucru CLK_PWM0>, <&pmucru PCLK_PWM0>; -		clock-names = "pwm", "pclk"; -		pinctrl-0 = <&pwm2m0_pins>; -		pinctrl-names = "active"; -		#pwm-cells = <3>; -		status = "disabled"; +	qos_sata0: qos@fe190200 { +		compatible = "rockchip,rk3568-qos", "syscon"; +		reg = <0x0 0xfe190200 0x0 0x20>;  	}; -	pwm3: pwm@fdd70030 { -		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; -		reg = <0x0 0xfdd70030 0x0 0x10>; -		clocks = <&pmucru CLK_PWM0>, <&pmucru PCLK_PWM0>; -		clock-names = "pwm", "pclk"; -		pinctrl-0 = <&pwm3_pins>; -		pinctrl-names = "active"; -		#pwm-cells = <3>; -		status = "disabled"; -	}; - -	sdmmc2: mmc@fe000000 { -		compatible = "rockchip,rk3568-dw-mshc", "rockchip,rk3288-dw-mshc"; -		reg = <0x0 0xfe000000 0x0 0x4000>; -		interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>; -		clocks = <&cru HCLK_SDMMC2>, <&cru CLK_SDMMC2>, -			 <&cru SCLK_SDMMC2_DRV>, <&cru SCLK_SDMMC2_SAMPLE>; -		clock-names = "biu", "ciu", "ciu-drive", "ciu-sample"; -		fifo-depth = <0x100>; -		max-frequency = <150000000>; -		resets = <&cru SRST_SDMMC2>; -		reset-names = "reset"; -		status = "disabled"; -	}; - -	sdmmc0: mmc@fe2b0000 { -		compatible = "rockchip,rk3568-dw-mshc", "rockchip,rk3288-dw-mshc"; -		reg = <0x0 0xfe2b0000 0x0 0x4000>; -		interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; -		clocks = <&cru HCLK_SDMMC0>, <&cru CLK_SDMMC0>, -			 <&cru SCLK_SDMMC0_DRV>, <&cru SCLK_SDMMC0_SAMPLE>; -		clock-names = "biu", "ciu", "ciu-drive", "ciu-sample"; -		fifo-depth = <0x100>; -		max-frequency = <150000000>; -		resets = <&cru SRST_SDMMC0>; -		reset-names = "reset"; -		status = "disabled"; -	}; - -	sdmmc1: mmc@fe2c0000 { -		compatible = "rockchip,rk3568-dw-mshc", "rockchip,rk3288-dw-mshc"; -		reg = <0x0 0xfe2c0000 0x0 0x4000>; -		interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>; -		clocks = <&cru HCLK_SDMMC1>, <&cru CLK_SDMMC1>, -			 <&cru SCLK_SDMMC1_DRV>, <&cru SCLK_SDMMC1_SAMPLE>; -		clock-names = "biu", "ciu", "ciu-drive", "ciu-sample"; -		fifo-depth = <0x100>; -		max-frequency = <150000000>; -		resets = <&cru SRST_SDMMC1>; -		reset-names = "reset"; -		status = "disabled"; -	}; - -	sdhci: mmc@fe310000 { -		compatible = "rockchip,rk3568-dwcmshc"; -		reg = <0x0 0xfe310000 0x0 0x10000>; -		interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>; -		assigned-clocks = <&cru BCLK_EMMC>, <&cru TCLK_EMMC>; -		assigned-clock-rates = <200000000>, <24000000>; -		clocks = <&cru CCLK_EMMC>, <&cru HCLK_EMMC>, -			 <&cru ACLK_EMMC>, <&cru BCLK_EMMC>, -			 <&cru TCLK_EMMC>; -		clock-names = "core", "bus", "axi", "block", "timer"; -		status = "disabled"; -	}; - -	dmac0: dmac@fe530000 { -		compatible = "arm,pl330", "arm,primecell"; -		reg = <0x0 0xfe530000 0x0 0x4000>; -		interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>, -			     <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>; -		arm,pl330-periph-burst; -		clocks = <&cru ACLK_BUS>; -		clock-names = "apb_pclk"; -		#dma-cells = <1>; -	}; - -	dmac1: dmac@fe550000 { -		compatible = "arm,pl330", "arm,primecell"; -		reg = <0x0 0xfe550000 0x0 0x4000>; -		interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>, -			     <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>; -		arm,pl330-periph-burst; -		clocks = <&cru ACLK_BUS>; -		clock-names = "apb_pclk"; -		#dma-cells = <1>; -	}; - -	i2c1: i2c@fe5a0000 { -		compatible = "rockchip,rk3568-i2c", "rockchip,rk3399-i2c"; -		reg = <0x0 0xfe5a0000 0x0 0x1000>; -		interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>; -		clocks = <&cru CLK_I2C1>, <&cru PCLK_I2C1>; -		clock-names = "i2c", "pclk"; -		pinctrl-0 = <&i2c1_xfer>; -		pinctrl-names = "default"; -		#address-cells = <1>; -		#size-cells = <0>; -		status = "disabled"; -	}; - -	i2c2: i2c@fe5b0000 { -		compatible = "rockchip,rk3568-i2c", "rockchip,rk3399-i2c"; -		reg = <0x0 0xfe5b0000 0x0 0x1000>; -		interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>; -		clocks = <&cru CLK_I2C2>, <&cru PCLK_I2C2>; -		clock-names = "i2c", "pclk"; -		pinctrl-0 = <&i2c2m0_xfer>; -		pinctrl-names = "default"; -		#address-cells = <1>; -		#size-cells = <0>; -		status = "disabled"; -	}; - -	i2c3: i2c@fe5c0000 { -		compatible = "rockchip,rk3568-i2c", "rockchip,rk3399-i2c"; -		reg = <0x0 0xfe5c0000 0x0 0x1000>; -		interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>; -		clocks = <&cru CLK_I2C3>, <&cru PCLK_I2C3>; -		clock-names = "i2c", "pclk"; -		pinctrl-0 = <&i2c3m0_xfer>; -		pinctrl-names = "default"; -		#address-cells = <1>; -		#size-cells = <0>; -		status = "disabled"; -	}; - -	i2c4: i2c@fe5d0000 { -		compatible = "rockchip,rk3568-i2c", "rockchip,rk3399-i2c"; -		reg = <0x0 0xfe5d0000 0x0 0x1000>; -		interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>; -		clocks = <&cru CLK_I2C4>, <&cru PCLK_I2C4>; -		clock-names = "i2c", "pclk"; -		pinctrl-0 = <&i2c4m0_xfer>; -		pinctrl-names = "default"; -		#address-cells = <1>; -		#size-cells = <0>; -		status = "disabled"; -	}; - -	i2c5: i2c@fe5e0000 { -		compatible = "rockchip,rk3568-i2c", "rockchip,rk3399-i2c"; -		reg = <0x0 0xfe5e0000 0x0 0x1000>; -		interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>; -		clocks = <&cru CLK_I2C5>, <&cru PCLK_I2C5>; -		clock-names = "i2c", "pclk"; -		pinctrl-0 = <&i2c5m0_xfer>; -		pinctrl-names = "default"; -		#address-cells = <1>; -		#size-cells = <0>; -		status = "disabled"; -	}; - -	wdt: watchdog@fe600000 { -		compatible = "rockchip,rk3568-wdt", "snps,dw-wdt"; -		reg = <0x0 0xfe600000 0x0 0x100>; -		interrupts = <GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH>; -		clocks = <&cru TCLK_WDT_NS>, <&cru PCLK_WDT_NS>; -		clock-names = "tclk", "pclk"; -	}; - -	uart1: serial@fe650000 { -		compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart"; -		reg = <0x0 0xfe650000 0x0 0x100>; -		interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>; -		clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>; -		clock-names = "baudclk", "apb_pclk"; -		dmas = <&dmac0 2>, <&dmac0 3>; -		pinctrl-0 = <&uart1m0_xfer>; -		pinctrl-names = "default"; -		reg-io-width = <4>; -		reg-shift = <2>; -		status = "disabled"; -	}; - -	uart2: serial@fe660000 { -		compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart"; -		reg = <0x0 0xfe660000 0x0 0x100>; -		interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>; -		clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>; -		clock-names = "baudclk", "apb_pclk"; -		dmas = <&dmac0 4>, <&dmac0 5>; -		pinctrl-0 = <&uart2m0_xfer>; -		pinctrl-names = "default"; -		reg-io-width = <4>; -		reg-shift = <2>; -		status = "disabled"; -	}; - -	uart3: serial@fe670000 { -		compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart"; -		reg = <0x0 0xfe670000 0x0 0x100>; -		interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>; -		clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>; -		clock-names = "baudclk", "apb_pclk"; -		dmas = <&dmac0 6>, <&dmac0 7>; -		pinctrl-0 = <&uart3m0_xfer>; -		pinctrl-names = "default"; -		reg-io-width = <4>; -		reg-shift = <2>; -		status = "disabled"; -	}; - -	uart4: serial@fe680000 { -		compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart"; -		reg = <0x0 0xfe680000 0x0 0x100>; -		interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>; -		clocks = <&cru SCLK_UART4>, <&cru PCLK_UART4>; -		clock-names = "baudclk", "apb_pclk"; -		dmas = <&dmac0 8>, <&dmac0 9>; -		pinctrl-0 = <&uart4m0_xfer>; -		pinctrl-names = "default"; -		reg-io-width = <4>; -		reg-shift = <2>; -		status = "disabled"; -	}; - -	uart5: serial@fe690000 { -		compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart"; -		reg = <0x0 0xfe690000 0x0 0x100>; -		interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>; -		clocks = <&cru SCLK_UART5>, <&cru PCLK_UART5>; -		clock-names = "baudclk", "apb_pclk"; -		dmas = <&dmac0 10>, <&dmac0 11>; -		pinctrl-0 = <&uart5m0_xfer>; -		pinctrl-names = "default"; -		reg-io-width = <4>; -		reg-shift = <2>; -		status = "disabled"; -	}; - -	uart6: serial@fe6a0000 { -		compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart"; -		reg = <0x0 0xfe6a0000 0x0 0x100>; -		interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>; -		clocks = <&cru SCLK_UART6>, <&cru PCLK_UART6>; -		clock-names = "baudclk", "apb_pclk"; -		dmas = <&dmac0 12>, <&dmac0 13>; -		pinctrl-0 = <&uart6m0_xfer>; -		pinctrl-names = "default"; -		reg-io-width = <4>; -		reg-shift = <2>; -		status = "disabled"; -	}; - -	uart7: serial@fe6b0000 { -		compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart"; -		reg = <0x0 0xfe6b0000 0x0 0x100>; -		interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>; -		clocks = <&cru SCLK_UART7>, <&cru PCLK_UART7>; -		clock-names = "baudclk", "apb_pclk"; -		dmas = <&dmac0 14>, <&dmac0 15>; -		pinctrl-0 = <&uart7m0_xfer>; -		pinctrl-names = "default"; -		reg-io-width = <4>; -		reg-shift = <2>; -		status = "disabled"; -	}; - -	uart8: serial@fe6c0000 { -		compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart"; -		reg = <0x0 0xfe6c0000 0x0 0x100>; -		interrupts = <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>; -		clocks = <&cru SCLK_UART8>, <&cru PCLK_UART8>; -		clock-names = "baudclk", "apb_pclk"; -		dmas = <&dmac0 16>, <&dmac0 17>; -		pinctrl-0 = <&uart8m0_xfer>; -		pinctrl-names = "default"; -		reg-io-width = <4>; -		reg-shift = <2>; -		status = "disabled"; -	}; - -	uart9: serial@fe6d0000 { -		compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart"; -		reg = <0x0 0xfe6d0000 0x0 0x100>; -		interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>; -		clocks = <&cru SCLK_UART9>, <&cru PCLK_UART9>; -		clock-names = "baudclk", "apb_pclk"; -		dmas = <&dmac0 18>, <&dmac0 19>; -		pinctrl-0 = <&uart9m0_xfer>; -		pinctrl-names = "default"; -		reg-io-width = <4>; -		reg-shift = <2>; -		status = "disabled"; -	}; - -	pwm4: pwm@fe6e0000 { -		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; -		reg = <0x0 0xfe6e0000 0x0 0x10>; -		clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>; -		clock-names = "pwm", "pclk"; -		pinctrl-0 = <&pwm4_pins>; -		pinctrl-names = "active"; -		#pwm-cells = <3>; -		status = "disabled"; -	}; - -	pwm5: pwm@fe6e0010 { -		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; -		reg = <0x0 0xfe6e0010 0x0 0x10>; -		clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>; -		clock-names = "pwm", "pclk"; -		pinctrl-0 = <&pwm5_pins>; -		pinctrl-names = "active"; -		#pwm-cells = <3>; -		status = "disabled"; -	}; - -	pwm6: pwm@fe6e0020 { -		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; -		reg = <0x0 0xfe6e0020 0x0 0x10>; -		clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>; -		clock-names = "pwm", "pclk"; -		pinctrl-0 = <&pwm6_pins>; -		pinctrl-names = "active"; -		#pwm-cells = <3>; -		status = "disabled"; -	}; - -	pwm7: pwm@fe6e0030 { -		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; -		reg = <0x0 0xfe6e0030 0x0 0x10>; -		clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>; -		clock-names = "pwm", "pclk"; -		pinctrl-0 = <&pwm7_pins>; -		pinctrl-names = "active"; -		#pwm-cells = <3>; +	gmac0: ethernet@fe2a0000 { +		compatible = "rockchip,rk3568-gmac", "snps,dwmac-4.20a"; +		reg = <0x0 0xfe2a0000 0x0 0x10000>; +		interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>, +			     <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>; +		interrupt-names = "macirq", "eth_wake_irq"; +		clocks = <&cru SCLK_GMAC0>, <&cru SCLK_GMAC0_RX_TX>, +			 <&cru SCLK_GMAC0_RX_TX>, <&cru CLK_MAC0_REFOUT>, +			 <&cru ACLK_GMAC0>, <&cru PCLK_GMAC0>, +			 <&cru SCLK_GMAC0_RX_TX>, <&cru CLK_GMAC0_PTP_REF>; +		clock-names = "stmmaceth", "mac_clk_rx", +			      "mac_clk_tx", "clk_mac_refout", +			      "aclk_mac", "pclk_mac", +			      "clk_mac_speed", "ptp_ref"; +		resets = <&cru SRST_A_GMAC0>; +		reset-names = "stmmaceth"; +		rockchip,grf = <&grf>; +		snps,axi-config = <&gmac0_stmmac_axi_setup>; +		snps,mixed-burst; +		snps,mtl-rx-config = <&gmac0_mtl_rx_setup>; +		snps,mtl-tx-config = <&gmac0_mtl_tx_setup>; +		snps,tso;  		status = "disabled"; -	}; -	pwm8: pwm@fe6f0000 { -		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; -		reg = <0x0 0xfe6f0000 0x0 0x10>; -		clocks = <&cru CLK_PWM2>, <&cru PCLK_PWM2>; -		clock-names = "pwm", "pclk"; -		pinctrl-0 = <&pwm8m0_pins>; -		pinctrl-names = "active"; -		#pwm-cells = <3>; -		status = "disabled"; -	}; +		mdio0: mdio { +			compatible = "snps,dwmac-mdio"; +			#address-cells = <0x1>; +			#size-cells = <0x0>; +		}; -	pwm9: pwm@fe6f0010 { -		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; -		reg = <0x0 0xfe6f0010 0x0 0x10>; -		clocks = <&cru CLK_PWM2>, <&cru PCLK_PWM2>; -		clock-names = "pwm", "pclk"; -		pinctrl-0 = <&pwm9m0_pins>; -		pinctrl-names = "active"; -		#pwm-cells = <3>; -		status = "disabled"; -	}; +		gmac0_stmmac_axi_setup: stmmac-axi-config { +			snps,blen = <0 0 0 0 16 8 4>; +			snps,rd_osr_lmt = <8>; +			snps,wr_osr_lmt = <4>; +		}; -	pwm10: pwm@fe6f0020 { -		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; -		reg = <0x0 0xfe6f0020 0x0 0x10>; -		clocks = <&cru CLK_PWM2>, <&cru PCLK_PWM2>; -		clock-names = "pwm", "pclk"; -		pinctrl-0 = <&pwm10m0_pins>; -		pinctrl-names = "active"; -		#pwm-cells = <3>; -		status = "disabled"; -	}; +		gmac0_mtl_rx_setup: rx-queues-config { +			snps,rx-queues-to-use = <1>; +			queue0 {}; +		}; -	pwm11: pwm@fe6f0030 { -		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; -		reg = <0x0 0xfe6f0030 0x0 0x10>; -		clocks = <&cru CLK_PWM2>, <&cru PCLK_PWM2>; -		clock-names = "pwm", "pclk"; -		pinctrl-0 = <&pwm11m0_pins>; -		pinctrl-names = "active"; -		#pwm-cells = <3>; -		status = "disabled"; +		gmac0_mtl_tx_setup: tx-queues-config { +			snps,tx-queues-to-use = <1>; +			queue0 {}; +		};  	}; -	pwm12: pwm@fe700000 { -		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; -		reg = <0x0 0xfe700000 0x0 0x10>; -		clocks = <&cru CLK_PWM3>, <&cru PCLK_PWM3>; -		clock-names = "pwm", "pclk"; -		pinctrl-0 = <&pwm12m0_pins>; -		pinctrl-names = "active"; -		#pwm-cells = <3>; +	combphy0: phy@fe820000 { +		compatible = "rockchip,rk3568-naneng-combphy"; +		reg = <0x0 0xfe820000 0x0 0x100>; +		clocks = <&pmucru CLK_PCIEPHY0_REF>, +			 <&cru PCLK_PIPEPHY0>, +			 <&cru PCLK_PIPE>; +		clock-names = "ref", "apb", "pipe"; +		assigned-clocks = <&pmucru CLK_PCIEPHY0_REF>; +		assigned-clock-rates = <100000000>; +		resets = <&cru SRST_PIPEPHY0>; +		rockchip,pipe-grf = <&pipegrf>; +		rockchip,pipe-phy-grf = <&pipe_phy_grf0>; +		#phy-cells = <1>;  		status = "disabled";  	}; +}; -	pwm13: pwm@fe700010 { -		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; -		reg = <0x0 0xfe700010 0x0 0x10>; -		clocks = <&cru CLK_PWM3>, <&cru PCLK_PWM3>; -		clock-names = "pwm", "pclk"; -		pinctrl-0 = <&pwm13m0_pins>; -		pinctrl-names = "active"; -		#pwm-cells = <3>; -		status = "disabled"; +&cpu0_opp_table { +	opp-1992000000 { +		opp-hz = /bits/ 64 <1992000000>; +		opp-microvolt = <1150000 1150000 1150000>;  	}; +}; -	pwm14: pwm@fe700020 { -		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; -		reg = <0x0 0xfe700020 0x0 0x10>; -		clocks = <&cru CLK_PWM3>, <&cru PCLK_PWM3>; -		clock-names = "pwm", "pclk"; -		pinctrl-0 = <&pwm14m0_pins>; -		pinctrl-names = "active"; -		#pwm-cells = <3>; -		status = "disabled"; -	}; +&pipegrf { +	compatible = "rockchip,rk3568-pipe-grf", "syscon"; +}; -	pwm15: pwm@fe700030 { -		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; -		reg = <0x0 0xfe700030 0x0 0x10>; -		clocks = <&cru CLK_PWM3>, <&cru PCLK_PWM3>; -		clock-names = "pwm", "pclk"; -		pinctrl-0 = <&pwm15m0_pins>; -		pinctrl-names = "active"; -		#pwm-cells = <3>; -		status = "disabled"; +&power { +	power-domain@RK3568_PD_PIPE { +		reg = <RK3568_PD_PIPE>; +		clocks = <&cru PCLK_PIPE>; +		pm_qos = <&qos_pcie2x1>, +			 <&qos_pcie3x1>, +			 <&qos_pcie3x2>, +			 <&qos_sata0>, +			 <&qos_sata1>, +			 <&qos_sata2>, +			 <&qos_usb3_0>, +			 <&qos_usb3_1>; +		#power-domain-cells = <0>;  	}; +}; -	pinctrl: pinctrl { -		compatible = "rockchip,rk3568-pinctrl"; -		rockchip,grf = <&grf>; -		rockchip,pmu = <&pmugrf>; -		#address-cells = <2>; -		#size-cells = <2>; -		ranges; - -		gpio0: gpio@fdd60000 { -			compatible = "rockchip,gpio-bank"; -			reg = <0x0 0xfdd60000 0x0 0x100>; -			interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>; -			clocks = <&pmucru PCLK_GPIO0>, <&pmucru DBCLK_GPIO0>; -			gpio-controller; -			#gpio-cells = <2>; -			interrupt-controller; -			#interrupt-cells = <2>; -		}; - -		gpio1: gpio@fe740000 { -			compatible = "rockchip,gpio-bank"; -			reg = <0x0 0xfe740000 0x0 0x100>; -			interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>; -			clocks = <&cru PCLK_GPIO1>, <&cru DBCLK_GPIO1>; -			gpio-controller; -			#gpio-cells = <2>; -			interrupt-controller; -			#interrupt-cells = <2>; -		}; - -		gpio2: gpio@fe750000 { -			compatible = "rockchip,gpio-bank"; -			reg = <0x0 0xfe750000 0x0 0x100>; -			interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>; -			clocks = <&cru PCLK_GPIO2>, <&cru DBCLK_GPIO2>; -			gpio-controller; -			#gpio-cells = <2>; -			interrupt-controller; -			#interrupt-cells = <2>; -		}; - -		gpio3: gpio@fe760000 { -			compatible = "rockchip,gpio-bank"; -			reg = <0x0 0xfe760000 0x0 0x100>; -			interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>; -			clocks = <&cru PCLK_GPIO3>, <&cru DBCLK_GPIO3>; -			gpio-controller; -			#gpio-cells = <2>; -			interrupt-controller; -			#interrupt-cells = <2>; -		}; - -		gpio4: gpio@fe770000 { -			compatible = "rockchip,gpio-bank"; -			reg = <0x0 0xfe770000 0x0 0x100>; -			interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>; -			clocks = <&cru PCLK_GPIO4>, <&cru DBCLK_GPIO4>; -			gpio-controller; -			#gpio-cells = <2>; -			interrupt-controller; -			#interrupt-cells = <2>; -		}; -	}; +&usb_host0_xhci { +	phys = <&usb2phy0_otg>, <&combphy0 PHY_TYPE_USB3>; +	phy-names = "usb2-phy", "usb3-phy";  }; -#include "rk3568-pinctrl.dtsi" +&vop { +	compatible = "rockchip,rk3568-vop"; +}; diff --git a/arch/arm/dts/rk3568-u-boot.dtsi b/arch/arm/dts/rk356x-u-boot.dtsi index fa9b6ae23b9..ccb8db0001a 100644 --- a/arch/arm/dts/rk3568-u-boot.dtsi +++ b/arch/arm/dts/rk356x-u-boot.dtsi @@ -42,15 +42,12 @@  	status = "okay";  }; -&sdmmc0 { +&sdhci {  	u-boot,dm-spl;  	status = "okay";  }; -&sdhci { -	bus-width = <8>; +&sdmmc0 {  	u-boot,dm-spl; -	mmc-hs200-1_8v;  	status = "okay";  }; - diff --git a/arch/arm/dts/rk356x.dtsi b/arch/arm/dts/rk356x.dtsi new file mode 100644 index 00000000000..319981c3e9f --- /dev/null +++ b/arch/arm/dts/rk356x.dtsi @@ -0,0 +1,1706 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2021 Rockchip Electronics Co., Ltd. + */ + +#include <dt-bindings/clock/rk3568-cru.h> +#include <dt-bindings/interrupt-controller/arm-gic.h> +#include <dt-bindings/interrupt-controller/irq.h> +#include <dt-bindings/phy/phy.h> +#include <dt-bindings/pinctrl/rockchip.h> +#include <dt-bindings/power/rk3568-power.h> +#include <dt-bindings/soc/rockchip,boot-mode.h> +#include <dt-bindings/thermal/thermal.h> + +/ { +	interrupt-parent = <&gic>; +	#address-cells = <2>; +	#size-cells = <2>; + +	aliases { +		gpio0 = &gpio0; +		gpio1 = &gpio1; +		gpio2 = &gpio2; +		gpio3 = &gpio3; +		gpio4 = &gpio4; +		i2c0 = &i2c0; +		i2c1 = &i2c1; +		i2c2 = &i2c2; +		i2c3 = &i2c3; +		i2c4 = &i2c4; +		i2c5 = &i2c5; +		serial0 = &uart0; +		serial1 = &uart1; +		serial2 = &uart2; +		serial3 = &uart3; +		serial4 = &uart4; +		serial5 = &uart5; +		serial6 = &uart6; +		serial7 = &uart7; +		serial8 = &uart8; +		serial9 = &uart9; +		spi0 = &spi0; +		spi1 = &spi1; +		spi2 = &spi2; +		spi3 = &spi3; +	}; + +	cpus { +		#address-cells = <2>; +		#size-cells = <0>; + +		cpu0: cpu@0 { +			device_type = "cpu"; +			compatible = "arm,cortex-a55"; +			reg = <0x0 0x0>; +			clocks = <&scmi_clk 0>; +			#cooling-cells = <2>; +			enable-method = "psci"; +			operating-points-v2 = <&cpu0_opp_table>; +		}; + +		cpu1: cpu@100 { +			device_type = "cpu"; +			compatible = "arm,cortex-a55"; +			reg = <0x0 0x100>; +			#cooling-cells = <2>; +			enable-method = "psci"; +			operating-points-v2 = <&cpu0_opp_table>; +		}; + +		cpu2: cpu@200 { +			device_type = "cpu"; +			compatible = "arm,cortex-a55"; +			reg = <0x0 0x200>; +			#cooling-cells = <2>; +			enable-method = "psci"; +			operating-points-v2 = <&cpu0_opp_table>; +		}; + +		cpu3: cpu@300 { +			device_type = "cpu"; +			compatible = "arm,cortex-a55"; +			reg = <0x0 0x300>; +			#cooling-cells = <2>; +			enable-method = "psci"; +			operating-points-v2 = <&cpu0_opp_table>; +		}; +	}; + +	cpu0_opp_table: opp-table-0 { +		compatible = "operating-points-v2"; +		opp-shared; + +		opp-408000000 { +			opp-hz = /bits/ 64 <408000000>; +			opp-microvolt = <900000 900000 1150000>; +			clock-latency-ns = <40000>; +		}; + +		opp-600000000 { +			opp-hz = /bits/ 64 <600000000>; +			opp-microvolt = <900000 900000 1150000>; +		}; + +		opp-816000000 { +			opp-hz = /bits/ 64 <816000000>; +			opp-microvolt = <900000 900000 1150000>; +			opp-suspend; +		}; + +		opp-1104000000 { +			opp-hz = /bits/ 64 <1104000000>; +			opp-microvolt = <900000 900000 1150000>; +		}; + +		opp-1416000000 { +			opp-hz = /bits/ 64 <1416000000>; +			opp-microvolt = <900000 900000 1150000>; +		}; + +		opp-1608000000 { +			opp-hz = /bits/ 64 <1608000000>; +			opp-microvolt = <975000 975000 1150000>; +		}; + +		opp-1800000000 { +			opp-hz = /bits/ 64 <1800000000>; +			opp-microvolt = <1050000 1050000 1150000>; +		}; +	}; + +	display_subsystem: display-subsystem { +		compatible = "rockchip,display-subsystem"; +		ports = <&vop_out>; +	}; + +	firmware { +		scmi: scmi { +			compatible = "arm,scmi-smc"; +			arm,smc-id = <0x82000010>; +			shmem = <&scmi_shmem>; +			#address-cells = <1>; +			#size-cells = <0>; + +			scmi_clk: protocol@14 { +				reg = <0x14>; +				#clock-cells = <1>; +			}; +		}; +	}; + +	gpu_opp_table: opp-table-1 { +		compatible = "operating-points-v2"; + +		opp-200000000 { +			opp-hz = /bits/ 64 <200000000>; +			opp-microvolt = <825000>; +		}; + +		opp-300000000 { +			opp-hz = /bits/ 64 <300000000>; +			opp-microvolt = <825000>; +		}; + +		opp-400000000 { +			opp-hz = /bits/ 64 <400000000>; +			opp-microvolt = <825000>; +		}; + +		opp-600000000 { +			opp-hz = /bits/ 64 <600000000>; +			opp-microvolt = <825000>; +		}; + +		opp-700000000 { +			opp-hz = /bits/ 64 <700000000>; +			opp-microvolt = <900000>; +		}; + +		opp-800000000 { +			opp-hz = /bits/ 64 <800000000>; +			opp-microvolt = <1000000>; +		}; +	}; + +	hdmi_sound: hdmi-sound { +		compatible = "simple-audio-card"; +		simple-audio-card,name = "HDMI"; +		simple-audio-card,format = "i2s"; +		simple-audio-card,mclk-fs = <256>; +		status = "disabled"; + +		simple-audio-card,codec { +			sound-dai = <&hdmi>; +		}; + +		simple-audio-card,cpu { +			sound-dai = <&i2s0_8ch>; +		}; +	}; + +	pmu { +		compatible = "arm,cortex-a55-pmu"; +		interrupts = <GIC_SPI 228 IRQ_TYPE_LEVEL_HIGH>, +			     <GIC_SPI 229 IRQ_TYPE_LEVEL_HIGH>, +			     <GIC_SPI 230 IRQ_TYPE_LEVEL_HIGH>, +			     <GIC_SPI 231 IRQ_TYPE_LEVEL_HIGH>; +		interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>; +	}; + +	psci { +		compatible = "arm,psci-1.0"; +		method = "smc"; +	}; + +	timer { +		compatible = "arm,armv8-timer"; +		interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>, +			     <GIC_PPI 14 IRQ_TYPE_LEVEL_HIGH>, +			     <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>, +			     <GIC_PPI 10 IRQ_TYPE_LEVEL_HIGH>; +		arm,no-tick-in-suspend; +	}; + +	xin24m: xin24m { +		compatible = "fixed-clock"; +		clock-frequency = <24000000>; +		clock-output-names = "xin24m"; +		#clock-cells = <0>; +	}; + +	xin32k: xin32k { +		compatible = "fixed-clock"; +		clock-frequency = <32768>; +		clock-output-names = "xin32k"; +		pinctrl-0 = <&clk32k_out0>; +		pinctrl-names = "default"; +		#clock-cells = <0>; +	}; + +	sram@10f000 { +		compatible = "mmio-sram"; +		reg = <0x0 0x0010f000 0x0 0x100>; +		#address-cells = <1>; +		#size-cells = <1>; +		ranges = <0 0x0 0x0010f000 0x100>; + +		scmi_shmem: sram@0 { +			compatible = "arm,scmi-shmem"; +			reg = <0x0 0x100>; +		}; +	}; + +	sata1: sata@fc400000 { +		compatible = "rockchip,rk3568-dwc-ahci", "snps,dwc-ahci"; +		reg = <0 0xfc400000 0 0x1000>; +		clocks = <&cru ACLK_SATA1>, <&cru CLK_SATA1_PMALIVE>, +			 <&cru CLK_SATA1_RXOOB>; +		clock-names = "sata", "pmalive", "rxoob"; +		interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>; +		phys = <&combphy1 PHY_TYPE_SATA>; +		phy-names = "sata-phy"; +		ports-implemented = <0x1>; +		power-domains = <&power RK3568_PD_PIPE>; +		status = "disabled"; +	}; + +	sata2: sata@fc800000 { +		compatible = "rockchip,rk3568-dwc-ahci", "snps,dwc-ahci"; +		reg = <0 0xfc800000 0 0x1000>; +		clocks = <&cru ACLK_SATA2>, <&cru CLK_SATA2_PMALIVE>, +			 <&cru CLK_SATA2_RXOOB>; +		clock-names = "sata", "pmalive", "rxoob"; +		interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>; +		phys = <&combphy2 PHY_TYPE_SATA>; +		phy-names = "sata-phy"; +		ports-implemented = <0x1>; +		power-domains = <&power RK3568_PD_PIPE>; +		status = "disabled"; +	}; + +	usb_host0_xhci: usb@fcc00000 { +		compatible = "rockchip,rk3568-dwc3", "snps,dwc3"; +		reg = <0x0 0xfcc00000 0x0 0x400000>; +		interrupts = <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru CLK_USB3OTG0_REF>, <&cru CLK_USB3OTG0_SUSPEND>, +			 <&cru ACLK_USB3OTG0>; +		clock-names = "ref_clk", "suspend_clk", +			      "bus_clk"; +		dr_mode = "otg"; +		phy_type = "utmi_wide"; +		power-domains = <&power RK3568_PD_PIPE>; +		resets = <&cru SRST_USB3OTG0>; +		snps,dis_u2_susphy_quirk; +		status = "disabled"; +	}; + +	usb_host1_xhci: usb@fd000000 { +		compatible = "rockchip,rk3568-dwc3", "snps,dwc3"; +		reg = <0x0 0xfd000000 0x0 0x400000>; +		interrupts = <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru CLK_USB3OTG1_REF>, <&cru CLK_USB3OTG1_SUSPEND>, +			 <&cru ACLK_USB3OTG1>; +		clock-names = "ref_clk", "suspend_clk", +			      "bus_clk"; +		dr_mode = "host"; +		phys = <&usb2phy0_host>, <&combphy1 PHY_TYPE_USB3>; +		phy-names = "usb2-phy", "usb3-phy"; +		phy_type = "utmi_wide"; +		power-domains = <&power RK3568_PD_PIPE>; +		resets = <&cru SRST_USB3OTG1>; +		snps,dis_u2_susphy_quirk; +		status = "disabled"; +	}; + +	gic: interrupt-controller@fd400000 { +		compatible = "arm,gic-v3"; +		reg = <0x0 0xfd400000 0 0x10000>, /* GICD */ +		      <0x0 0xfd460000 0 0x80000>; /* GICR */ +		interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>; +		interrupt-controller; +		#interrupt-cells = <3>; +		mbi-alias = <0x0 0xfd410000>; +		mbi-ranges = <296 24>; +		msi-controller; +	}; + +	usb_host0_ehci: usb@fd800000 { +		compatible = "generic-ehci"; +		reg = <0x0 0xfd800000 0x0 0x40000>; +		interrupts = <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru HCLK_USB2HOST0>, <&cru HCLK_USB2HOST0_ARB>, +			 <&cru PCLK_USB>; +		phys = <&usb2phy1_otg>; +		phy-names = "usb"; +		status = "disabled"; +	}; + +	usb_host0_ohci: usb@fd840000 { +		compatible = "generic-ohci"; +		reg = <0x0 0xfd840000 0x0 0x40000>; +		interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru HCLK_USB2HOST0>, <&cru HCLK_USB2HOST0_ARB>, +			 <&cru PCLK_USB>; +		phys = <&usb2phy1_otg>; +		phy-names = "usb"; +		status = "disabled"; +	}; + +	usb_host1_ehci: usb@fd880000 { +		compatible = "generic-ehci"; +		reg = <0x0 0xfd880000 0x0 0x40000>; +		interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru HCLK_USB2HOST1>, <&cru HCLK_USB2HOST1_ARB>, +			 <&cru PCLK_USB>; +		phys = <&usb2phy1_host>; +		phy-names = "usb"; +		status = "disabled"; +	}; + +	usb_host1_ohci: usb@fd8c0000 { +		compatible = "generic-ohci"; +		reg = <0x0 0xfd8c0000 0x0 0x40000>; +		interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru HCLK_USB2HOST1>, <&cru HCLK_USB2HOST1_ARB>, +			 <&cru PCLK_USB>; +		phys = <&usb2phy1_host>; +		phy-names = "usb"; +		status = "disabled"; +	}; + +	pmugrf: syscon@fdc20000 { +		compatible = "rockchip,rk3568-pmugrf", "syscon", "simple-mfd"; +		reg = <0x0 0xfdc20000 0x0 0x10000>; + +		pmu_io_domains: io-domains { +			compatible = "rockchip,rk3568-pmu-io-voltage-domain"; +			status = "disabled"; +		}; +	}; + +	pipegrf: syscon@fdc50000 { +		reg = <0x0 0xfdc50000 0x0 0x1000>; +	}; + +	grf: syscon@fdc60000 { +		compatible = "rockchip,rk3568-grf", "syscon", "simple-mfd"; +		reg = <0x0 0xfdc60000 0x0 0x10000>; +	}; + +	pipe_phy_grf1: syscon@fdc80000 { +		compatible = "rockchip,rk3568-pipe-phy-grf", "syscon"; +		reg = <0x0 0xfdc80000 0x0 0x1000>; +	}; + +	pipe_phy_grf2: syscon@fdc90000 { +		compatible = "rockchip,rk3568-pipe-phy-grf", "syscon"; +		reg = <0x0 0xfdc90000 0x0 0x1000>; +	}; + +	usb2phy0_grf: syscon@fdca0000 { +		compatible = "rockchip,rk3568-usb2phy-grf", "syscon"; +		reg = <0x0 0xfdca0000 0x0 0x8000>; +	}; + +	usb2phy1_grf: syscon@fdca8000 { +		compatible = "rockchip,rk3568-usb2phy-grf", "syscon"; +		reg = <0x0 0xfdca8000 0x0 0x8000>; +	}; + +	pmucru: clock-controller@fdd00000 { +		compatible = "rockchip,rk3568-pmucru"; +		reg = <0x0 0xfdd00000 0x0 0x1000>; +		#clock-cells = <1>; +		#reset-cells = <1>; +	}; + +	cru: clock-controller@fdd20000 { +		compatible = "rockchip,rk3568-cru"; +		reg = <0x0 0xfdd20000 0x0 0x1000>; +		clocks = <&xin24m>; +		clock-names = "xin24m"; +		#clock-cells = <1>; +		#reset-cells = <1>; +		assigned-clocks = <&cru PLL_GPLL>, <&pmucru PLL_PPLL>; +		assigned-clock-rates = <1200000000>, <200000000>; +		rockchip,grf = <&grf>; +	}; + +	i2c0: i2c@fdd40000 { +		compatible = "rockchip,rk3568-i2c", "rockchip,rk3399-i2c"; +		reg = <0x0 0xfdd40000 0x0 0x1000>; +		interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&pmucru CLK_I2C0>, <&pmucru PCLK_I2C0>; +		clock-names = "i2c", "pclk"; +		pinctrl-0 = <&i2c0_xfer>; +		pinctrl-names = "default"; +		#address-cells = <1>; +		#size-cells = <0>; +		status = "disabled"; +	}; + +	uart0: serial@fdd50000 { +		compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart"; +		reg = <0x0 0xfdd50000 0x0 0x100>; +		interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&pmucru SCLK_UART0>, <&pmucru PCLK_UART0>; +		clock-names = "baudclk", "apb_pclk"; +		dmas = <&dmac0 0>, <&dmac0 1>; +		pinctrl-0 = <&uart0_xfer>; +		pinctrl-names = "default"; +		reg-io-width = <4>; +		reg-shift = <2>; +		status = "disabled"; +	}; + +	pwm0: pwm@fdd70000 { +		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; +		reg = <0x0 0xfdd70000 0x0 0x10>; +		clocks = <&pmucru CLK_PWM0>, <&pmucru PCLK_PWM0>; +		clock-names = "pwm", "pclk"; +		pinctrl-0 = <&pwm0m0_pins>; +		pinctrl-names = "default"; +		#pwm-cells = <3>; +		status = "disabled"; +	}; + +	pwm1: pwm@fdd70010 { +		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; +		reg = <0x0 0xfdd70010 0x0 0x10>; +		clocks = <&pmucru CLK_PWM0>, <&pmucru PCLK_PWM0>; +		clock-names = "pwm", "pclk"; +		pinctrl-0 = <&pwm1m0_pins>; +		pinctrl-names = "default"; +		#pwm-cells = <3>; +		status = "disabled"; +	}; + +	pwm2: pwm@fdd70020 { +		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; +		reg = <0x0 0xfdd70020 0x0 0x10>; +		clocks = <&pmucru CLK_PWM0>, <&pmucru PCLK_PWM0>; +		clock-names = "pwm", "pclk"; +		pinctrl-0 = <&pwm2m0_pins>; +		pinctrl-names = "default"; +		#pwm-cells = <3>; +		status = "disabled"; +	}; + +	pwm3: pwm@fdd70030 { +		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; +		reg = <0x0 0xfdd70030 0x0 0x10>; +		clocks = <&pmucru CLK_PWM0>, <&pmucru PCLK_PWM0>; +		clock-names = "pwm", "pclk"; +		pinctrl-0 = <&pwm3_pins>; +		pinctrl-names = "default"; +		#pwm-cells = <3>; +		status = "disabled"; +	}; + +	pmu: power-management@fdd90000 { +		compatible = "rockchip,rk3568-pmu", "syscon", "simple-mfd"; +		reg = <0x0 0xfdd90000 0x0 0x1000>; + +		power: power-controller { +			compatible = "rockchip,rk3568-power-controller"; +			#power-domain-cells = <1>; +			#address-cells = <1>; +			#size-cells = <0>; + +			/* These power domains are grouped by VD_GPU */ +			power-domain@RK3568_PD_GPU { +				reg = <RK3568_PD_GPU>; +				clocks = <&cru ACLK_GPU_PRE>, +					 <&cru PCLK_GPU_PRE>; +				pm_qos = <&qos_gpu>; +				#power-domain-cells = <0>; +			}; + +			/* These power domains are grouped by VD_LOGIC */ +			power-domain@RK3568_PD_VI { +				reg = <RK3568_PD_VI>; +				clocks = <&cru HCLK_VI>, +					 <&cru PCLK_VI>; +				pm_qos = <&qos_isp>, +					 <&qos_vicap0>, +					 <&qos_vicap1>; +				#power-domain-cells = <0>; +			}; + +			power-domain@RK3568_PD_VO { +				reg = <RK3568_PD_VO>; +				clocks = <&cru HCLK_VO>, +					 <&cru PCLK_VO>, +					 <&cru ACLK_VOP_PRE>; +				pm_qos = <&qos_hdcp>, +					 <&qos_vop_m0>, +					 <&qos_vop_m1>; +				#power-domain-cells = <0>; +			}; + +			power-domain@RK3568_PD_RGA { +				reg = <RK3568_PD_RGA>; +				clocks = <&cru HCLK_RGA_PRE>, +					 <&cru PCLK_RGA_PRE>; +				pm_qos = <&qos_ebc>, +					 <&qos_iep>, +					 <&qos_jpeg_dec>, +					 <&qos_jpeg_enc>, +					 <&qos_rga_rd>, +					 <&qos_rga_wr>; +				#power-domain-cells = <0>; +			}; + +			power-domain@RK3568_PD_VPU { +				reg = <RK3568_PD_VPU>; +				clocks = <&cru HCLK_VPU_PRE>; +				pm_qos = <&qos_vpu>; +				#power-domain-cells = <0>; +			}; + +			power-domain@RK3568_PD_RKVDEC { +				clocks = <&cru HCLK_RKVDEC_PRE>; +				reg = <RK3568_PD_RKVDEC>; +				pm_qos = <&qos_rkvdec>; +				#power-domain-cells = <0>; +			}; + +			power-domain@RK3568_PD_RKVENC { +				reg = <RK3568_PD_RKVENC>; +				clocks = <&cru HCLK_RKVENC_PRE>; +				pm_qos = <&qos_rkvenc_rd_m0>, +					 <&qos_rkvenc_rd_m1>, +					 <&qos_rkvenc_wr_m0>; +				#power-domain-cells = <0>; +			}; +		}; +	}; + +	gpu: gpu@fde60000 { +		compatible = "rockchip,rk3568-mali", "arm,mali-bifrost"; +		reg = <0x0 0xfde60000 0x0 0x4000>; +		interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>, +			     <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>, +			     <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>; +		interrupt-names = "job", "mmu", "gpu"; +		clocks = <&scmi_clk 1>, <&cru CLK_GPU>; +		clock-names = "gpu", "bus"; +		#cooling-cells = <2>; +		operating-points-v2 = <&gpu_opp_table>; +		power-domains = <&power RK3568_PD_GPU>; +		status = "disabled"; +	}; + +	sdmmc2: mmc@fe000000 { +		compatible = "rockchip,rk3568-dw-mshc", "rockchip,rk3288-dw-mshc"; +		reg = <0x0 0xfe000000 0x0 0x4000>; +		interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru HCLK_SDMMC2>, <&cru CLK_SDMMC2>, +			 <&cru SCLK_SDMMC2_DRV>, <&cru SCLK_SDMMC2_SAMPLE>; +		clock-names = "biu", "ciu", "ciu-drive", "ciu-sample"; +		fifo-depth = <0x100>; +		max-frequency = <150000000>; +		resets = <&cru SRST_SDMMC2>; +		reset-names = "reset"; +		status = "disabled"; +	}; + +	gmac1: ethernet@fe010000 { +		compatible = "rockchip,rk3568-gmac", "snps,dwmac-4.20a"; +		reg = <0x0 0xfe010000 0x0 0x10000>; +		interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>, +			     <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>; +		interrupt-names = "macirq", "eth_wake_irq"; +		clocks = <&cru SCLK_GMAC1>, <&cru SCLK_GMAC1_RX_TX>, +			 <&cru SCLK_GMAC1_RX_TX>, <&cru CLK_MAC1_REFOUT>, +			 <&cru ACLK_GMAC1>, <&cru PCLK_GMAC1>, +			 <&cru SCLK_GMAC1_RX_TX>, <&cru CLK_GMAC1_PTP_REF>; +		clock-names = "stmmaceth", "mac_clk_rx", +			      "mac_clk_tx", "clk_mac_refout", +			      "aclk_mac", "pclk_mac", +			      "clk_mac_speed", "ptp_ref"; +		resets = <&cru SRST_A_GMAC1>; +		reset-names = "stmmaceth"; +		rockchip,grf = <&grf>; +		snps,axi-config = <&gmac1_stmmac_axi_setup>; +		snps,mixed-burst; +		snps,mtl-rx-config = <&gmac1_mtl_rx_setup>; +		snps,mtl-tx-config = <&gmac1_mtl_tx_setup>; +		snps,tso; +		status = "disabled"; + +		mdio1: mdio { +			compatible = "snps,dwmac-mdio"; +			#address-cells = <0x1>; +			#size-cells = <0x0>; +		}; + +		gmac1_stmmac_axi_setup: stmmac-axi-config { +			snps,blen = <0 0 0 0 16 8 4>; +			snps,rd_osr_lmt = <8>; +			snps,wr_osr_lmt = <4>; +		}; + +		gmac1_mtl_rx_setup: rx-queues-config { +			snps,rx-queues-to-use = <1>; +			queue0 {}; +		}; + +		gmac1_mtl_tx_setup: tx-queues-config { +			snps,tx-queues-to-use = <1>; +			queue0 {}; +		}; +	}; + +	vop: vop@fe040000 { +		reg = <0x0 0xfe040000 0x0 0x3000>, <0x0 0xfe044000 0x0 0x1000>; +		reg-names = "vop", "gamma-lut"; +		interrupts = <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru ACLK_VOP>, <&cru HCLK_VOP>, <&cru DCLK_VOP0>, +			 <&cru DCLK_VOP1>, <&cru DCLK_VOP2>; +		clock-names = "aclk", "hclk", "dclk_vp0", "dclk_vp1", "dclk_vp2"; +		iommus = <&vop_mmu>; +		power-domains = <&power RK3568_PD_VO>; +		rockchip,grf = <&grf>; +		status = "disabled"; + +		vop_out: ports { +			#address-cells = <1>; +			#size-cells = <0>; + +			vp0: port@0 { +				reg = <0>; +				#address-cells = <1>; +				#size-cells = <0>; +			}; + +			vp1: port@1 { +				reg = <1>; +				#address-cells = <1>; +				#size-cells = <0>; +			}; + +			vp2: port@2 { +				reg = <2>; +				#address-cells = <1>; +				#size-cells = <0>; +			}; +		}; +	}; + +	vop_mmu: iommu@fe043e00 { +		compatible = "rockchip,rk3568-iommu"; +		reg = <0x0 0xfe043e00 0x0 0x100>, <0x0 0xfe043f00 0x0 0x100>; +		interrupts = <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru ACLK_VOP>, <&cru HCLK_VOP>; +		clock-names = "aclk", "iface"; +		#iommu-cells = <0>; +		status = "disabled"; +	}; + +	hdmi: hdmi@fe0a0000 { +		compatible = "rockchip,rk3568-dw-hdmi"; +		reg = <0x0 0xfe0a0000 0x0 0x20000>; +		interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru PCLK_HDMI_HOST>, +			 <&cru CLK_HDMI_SFR>, +			 <&cru CLK_HDMI_CEC>, +			 <&pmucru CLK_HDMI_REF>, +			 <&cru HCLK_VO>; +		clock-names = "iahb", "isfr", "cec", "ref"; +		pinctrl-names = "default"; +		pinctrl-0 = <&hdmitx_scl &hdmitx_sda &hdmitxm0_cec>; +		power-domains = <&power RK3568_PD_VO>; +		reg-io-width = <4>; +		rockchip,grf = <&grf>; +		#sound-dai-cells = <0>; +		status = "disabled"; + +		ports { +			#address-cells = <1>; +			#size-cells = <0>; + +			hdmi_in: port@0 { +				reg = <0>; +			}; + +			hdmi_out: port@1 { +				reg = <1>; +			}; +		}; +	}; + +	qos_gpu: qos@fe128000 { +		compatible = "rockchip,rk3568-qos", "syscon"; +		reg = <0x0 0xfe128000 0x0 0x20>; +	}; + +	qos_rkvenc_rd_m0: qos@fe138080 { +		compatible = "rockchip,rk3568-qos", "syscon"; +		reg = <0x0 0xfe138080 0x0 0x20>; +	}; + +	qos_rkvenc_rd_m1: qos@fe138100 { +		compatible = "rockchip,rk3568-qos", "syscon"; +		reg = <0x0 0xfe138100 0x0 0x20>; +	}; + +	qos_rkvenc_wr_m0: qos@fe138180 { +		compatible = "rockchip,rk3568-qos", "syscon"; +		reg = <0x0 0xfe138180 0x0 0x20>; +	}; + +	qos_isp: qos@fe148000 { +		compatible = "rockchip,rk3568-qos", "syscon"; +		reg = <0x0 0xfe148000 0x0 0x20>; +	}; + +	qos_vicap0: qos@fe148080 { +		compatible = "rockchip,rk3568-qos", "syscon"; +		reg = <0x0 0xfe148080 0x0 0x20>; +	}; + +	qos_vicap1: qos@fe148100 { +		compatible = "rockchip,rk3568-qos", "syscon"; +		reg = <0x0 0xfe148100 0x0 0x20>; +	}; + +	qos_vpu: qos@fe150000 { +		compatible = "rockchip,rk3568-qos", "syscon"; +		reg = <0x0 0xfe150000 0x0 0x20>; +	}; + +	qos_ebc: qos@fe158000 { +		compatible = "rockchip,rk3568-qos", "syscon"; +		reg = <0x0 0xfe158000 0x0 0x20>; +	}; + +	qos_iep: qos@fe158100 { +		compatible = "rockchip,rk3568-qos", "syscon"; +		reg = <0x0 0xfe158100 0x0 0x20>; +	}; + +	qos_jpeg_dec: qos@fe158180 { +		compatible = "rockchip,rk3568-qos", "syscon"; +		reg = <0x0 0xfe158180 0x0 0x20>; +	}; + +	qos_jpeg_enc: qos@fe158200 { +		compatible = "rockchip,rk3568-qos", "syscon"; +		reg = <0x0 0xfe158200 0x0 0x20>; +	}; + +	qos_rga_rd: qos@fe158280 { +		compatible = "rockchip,rk3568-qos", "syscon"; +		reg = <0x0 0xfe158280 0x0 0x20>; +	}; + +	qos_rga_wr: qos@fe158300 { +		compatible = "rockchip,rk3568-qos", "syscon"; +		reg = <0x0 0xfe158300 0x0 0x20>; +	}; + +	qos_npu: qos@fe180000 { +		compatible = "rockchip,rk3568-qos", "syscon"; +		reg = <0x0 0xfe180000 0x0 0x20>; +	}; + +	qos_pcie2x1: qos@fe190000 { +		compatible = "rockchip,rk3568-qos", "syscon"; +		reg = <0x0 0xfe190000 0x0 0x20>; +	}; + +	qos_sata1: qos@fe190280 { +		compatible = "rockchip,rk3568-qos", "syscon"; +		reg = <0x0 0xfe190280 0x0 0x20>; +	}; + +	qos_sata2: qos@fe190300 { +		compatible = "rockchip,rk3568-qos", "syscon"; +		reg = <0x0 0xfe190300 0x0 0x20>; +	}; + +	qos_usb3_0: qos@fe190380 { +		compatible = "rockchip,rk3568-qos", "syscon"; +		reg = <0x0 0xfe190380 0x0 0x20>; +	}; + +	qos_usb3_1: qos@fe190400 { +		compatible = "rockchip,rk3568-qos", "syscon"; +		reg = <0x0 0xfe190400 0x0 0x20>; +	}; + +	qos_rkvdec: qos@fe198000 { +		compatible = "rockchip,rk3568-qos", "syscon"; +		reg = <0x0 0xfe198000 0x0 0x20>; +	}; + +	qos_hdcp: qos@fe1a8000 { +		compatible = "rockchip,rk3568-qos", "syscon"; +		reg = <0x0 0xfe1a8000 0x0 0x20>; +	}; + +	qos_vop_m0: qos@fe1a8080 { +		compatible = "rockchip,rk3568-qos", "syscon"; +		reg = <0x0 0xfe1a8080 0x0 0x20>; +	}; + +	qos_vop_m1: qos@fe1a8100 { +		compatible = "rockchip,rk3568-qos", "syscon"; +		reg = <0x0 0xfe1a8100 0x0 0x20>; +	}; + +	pcie2x1: pcie@fe260000 { +		compatible = "rockchip,rk3568-pcie"; +		reg = <0x3 0xc0000000 0x0 0x00400000>, +		      <0x0 0xfe260000 0x0 0x00010000>, +		      <0x3 0x3f000000 0x0 0x01000000>; +		reg-names = "dbi", "apb", "config"; +		interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>, +			     <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>, +			     <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>, +			     <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>, +			     <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>; +		interrupt-names = "sys", "pmc", "msi", "legacy", "err"; +		bus-range = <0x0 0xf>; +		clocks = <&cru ACLK_PCIE20_MST>, <&cru ACLK_PCIE20_SLV>, +			 <&cru ACLK_PCIE20_DBI>, <&cru PCLK_PCIE20>, +			 <&cru CLK_PCIE20_AUX_NDFT>; +		clock-names = "aclk_mst", "aclk_slv", +			      "aclk_dbi", "pclk", "aux"; +		device_type = "pci"; +		interrupt-map-mask = <0 0 0 7>; +		interrupt-map = <0 0 0 1 &pcie_intc 0>, +				<0 0 0 2 &pcie_intc 1>, +				<0 0 0 3 &pcie_intc 2>, +				<0 0 0 4 &pcie_intc 3>; +		linux,pci-domain = <0>; +		num-ib-windows = <6>; +		num-ob-windows = <2>; +		max-link-speed = <2>; +		msi-map = <0x0 &gic 0x0 0x1000>; +		num-lanes = <1>; +		phys = <&combphy2 PHY_TYPE_PCIE>; +		phy-names = "pcie-phy"; +		power-domains = <&power RK3568_PD_PIPE>; +		ranges = <0x01000000 0x0 0x3ef00000 0x3 0x3ef00000 0x0 0x00100000 +			  0x02000000 0x0 0x00000000 0x3 0x00000000 0x0 0x3ef00000>; +		resets = <&cru SRST_PCIE20_POWERUP>; +		reset-names = "pipe"; +		#address-cells = <3>; +		#size-cells = <2>; +		status = "disabled"; + +		pcie_intc: legacy-interrupt-controller { +			#address-cells = <0>; +			#interrupt-cells = <1>; +			interrupt-controller; +			interrupt-parent = <&gic>; +			interrupts = <GIC_SPI 72 IRQ_TYPE_EDGE_RISING>; +		}; +	}; + +	sdmmc0: mmc@fe2b0000 { +		compatible = "rockchip,rk3568-dw-mshc", "rockchip,rk3288-dw-mshc"; +		reg = <0x0 0xfe2b0000 0x0 0x4000>; +		interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru HCLK_SDMMC0>, <&cru CLK_SDMMC0>, +			 <&cru SCLK_SDMMC0_DRV>, <&cru SCLK_SDMMC0_SAMPLE>; +		clock-names = "biu", "ciu", "ciu-drive", "ciu-sample"; +		fifo-depth = <0x100>; +		max-frequency = <150000000>; +		resets = <&cru SRST_SDMMC0>; +		reset-names = "reset"; +		status = "disabled"; +	}; + +	sdmmc1: mmc@fe2c0000 { +		compatible = "rockchip,rk3568-dw-mshc", "rockchip,rk3288-dw-mshc"; +		reg = <0x0 0xfe2c0000 0x0 0x4000>; +		interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru HCLK_SDMMC1>, <&cru CLK_SDMMC1>, +			 <&cru SCLK_SDMMC1_DRV>, <&cru SCLK_SDMMC1_SAMPLE>; +		clock-names = "biu", "ciu", "ciu-drive", "ciu-sample"; +		fifo-depth = <0x100>; +		max-frequency = <150000000>; +		resets = <&cru SRST_SDMMC1>; +		reset-names = "reset"; +		status = "disabled"; +	}; + +	sfc: spi@fe300000 { +		compatible = "rockchip,sfc"; +		reg = <0x0 0xfe300000 0x0 0x4000>; +		interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru SCLK_SFC>, <&cru HCLK_SFC>; +		clock-names = "clk_sfc", "hclk_sfc"; +		pinctrl-0 = <&fspi_pins>; +		pinctrl-names = "default"; +		status = "disabled"; +	}; + +	sdhci: mmc@fe310000 { +		compatible = "rockchip,rk3568-dwcmshc"; +		reg = <0x0 0xfe310000 0x0 0x10000>; +		interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>; +		assigned-clocks = <&cru BCLK_EMMC>, <&cru TCLK_EMMC>; +		assigned-clock-rates = <200000000>, <24000000>; +		clocks = <&cru CCLK_EMMC>, <&cru HCLK_EMMC>, +			 <&cru ACLK_EMMC>, <&cru BCLK_EMMC>, +			 <&cru TCLK_EMMC>; +		clock-names = "core", "bus", "axi", "block", "timer"; +		status = "disabled"; +	}; + +	spdif: spdif@fe460000 { +		compatible = "rockchip,rk3568-spdif"; +		reg = <0x0 0xfe460000 0x0 0x1000>; +		interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>; +		clock-names = "mclk", "hclk"; +		clocks = <&cru MCLK_SPDIF_8CH>, <&cru HCLK_SPDIF_8CH>; +		dmas = <&dmac1 1>; +		dma-names = "tx"; +		pinctrl-names = "default"; +		pinctrl-0 = <&spdifm0_tx>; +		#sound-dai-cells = <0>; +		status = "disabled"; +	}; + +	i2s0_8ch: i2s@fe400000 { +		compatible = "rockchip,rk3568-i2s-tdm"; +		reg = <0x0 0xfe400000 0x0 0x1000>; +		interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>; +		assigned-clocks = <&cru CLK_I2S0_8CH_TX_SRC>, <&cru CLK_I2S0_8CH_RX_SRC>; +		assigned-clock-rates = <1188000000>, <1188000000>; +		clocks = <&cru MCLK_I2S0_8CH_TX>, <&cru MCLK_I2S0_8CH_RX>, <&cru HCLK_I2S0_8CH>; +		clock-names = "mclk_tx", "mclk_rx", "hclk"; +		dmas = <&dmac1 0>; +		dma-names = "tx"; +		resets = <&cru SRST_M_I2S0_8CH_TX>, <&cru SRST_M_I2S0_8CH_RX>; +		reset-names = "tx-m", "rx-m"; +		rockchip,grf = <&grf>; +		#sound-dai-cells = <0>; +		status = "disabled"; +	}; + +	i2s1_8ch: i2s@fe410000 { +		compatible = "rockchip,rk3568-i2s-tdm"; +		reg = <0x0 0xfe410000 0x0 0x1000>; +		interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>; +		assigned-clocks = <&cru CLK_I2S1_8CH_TX_SRC>, <&cru CLK_I2S1_8CH_RX_SRC>; +		assigned-clock-rates = <1188000000>, <1188000000>; +		clocks = <&cru MCLK_I2S1_8CH_TX>, <&cru MCLK_I2S1_8CH_RX>, +			 <&cru HCLK_I2S1_8CH>; +		clock-names = "mclk_tx", "mclk_rx", "hclk"; +		dmas = <&dmac1 3>, <&dmac1 2>; +		dma-names = "rx", "tx"; +		resets = <&cru SRST_M_I2S1_8CH_TX>, <&cru SRST_M_I2S1_8CH_RX>; +		reset-names = "tx-m", "rx-m"; +		rockchip,grf = <&grf>; +		pinctrl-names = "default"; +		pinctrl-0 = <&i2s1m0_sclktx &i2s1m0_sclkrx +			     &i2s1m0_lrcktx &i2s1m0_lrckrx +			     &i2s1m0_sdi0   &i2s1m0_sdi1 +			     &i2s1m0_sdi2   &i2s1m0_sdi3 +			     &i2s1m0_sdo0   &i2s1m0_sdo1 +			     &i2s1m0_sdo2   &i2s1m0_sdo3>; +		#sound-dai-cells = <0>; +		status = "disabled"; +	}; + +	i2s3_2ch: i2s@fe430000 { +		compatible = "rockchip,rk3568-i2s-tdm"; +		reg = <0x0 0xfe430000 0x0 0x1000>; +		interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru MCLK_I2S3_2CH_TX>, <&cru MCLK_I2S3_2CH_RX>, +			 <&cru HCLK_I2S3_2CH>; +		clock-names = "mclk_tx", "mclk_rx", "hclk"; +		dmas = <&dmac1 6>, <&dmac1 7>; +		dma-names = "tx", "rx"; +		resets = <&cru SRST_M_I2S3_2CH_TX>, <&cru SRST_M_I2S3_2CH_RX>; +		reset-names = "tx-m", "rx-m"; +		rockchip,grf = <&grf>; +		#sound-dai-cells = <0>; +		status = "disabled"; +	}; + +	pdm: pdm@fe440000 { +		compatible = "rockchip,rk3568-pdm"; +		reg = <0x0 0xfe440000 0x0 0x1000>; +		interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru MCLK_PDM>, <&cru HCLK_PDM>; +		clock-names = "pdm_clk", "pdm_hclk"; +		dmas = <&dmac1 9>; +		dma-names = "rx"; +		pinctrl-0 = <&pdmm0_clk +			     &pdmm0_clk1 +			     &pdmm0_sdi0 +			     &pdmm0_sdi1 +			     &pdmm0_sdi2 +			     &pdmm0_sdi3>; +		pinctrl-names = "default"; +		resets = <&cru SRST_M_PDM>; +		reset-names = "pdm-m"; +		#sound-dai-cells = <0>; +		status = "disabled"; +	}; + +	dmac0: dma-controller@fe530000 { +		compatible = "arm,pl330", "arm,primecell"; +		reg = <0x0 0xfe530000 0x0 0x4000>; +		interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>, +			     <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>; +		arm,pl330-periph-burst; +		clocks = <&cru ACLK_BUS>; +		clock-names = "apb_pclk"; +		#dma-cells = <1>; +	}; + +	dmac1: dma-controller@fe550000 { +		compatible = "arm,pl330", "arm,primecell"; +		reg = <0x0 0xfe550000 0x0 0x4000>; +		interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>, +			     <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>; +		arm,pl330-periph-burst; +		clocks = <&cru ACLK_BUS>; +		clock-names = "apb_pclk"; +		#dma-cells = <1>; +	}; + +	i2c1: i2c@fe5a0000 { +		compatible = "rockchip,rk3568-i2c", "rockchip,rk3399-i2c"; +		reg = <0x0 0xfe5a0000 0x0 0x1000>; +		interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru CLK_I2C1>, <&cru PCLK_I2C1>; +		clock-names = "i2c", "pclk"; +		pinctrl-0 = <&i2c1_xfer>; +		pinctrl-names = "default"; +		#address-cells = <1>; +		#size-cells = <0>; +		status = "disabled"; +	}; + +	i2c2: i2c@fe5b0000 { +		compatible = "rockchip,rk3568-i2c", "rockchip,rk3399-i2c"; +		reg = <0x0 0xfe5b0000 0x0 0x1000>; +		interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru CLK_I2C2>, <&cru PCLK_I2C2>; +		clock-names = "i2c", "pclk"; +		pinctrl-0 = <&i2c2m0_xfer>; +		pinctrl-names = "default"; +		#address-cells = <1>; +		#size-cells = <0>; +		status = "disabled"; +	}; + +	i2c3: i2c@fe5c0000 { +		compatible = "rockchip,rk3568-i2c", "rockchip,rk3399-i2c"; +		reg = <0x0 0xfe5c0000 0x0 0x1000>; +		interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru CLK_I2C3>, <&cru PCLK_I2C3>; +		clock-names = "i2c", "pclk"; +		pinctrl-0 = <&i2c3m0_xfer>; +		pinctrl-names = "default"; +		#address-cells = <1>; +		#size-cells = <0>; +		status = "disabled"; +	}; + +	i2c4: i2c@fe5d0000 { +		compatible = "rockchip,rk3568-i2c", "rockchip,rk3399-i2c"; +		reg = <0x0 0xfe5d0000 0x0 0x1000>; +		interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru CLK_I2C4>, <&cru PCLK_I2C4>; +		clock-names = "i2c", "pclk"; +		pinctrl-0 = <&i2c4m0_xfer>; +		pinctrl-names = "default"; +		#address-cells = <1>; +		#size-cells = <0>; +		status = "disabled"; +	}; + +	i2c5: i2c@fe5e0000 { +		compatible = "rockchip,rk3568-i2c", "rockchip,rk3399-i2c"; +		reg = <0x0 0xfe5e0000 0x0 0x1000>; +		interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru CLK_I2C5>, <&cru PCLK_I2C5>; +		clock-names = "i2c", "pclk"; +		pinctrl-0 = <&i2c5m0_xfer>; +		pinctrl-names = "default"; +		#address-cells = <1>; +		#size-cells = <0>; +		status = "disabled"; +	}; + +	wdt: watchdog@fe600000 { +		compatible = "rockchip,rk3568-wdt", "snps,dw-wdt"; +		reg = <0x0 0xfe600000 0x0 0x100>; +		interrupts = <GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru TCLK_WDT_NS>, <&cru PCLK_WDT_NS>; +		clock-names = "tclk", "pclk"; +	}; + +	spi0: spi@fe610000 { +		compatible = "rockchip,rk3568-spi", "rockchip,rk3066-spi"; +		reg = <0x0 0xfe610000 0x0 0x1000>; +		interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru CLK_SPI0>, <&cru PCLK_SPI0>; +		clock-names = "spiclk", "apb_pclk"; +		dmas = <&dmac0 20>, <&dmac0 21>; +		dma-names = "tx", "rx"; +		pinctrl-names = "default"; +		pinctrl-0 = <&spi0m0_cs0 &spi0m0_cs1 &spi0m0_pins>; +		#address-cells = <1>; +		#size-cells = <0>; +		status = "disabled"; +	}; + +	spi1: spi@fe620000 { +		compatible = "rockchip,rk3568-spi", "rockchip,rk3066-spi"; +		reg = <0x0 0xfe620000 0x0 0x1000>; +		interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru CLK_SPI1>, <&cru PCLK_SPI1>; +		clock-names = "spiclk", "apb_pclk"; +		dmas = <&dmac0 22>, <&dmac0 23>; +		dma-names = "tx", "rx"; +		pinctrl-names = "default"; +		pinctrl-0 = <&spi1m0_cs0 &spi1m0_cs1 &spi1m0_pins>; +		#address-cells = <1>; +		#size-cells = <0>; +		status = "disabled"; +	}; + +	spi2: spi@fe630000 { +		compatible = "rockchip,rk3568-spi", "rockchip,rk3066-spi"; +		reg = <0x0 0xfe630000 0x0 0x1000>; +		interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru CLK_SPI2>, <&cru PCLK_SPI2>; +		clock-names = "spiclk", "apb_pclk"; +		dmas = <&dmac0 24>, <&dmac0 25>; +		dma-names = "tx", "rx"; +		pinctrl-names = "default"; +		pinctrl-0 = <&spi2m0_cs0 &spi2m0_cs1 &spi2m0_pins>; +		#address-cells = <1>; +		#size-cells = <0>; +		status = "disabled"; +	}; + +	spi3: spi@fe640000 { +		compatible = "rockchip,rk3568-spi", "rockchip,rk3066-spi"; +		reg = <0x0 0xfe640000 0x0 0x1000>; +		interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru CLK_SPI3>, <&cru PCLK_SPI3>; +		clock-names = "spiclk", "apb_pclk"; +		dmas = <&dmac0 26>, <&dmac0 27>; +		dma-names = "tx", "rx"; +		pinctrl-names = "default"; +		pinctrl-0 = <&spi3m0_cs0 &spi3m0_cs1 &spi3m0_pins>; +		#address-cells = <1>; +		#size-cells = <0>; +		status = "disabled"; +	}; + +	uart1: serial@fe650000 { +		compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart"; +		reg = <0x0 0xfe650000 0x0 0x100>; +		interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>; +		clock-names = "baudclk", "apb_pclk"; +		dmas = <&dmac0 2>, <&dmac0 3>; +		pinctrl-0 = <&uart1m0_xfer>; +		pinctrl-names = "default"; +		reg-io-width = <4>; +		reg-shift = <2>; +		status = "disabled"; +	}; + +	uart2: serial@fe660000 { +		compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart"; +		reg = <0x0 0xfe660000 0x0 0x100>; +		interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>; +		clock-names = "baudclk", "apb_pclk"; +		dmas = <&dmac0 4>, <&dmac0 5>; +		pinctrl-0 = <&uart2m0_xfer>; +		pinctrl-names = "default"; +		reg-io-width = <4>; +		reg-shift = <2>; +		status = "disabled"; +	}; + +	uart3: serial@fe670000 { +		compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart"; +		reg = <0x0 0xfe670000 0x0 0x100>; +		interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>; +		clock-names = "baudclk", "apb_pclk"; +		dmas = <&dmac0 6>, <&dmac0 7>; +		pinctrl-0 = <&uart3m0_xfer>; +		pinctrl-names = "default"; +		reg-io-width = <4>; +		reg-shift = <2>; +		status = "disabled"; +	}; + +	uart4: serial@fe680000 { +		compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart"; +		reg = <0x0 0xfe680000 0x0 0x100>; +		interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru SCLK_UART4>, <&cru PCLK_UART4>; +		clock-names = "baudclk", "apb_pclk"; +		dmas = <&dmac0 8>, <&dmac0 9>; +		pinctrl-0 = <&uart4m0_xfer>; +		pinctrl-names = "default"; +		reg-io-width = <4>; +		reg-shift = <2>; +		status = "disabled"; +	}; + +	uart5: serial@fe690000 { +		compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart"; +		reg = <0x0 0xfe690000 0x0 0x100>; +		interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru SCLK_UART5>, <&cru PCLK_UART5>; +		clock-names = "baudclk", "apb_pclk"; +		dmas = <&dmac0 10>, <&dmac0 11>; +		pinctrl-0 = <&uart5m0_xfer>; +		pinctrl-names = "default"; +		reg-io-width = <4>; +		reg-shift = <2>; +		status = "disabled"; +	}; + +	uart6: serial@fe6a0000 { +		compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart"; +		reg = <0x0 0xfe6a0000 0x0 0x100>; +		interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru SCLK_UART6>, <&cru PCLK_UART6>; +		clock-names = "baudclk", "apb_pclk"; +		dmas = <&dmac0 12>, <&dmac0 13>; +		pinctrl-0 = <&uart6m0_xfer>; +		pinctrl-names = "default"; +		reg-io-width = <4>; +		reg-shift = <2>; +		status = "disabled"; +	}; + +	uart7: serial@fe6b0000 { +		compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart"; +		reg = <0x0 0xfe6b0000 0x0 0x100>; +		interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru SCLK_UART7>, <&cru PCLK_UART7>; +		clock-names = "baudclk", "apb_pclk"; +		dmas = <&dmac0 14>, <&dmac0 15>; +		pinctrl-0 = <&uart7m0_xfer>; +		pinctrl-names = "default"; +		reg-io-width = <4>; +		reg-shift = <2>; +		status = "disabled"; +	}; + +	uart8: serial@fe6c0000 { +		compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart"; +		reg = <0x0 0xfe6c0000 0x0 0x100>; +		interrupts = <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru SCLK_UART8>, <&cru PCLK_UART8>; +		clock-names = "baudclk", "apb_pclk"; +		dmas = <&dmac0 16>, <&dmac0 17>; +		pinctrl-0 = <&uart8m0_xfer>; +		pinctrl-names = "default"; +		reg-io-width = <4>; +		reg-shift = <2>; +		status = "disabled"; +	}; + +	uart9: serial@fe6d0000 { +		compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart"; +		reg = <0x0 0xfe6d0000 0x0 0x100>; +		interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru SCLK_UART9>, <&cru PCLK_UART9>; +		clock-names = "baudclk", "apb_pclk"; +		dmas = <&dmac0 18>, <&dmac0 19>; +		pinctrl-0 = <&uart9m0_xfer>; +		pinctrl-names = "default"; +		reg-io-width = <4>; +		reg-shift = <2>; +		status = "disabled"; +	}; + +	thermal_zones: thermal-zones { +		cpu_thermal: cpu-thermal { +			polling-delay-passive = <100>; +			polling-delay = <1000>; + +			thermal-sensors = <&tsadc 0>; + +			trips { +				cpu_alert0: cpu_alert0 { +					temperature = <70000>; +					hysteresis = <2000>; +					type = "passive"; +				}; +				cpu_alert1: cpu_alert1 { +					temperature = <75000>; +					hysteresis = <2000>; +					type = "passive"; +				}; +				cpu_crit: cpu_crit { +					temperature = <95000>; +					hysteresis = <2000>; +					type = "critical"; +				}; +			}; + +			cooling-maps { +				map0 { +					trip = <&cpu_alert0>; +					cooling-device = +						<&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, +						<&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, +						<&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, +						<&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; +				}; +			}; +		}; + +		gpu_thermal: gpu-thermal { +			polling-delay-passive = <20>; /* milliseconds */ +			polling-delay = <1000>; /* milliseconds */ + +			thermal-sensors = <&tsadc 1>; + +			trips { +				gpu_threshold: gpu-threshold { +					temperature = <70000>; +					hysteresis = <2000>; +					type = "passive"; +				}; +				gpu_target: gpu-target { +					temperature = <75000>; +					hysteresis = <2000>; +					type = "passive"; +				}; +				gpu_crit: gpu-crit { +					temperature = <95000>; +					hysteresis = <2000>; +					type = "critical"; +				}; +			}; + +			cooling-maps { +				map0 { +					trip = <&gpu_target>; +					cooling-device = +						<&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; +				}; +			}; +		}; +	}; + +	tsadc: tsadc@fe710000 { +		compatible = "rockchip,rk3568-tsadc"; +		reg = <0x0 0xfe710000 0x0 0x100>; +		interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>; +		assigned-clocks = <&cru CLK_TSADC_TSEN>, <&cru CLK_TSADC>; +		assigned-clock-rates = <17000000>, <700000>; +		clocks = <&cru CLK_TSADC>, <&cru PCLK_TSADC>; +		clock-names = "tsadc", "apb_pclk"; +		resets = <&cru SRST_P_TSADC>, <&cru SRST_TSADC>, +			 <&cru SRST_TSADCPHY>; +		rockchip,grf = <&grf>; +		rockchip,hw-tshut-temp = <95000>; +		pinctrl-names = "init", "default", "sleep"; +		pinctrl-0 = <&tsadc_pin>; +		pinctrl-1 = <&tsadc_shutorg>; +		pinctrl-2 = <&tsadc_pin>; +		#thermal-sensor-cells = <1>; +		status = "disabled"; +	}; + +	saradc: saradc@fe720000 { +		compatible = "rockchip,rk3568-saradc", "rockchip,rk3399-saradc"; +		reg = <0x0 0xfe720000 0x0 0x100>; +		interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&cru CLK_SARADC>, <&cru PCLK_SARADC>; +		clock-names = "saradc", "apb_pclk"; +		resets = <&cru SRST_P_SARADC>; +		reset-names = "saradc-apb"; +		#io-channel-cells = <1>; +		status = "disabled"; +	}; + +	pwm4: pwm@fe6e0000 { +		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; +		reg = <0x0 0xfe6e0000 0x0 0x10>; +		clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>; +		clock-names = "pwm", "pclk"; +		pinctrl-0 = <&pwm4_pins>; +		pinctrl-names = "default"; +		#pwm-cells = <3>; +		status = "disabled"; +	}; + +	pwm5: pwm@fe6e0010 { +		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; +		reg = <0x0 0xfe6e0010 0x0 0x10>; +		clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>; +		clock-names = "pwm", "pclk"; +		pinctrl-0 = <&pwm5_pins>; +		pinctrl-names = "default"; +		#pwm-cells = <3>; +		status = "disabled"; +	}; + +	pwm6: pwm@fe6e0020 { +		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; +		reg = <0x0 0xfe6e0020 0x0 0x10>; +		clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>; +		clock-names = "pwm", "pclk"; +		pinctrl-0 = <&pwm6_pins>; +		pinctrl-names = "default"; +		#pwm-cells = <3>; +		status = "disabled"; +	}; + +	pwm7: pwm@fe6e0030 { +		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; +		reg = <0x0 0xfe6e0030 0x0 0x10>; +		clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>; +		clock-names = "pwm", "pclk"; +		pinctrl-0 = <&pwm7_pins>; +		pinctrl-names = "default"; +		#pwm-cells = <3>; +		status = "disabled"; +	}; + +	pwm8: pwm@fe6f0000 { +		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; +		reg = <0x0 0xfe6f0000 0x0 0x10>; +		clocks = <&cru CLK_PWM2>, <&cru PCLK_PWM2>; +		clock-names = "pwm", "pclk"; +		pinctrl-0 = <&pwm8m0_pins>; +		pinctrl-names = "default"; +		#pwm-cells = <3>; +		status = "disabled"; +	}; + +	pwm9: pwm@fe6f0010 { +		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; +		reg = <0x0 0xfe6f0010 0x0 0x10>; +		clocks = <&cru CLK_PWM2>, <&cru PCLK_PWM2>; +		clock-names = "pwm", "pclk"; +		pinctrl-0 = <&pwm9m0_pins>; +		pinctrl-names = "default"; +		#pwm-cells = <3>; +		status = "disabled"; +	}; + +	pwm10: pwm@fe6f0020 { +		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; +		reg = <0x0 0xfe6f0020 0x0 0x10>; +		clocks = <&cru CLK_PWM2>, <&cru PCLK_PWM2>; +		clock-names = "pwm", "pclk"; +		pinctrl-0 = <&pwm10m0_pins>; +		pinctrl-names = "default"; +		#pwm-cells = <3>; +		status = "disabled"; +	}; + +	pwm11: pwm@fe6f0030 { +		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; +		reg = <0x0 0xfe6f0030 0x0 0x10>; +		clocks = <&cru CLK_PWM2>, <&cru PCLK_PWM2>; +		clock-names = "pwm", "pclk"; +		pinctrl-0 = <&pwm11m0_pins>; +		pinctrl-names = "default"; +		#pwm-cells = <3>; +		status = "disabled"; +	}; + +	pwm12: pwm@fe700000 { +		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; +		reg = <0x0 0xfe700000 0x0 0x10>; +		clocks = <&cru CLK_PWM3>, <&cru PCLK_PWM3>; +		clock-names = "pwm", "pclk"; +		pinctrl-0 = <&pwm12m0_pins>; +		pinctrl-names = "default"; +		#pwm-cells = <3>; +		status = "disabled"; +	}; + +	pwm13: pwm@fe700010 { +		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; +		reg = <0x0 0xfe700010 0x0 0x10>; +		clocks = <&cru CLK_PWM3>, <&cru PCLK_PWM3>; +		clock-names = "pwm", "pclk"; +		pinctrl-0 = <&pwm13m0_pins>; +		pinctrl-names = "default"; +		#pwm-cells = <3>; +		status = "disabled"; +	}; + +	pwm14: pwm@fe700020 { +		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; +		reg = <0x0 0xfe700020 0x0 0x10>; +		clocks = <&cru CLK_PWM3>, <&cru PCLK_PWM3>; +		clock-names = "pwm", "pclk"; +		pinctrl-0 = <&pwm14m0_pins>; +		pinctrl-names = "default"; +		#pwm-cells = <3>; +		status = "disabled"; +	}; + +	pwm15: pwm@fe700030 { +		compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm"; +		reg = <0x0 0xfe700030 0x0 0x10>; +		clocks = <&cru CLK_PWM3>, <&cru PCLK_PWM3>; +		clock-names = "pwm", "pclk"; +		pinctrl-0 = <&pwm15m0_pins>; +		pinctrl-names = "default"; +		#pwm-cells = <3>; +		status = "disabled"; +	}; + +	combphy1: phy@fe830000 { +		compatible = "rockchip,rk3568-naneng-combphy"; +		reg = <0x0 0xfe830000 0x0 0x100>; +		clocks = <&pmucru CLK_PCIEPHY1_REF>, +			 <&cru PCLK_PIPEPHY1>, +			 <&cru PCLK_PIPE>; +		clock-names = "ref", "apb", "pipe"; +		assigned-clocks = <&pmucru CLK_PCIEPHY1_REF>; +		assigned-clock-rates = <100000000>; +		resets = <&cru SRST_PIPEPHY1>; +		rockchip,pipe-grf = <&pipegrf>; +		rockchip,pipe-phy-grf = <&pipe_phy_grf1>; +		#phy-cells = <1>; +		status = "disabled"; +	}; + +	combphy2: phy@fe840000 { +		compatible = "rockchip,rk3568-naneng-combphy"; +		reg = <0x0 0xfe840000 0x0 0x100>; +		clocks = <&pmucru CLK_PCIEPHY2_REF>, +			 <&cru PCLK_PIPEPHY2>, +			 <&cru PCLK_PIPE>; +		clock-names = "ref", "apb", "pipe"; +		assigned-clocks = <&pmucru CLK_PCIEPHY2_REF>; +		assigned-clock-rates = <100000000>; +		resets = <&cru SRST_PIPEPHY2>; +		rockchip,pipe-grf = <&pipegrf>; +		rockchip,pipe-phy-grf = <&pipe_phy_grf2>; +		#phy-cells = <1>; +		status = "disabled"; +	}; + +	usb2phy0: usb2phy@fe8a0000 { +		compatible = "rockchip,rk3568-usb2phy"; +		reg = <0x0 0xfe8a0000 0x0 0x10000>; +		clocks = <&pmucru CLK_USBPHY0_REF>; +		clock-names = "phyclk"; +		clock-output-names = "clk_usbphy0_480m"; +		interrupts = <GIC_SPI 135 IRQ_TYPE_LEVEL_HIGH>; +		rockchip,usbgrf = <&usb2phy0_grf>; +		#clock-cells = <0>; +		status = "disabled"; + +		usb2phy0_host: host-port { +			#phy-cells = <0>; +			status = "disabled"; +		}; + +		usb2phy0_otg: otg-port { +			#phy-cells = <0>; +			status = "disabled"; +		}; +	}; + +	usb2phy1: usb2phy@fe8b0000 { +		compatible = "rockchip,rk3568-usb2phy"; +		reg = <0x0 0xfe8b0000 0x0 0x10000>; +		clocks = <&pmucru CLK_USBPHY1_REF>; +		clock-names = "phyclk"; +		clock-output-names = "clk_usbphy1_480m"; +		interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>; +		rockchip,usbgrf = <&usb2phy1_grf>; +		#clock-cells = <0>; +		status = "disabled"; + +		usb2phy1_host: host-port { +			#phy-cells = <0>; +			status = "disabled"; +		}; + +		usb2phy1_otg: otg-port { +			#phy-cells = <0>; +			status = "disabled"; +		}; +	}; + +	pinctrl: pinctrl { +		compatible = "rockchip,rk3568-pinctrl"; +		rockchip,grf = <&grf>; +		rockchip,pmu = <&pmugrf>; +		#address-cells = <2>; +		#size-cells = <2>; +		ranges; + +		gpio0: gpio@fdd60000 { +			compatible = "rockchip,gpio-bank"; +			reg = <0x0 0xfdd60000 0x0 0x100>; +			interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>; +			clocks = <&pmucru PCLK_GPIO0>, <&pmucru DBCLK_GPIO0>; +			gpio-controller; +			#gpio-cells = <2>; +			interrupt-controller; +			#interrupt-cells = <2>; +		}; + +		gpio1: gpio@fe740000 { +			compatible = "rockchip,gpio-bank"; +			reg = <0x0 0xfe740000 0x0 0x100>; +			interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>; +			clocks = <&cru PCLK_GPIO1>, <&cru DBCLK_GPIO1>; +			gpio-controller; +			#gpio-cells = <2>; +			interrupt-controller; +			#interrupt-cells = <2>; +		}; + +		gpio2: gpio@fe750000 { +			compatible = "rockchip,gpio-bank"; +			reg = <0x0 0xfe750000 0x0 0x100>; +			interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>; +			clocks = <&cru PCLK_GPIO2>, <&cru DBCLK_GPIO2>; +			gpio-controller; +			#gpio-cells = <2>; +			interrupt-controller; +			#interrupt-cells = <2>; +		}; + +		gpio3: gpio@fe760000 { +			compatible = "rockchip,gpio-bank"; +			reg = <0x0 0xfe760000 0x0 0x100>; +			interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>; +			clocks = <&cru PCLK_GPIO3>, <&cru DBCLK_GPIO3>; +			gpio-controller; +			#gpio-cells = <2>; +			interrupt-controller; +			#interrupt-cells = <2>; +		}; + +		gpio4: gpio@fe770000 { +			compatible = "rockchip,gpio-bank"; +			reg = <0x0 0xfe770000 0x0 0x100>; +			interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>; +			clocks = <&cru PCLK_GPIO4>, <&cru DBCLK_GPIO4>; +			gpio-controller; +			#gpio-cells = <2>; +			interrupt-controller; +			#interrupt-cells = <2>; +		}; +	}; +}; + +#include "rk3568-pinctrl.dtsi" diff --git a/arch/arm/include/asm/arch-rockchip/cru_px30.h b/arch/arm/include/asm/arch-rockchip/cru_px30.h index 732ca370403..b66277fc7f3 100644 --- a/arch/arm/include/asm/arch-rockchip/cru_px30.h +++ b/arch/arm/include/asm/arch-rockchip/cru_px30.h @@ -445,5 +445,24 @@ enum {  	/* CRU_PMU_CLK_SEL0_CON */  	CLK_PMU_PCLK_DIV_SHIFT		= 0,  	CLK_PMU_PCLK_DIV_MASK		= 0x1f << CLK_PMU_PCLK_DIV_SHIFT, + +	/* CRU_PMU_CLKSEL3_CON */ +	UART0_PLL_SEL_SHIFT		= 14, +	UART0_PLL_SEL_MASK		= 3 << UART0_PLL_SEL_SHIFT, +	UART0_PLL_SEL_GPLL		= 0, +	UART0_PLL_SEL_24M, +	UART0_PLL_SEL_480M, +	UART0_PLL_SEL_NPLL, +	UART0_DIV_CON_SHIFT		= 0, +	UART0_DIV_CON_MASK		= 0x1f << UART0_DIV_CON_SHIFT, + +	/* CRU_PMU_CLKSEL4_CON */ +	UART0_CLK_SEL_SHIFT		= 14, +	UART0_CLK_SEL_MASK		= 3 << UART0_PLL_SEL_SHIFT, +	UART0_CLK_SEL_UART0		= 0, +	UART0_CLK_SEL_UART0_NP5, +	UART0_CLK_SEL_UART0_FRAC, +	UART0_DIVNP5_SHIFT		= 0, +	UART0_DIVNP5_MASK		= 0x1f << UART0_DIVNP5_SHIFT,  };  #endif diff --git a/arch/arm/mach-rockchip/px30/px30.c b/arch/arm/mach-rockchip/px30/px30.c index be70d30cc8a..0641e6af0f7 100644 --- a/arch/arm/mach-rockchip/px30/px30.c +++ b/arch/arm/mach-rockchip/px30/px30.c @@ -41,6 +41,7 @@ struct mm_region *mem_map = px30_mem_map;  #define PMUGRF_BASE			0xff010000  #define GRF_BASE			0xff140000  #define CRU_BASE			0xff2b0000 +#define PMUCRU_BASE			0xff2bc000  #define VIDEO_PHY_BASE			0xff2e0000  #define SERVICE_CORE_ADDR		0xff508000  #define DDR_FW_BASE			0xff534000 @@ -198,6 +199,21 @@ enum {  	GPIO3A1_UART5_RX	= 4,  }; +/* PMUGRF_GPIO0BL_IOMUX */ +enum { +	GPIO0B3_SHIFT		= 6, +	GPIO0B3_MASK		= 0x3 << GPIO0B3_SHIFT, +	GPIO0B3_GPIO		= 0, +	GPIO0B3_UART0_RX, +	GPIO0B3_PMU_DEBUG1, + +	GPIO0B2_SHIFT		= 4, +	GPIO0B2_MASK		= 0x3 << GPIO0B2_SHIFT, +	GPIO0B2_GPIO		= 0, +	GPIO0B2_UART0_TX, +	GPIO0B2_PMU_DEBUG0, +}; +  /* PMUGRF_GPIO0CL_IOMUX */  enum {  	GPIO0C1_SHIFT		= 2, @@ -276,12 +292,16 @@ int arch_cpu_init(void)  void board_debug_uart_init(void)  {  #if defined(CONFIG_DEBUG_UART_BASE) && \ -	(CONFIG_DEBUG_UART_BASE == 0xff168000) && \ -	(CONFIG_DEBUG_UART_CHANNEL != 1) +	(((CONFIG_DEBUG_UART_BASE == 0xff168000) && \ +	(CONFIG_DEBUG_UART_CHANNEL != 1)) || \ +	CONFIG_DEBUG_UART_BASE == 0xff030000)  	static struct px30_pmugrf * const pmugrf = (void *)PMUGRF_BASE;  #endif  	static struct px30_grf * const grf = (void *)GRF_BASE;  	static struct px30_cru * const cru = (void *)CRU_BASE; +#if defined(CONFIG_DEBUG_UART_BASE) && CONFIG_DEBUG_UART_BASE == 0xff030000 +	static struct px30_pmucru * const pmucru = (void *)PMUCRU_BASE; +#endif  #if defined(CONFIG_DEBUG_UART_BASE) && (CONFIG_DEBUG_UART_BASE == 0xff158000)  	/* uart_sel_clk default select 24MHz */ @@ -346,6 +366,19 @@ void board_debug_uart_init(void)  		     GPIO3A2_MASK | GPIO3A1_MASK,  		     GPIO3A2_UART5_TX << GPIO3A2_SHIFT |  		     GPIO3A1_UART5_RX << GPIO3A1_SHIFT); +#elif defined(CONFIG_DEBUG_UART_BASE) && (CONFIG_DEBUG_UART_BASE == 0xff030000) +	/* uart_sel_clk default select 24MHz */ +	rk_clrsetreg(&pmucru->pmu_clksel_con[3], +		     UART0_PLL_SEL_MASK | UART0_DIV_CON_MASK, +		     UART0_PLL_SEL_24M << UART0_PLL_SEL_SHIFT | 0); +	rk_clrsetreg(&pmucru->pmu_clksel_con[4], +		     UART0_CLK_SEL_MASK, +		     UART0_CLK_SEL_UART0 << UART0_CLK_SEL_SHIFT); + +	rk_clrsetreg(&pmugrf->gpio0bl_iomux, +		     GPIO0B3_MASK | GPIO0B2_MASK, +		     GPIO0B3_UART0_RX << GPIO0B3_SHIFT | +		     GPIO0B2_UART0_TX << GPIO0B2_SHIFT);  #else  	/* GRF_IOFUNC_CON0 */  	enum { diff --git a/arch/arm/mach-rockchip/rk3288/Kconfig b/arch/arm/mach-rockchip/rk3288/Kconfig index e8c57843a38..1be2b585212 100644 --- a/arch/arm/mach-rockchip/rk3288/Kconfig +++ b/arch/arm/mach-rockchip/rk3288/Kconfig @@ -89,7 +89,6 @@ config TARGET_MIQI_RK3288  config TARGET_PHYCORE_RK3288  	bool "phyCORE-RK3288"          select BOARD_LATE_INIT -	select SPL_BOARD_INIT if SPL  	help  	  Add basic support for the PCM-947 carrier board, a RK3288 based  	  development board made by PHYTEC. This board works in a combination diff --git a/arch/arm/mach-rockchip/rk3399/rk3399.c b/arch/arm/mach-rockchip/rk3399/rk3399.c index 21db03b961c..a7cc91a952c 100644 --- a/arch/arm/mach-rockchip/rk3399/rk3399.c +++ b/arch/arm/mach-rockchip/rk3399/rk3399.c @@ -15,6 +15,7 @@  #include <asm/io.h>  #include <asm/arch-rockchip/bootrom.h>  #include <asm/arch-rockchip/clock.h> +#include <asm/arch-rockchip/cru.h>  #include <asm/arch-rockchip/gpio.h>  #include <asm/arch-rockchip/grf_rk3399.h>  #include <asm/arch-rockchip/hardware.h> @@ -221,12 +222,17 @@ void spl_perform_fixups(struct spl_image_info *spl_image)  			   "u-boot,spl-boot-device", boot_ofpath);  } -#if defined(SPL_GPIO)  static void rk3399_force_power_on_reset(void)  {  	ofnode node;  	struct gpio_desc sysreset_gpio; +	if (!IS_ENABLED(CONFIG_SPL_GPIO)) { +		debug("%s: trying to force a power-on reset but no GPIO " +		      "support in SPL!\n", __func__); +		return; +	} +  	debug("%s: trying to force a power-on reset\n", __func__);  	node = ofnode_path("/config"); @@ -243,7 +249,6 @@ static void rk3399_force_power_on_reset(void)  	dm_gpio_set_value(&sysreset_gpio, 1);  } -#endif  void __weak led_setup(void)  { @@ -253,35 +258,37 @@ void spl_board_init(void)  {  	led_setup(); -#if defined(SPL_GPIO) -	struct rockchip_cru *cru = rockchip_get_cru(); +	if (IS_ENABLED(CONFIG_SPL_GPIO)) { +		struct rockchip_cru *cru = rockchip_get_cru(); -	/* -	 * The RK3399 resets only 'almost all logic' (see also in the TRM -	 * "3.9.4 Global software reset"), when issuing a software reset. -	 * This may cause issues during boot-up for some configurations of -	 * the application software stack. -	 * -	 * To work around this, we test whether the last reset reason was -	 * a power-on reset and (if not) issue an overtemp-reset to reset -	 * the entire module. -	 * -	 * While this was previously fixed by modifying the various places -	 * that could generate a software reset (e.g. U-Boot's sysreset -	 * driver, the ATF or Linux), we now have it here to ensure that -	 * we no longer have to track this through the various components. -	 */ -	if (cru->glb_rst_st != 0) -		rk3399_force_power_on_reset(); -#endif +		/* +		 * The RK3399 resets only 'almost all logic' (see also in the +		 * TRM "3.9.4 Global software reset"), when issuing a software +		 * reset. This may cause issues during boot-up for some +		 * configurations of the application software stack. +		 * +		 * To work around this, we test whether the last reset reason +		 * was a power-on reset and (if not) issue an overtemp-reset to +		 * reset the entire module. +		 * +		 * While this was previously fixed by modifying the various +		 * places that could generate a software reset (e.g. U-Boot's +		 * sysreset driver, the ATF or Linux), we now have it here to +		 * ensure that we no longer have to track this through the +		 * various components. +		 */ +		if (cru->glb_rst_st != 0) +			rk3399_force_power_on_reset(); +	} -#if defined(SPL_DM_REGULATOR) -	/* -	 * Turning the eMMC and SPI back on (if disabled via the Qseven -	 * BIOS_ENABLE) signal is done through a always-on regulator). -	 */ -	if (regulators_enable_boot_on(false)) -		debug("%s: Cannot enable boot on regulator\n", __func__); -#endif +	if (IS_ENABLED(CONFIG_SPL_DM_REGULATOR)) { +		/* +		 * Turning the eMMC and SPI back on (if disabled via the Qseven +		 * BIOS_ENABLE) signal is done through a always-on regulator). +		 */ +		if (regulators_enable_boot_on(false)) +			debug("%s: Cannot enable boot on regulator\n", +			      __func__); +	}  }  #endif | 
