diff mbox series

[v2,3/3] arm: dts: rockchip: rk3288: partial sync from Linux

Message ID cb7485e4-4956-46e5-bf4b-e11a29461556@gmail.com
State Accepted
Delegated to: Kever Yang
Headers show
Series [v2,1/3] arm: dts: rockchip: rk3288: move thermal sub nodes to dtsi | expand

Commit Message

Johan Jonker Sept. 28, 2022, 2:24 p.m. UTC
Partial sync of rk3288.dtsi from Linux version 5.18

Changed:
  only properties and functions that are not yet included
  swap some clocks positions
  fix some irq numbers
  style and sort nodes

Signed-off-by: Johan Jonker <jbx6244@gmail.com>
---

Changed V2:
  rebase
---
 arch/arm/dts/rk3288-veyron-jerry.dts |   6 -
 arch/arm/dts/rk3288-veyron.dtsi      |   4 -
 arch/arm/dts/rk3288.dtsi             | 352 ++++++++++++++++++++++-----
 3 files changed, 296 insertions(+), 66 deletions(-)

Comments

Kever Yang Oct. 17, 2022, 12:56 p.m. UTC | #1
On 2022/9/28 22:24, Johan Jonker wrote:
> Partial sync of rk3288.dtsi from Linux version 5.18
>
> Changed:
>    only properties and functions that are not yet included
>    swap some clocks positions
>    fix some irq numbers
>    style and sort nodes
>
> Signed-off-by: Johan Jonker <jbx6244@gmail.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>

Thanks,
- Kever
> ---
>
> Changed V2:
>    rebase
> ---
>   arch/arm/dts/rk3288-veyron-jerry.dts |   6 -
>   arch/arm/dts/rk3288-veyron.dtsi      |   4 -
>   arch/arm/dts/rk3288.dtsi             | 352 ++++++++++++++++++++++-----
>   3 files changed, 296 insertions(+), 66 deletions(-)
>
> diff --git a/arch/arm/dts/rk3288-veyron-jerry.dts b/arch/arm/dts/rk3288-veyron-jerry.dts
> index ff7669eb..40fee55c 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 4a9c27a4..35db8827 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 f473691c..8c394c1e 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>;
> @@ -141,6 +151,26 @@
>   		};
>   	};
>   
> +	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>;
> +		};
> +	};
> +
>   	xin24m: oscillator {
>   		compatible = "fixed-clock";
>   		clock-frequency = <24000000>;
> @@ -149,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 {
> @@ -173,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";
>   	};
>   
> @@ -185,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";
>   	};
>   
> @@ -197,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";
>   	};
>   
> @@ -209,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";
>   	};
>   
> @@ -219,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";
>   	};
>   
> @@ -318,6 +366,7 @@
>   		pinctrl-0 = <&i2c5_xfer>;
>   		status = "disabled";
>   	};
> +
>   	uart0: serial@ff180000 {
>   		compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
>   		reg = <0xff180000 0x100>;
> @@ -326,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";
> @@ -339,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";
> @@ -356,6 +409,7 @@
>   		pinctrl-0 = <&uart2_xfer>;
>   		status = "disabled";
>   	};
> +
>   	uart3: serial@ff1b0000 {
>   		compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
>   		reg = <0xff1b0000 0x100>;
> @@ -364,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";
> @@ -377,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";
> @@ -388,7 +446,8 @@
>   		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";
>   	};
> @@ -503,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 {
> @@ -516,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>;
> @@ -534,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";
>   	};
>   
> @@ -547,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";
> @@ -567,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";
> @@ -647,7 +714,7 @@
>   		status = "disabled";
>   	};
>   
> -	bus_intmem: bus_intmem@ff700000 {
> +	bus_intmem: sram@ff700000 {
>   		compatible = "mmio-sram";
>   		reg = <0xff700000 0x18000>;
>   		#address-cells = <1>;
> @@ -659,7 +726,7 @@
>   		};
>   	};
>   
> -	sram@ff720000 {
> +	pmu_sram: sram@ff720000 {
>   		compatible = "rockchip,rk3288-pmu-sram", "mmio-sram";
>   		reg = <0xff720000 0x1000>;
>   	};
> @@ -701,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";
>   	};
>   
> @@ -709,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>;
> @@ -723,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>;
>   			};
> -
>   		};
>   	};
>   
> @@ -774,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";
> @@ -786,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>;
>   			};
> -
>   		};
>   	};
>   
> @@ -818,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";
> @@ -827,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>;
> @@ -858,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>;
> @@ -885,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>;
> @@ -911,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>;
> @@ -933,31 +1059,36 @@
>   		};
>   	};
>   
> -	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 {
> @@ -999,13 +1130,84 @@
>   		};
>   	};
>   
> +	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";
>   	};
> @@ -1013,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 {
> @@ -1072,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>;
>   
> @@ -1191,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 {
> @@ -1210,7 +1440,7 @@
>   			drive-strength = <12>;
>   		};
>   
> -		sleep {
> +		suspend {
>   			global_pwroff: global-pwroff {
>   				rockchip,pins = <0 RK_PA0 1 &pcfg_pull_none>;
>   			};
> @@ -1228,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>,
> @@ -1281,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>,
> @@ -1299,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>;
>   			};
>   
> @@ -1490,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 {
> @@ -1505,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 {
> @@ -1528,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 {
> @@ -1538,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>;
>   			};
Kever Yang Oct. 18, 2022, 12:54 a.m. UTC | #2
+ Add Wadim Egorov,

Hi Johan, Wadim,


     After I apply this patchset, the phycore-rk3288 board is not able 
to pass the build, due to the SPL image is too large.

Is it possible for phycore-rk3288 to Enable TPL like other rk3288 boards?

        arm:  +   phycore-rk3288
+binman: Error 1 running 'mkimage -d ./mkimage.simple-bin.mkimage -n 
rk3288 -T rksd ./idbloader.img': Error: SPL image is too large (size 
0x8800 than 0x8000)
+Error: Bad parameters for image type

Thanks,

- Kever

On 2022/9/28 22:24, Johan Jonker wrote:
> Partial sync of rk3288.dtsi from Linux version 5.18
>
> Changed:
>    only properties and functions that are not yet included
>    swap some clocks positions
>    fix some irq numbers
>    style and sort nodes
>
> Signed-off-by: Johan Jonker <jbx6244@gmail.com>
> ---
>
> Changed V2:
>    rebase
> ---
>   arch/arm/dts/rk3288-veyron-jerry.dts |   6 -
>   arch/arm/dts/rk3288-veyron.dtsi      |   4 -
>   arch/arm/dts/rk3288.dtsi             | 352 ++++++++++++++++++++++-----
>   3 files changed, 296 insertions(+), 66 deletions(-)
>
> diff --git a/arch/arm/dts/rk3288-veyron-jerry.dts b/arch/arm/dts/rk3288-veyron-jerry.dts
> index ff7669eb..40fee55c 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 4a9c27a4..35db8827 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 f473691c..8c394c1e 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>;
> @@ -141,6 +151,26 @@
>   		};
>   	};
>   
> +	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>;
> +		};
> +	};
> +
>   	xin24m: oscillator {
>   		compatible = "fixed-clock";
>   		clock-frequency = <24000000>;
> @@ -149,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 {
> @@ -173,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";
>   	};
>   
> @@ -185,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";
>   	};
>   
> @@ -197,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";
>   	};
>   
> @@ -209,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";
>   	};
>   
> @@ -219,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";
>   	};
>   
> @@ -318,6 +366,7 @@
>   		pinctrl-0 = <&i2c5_xfer>;
>   		status = "disabled";
>   	};
> +
>   	uart0: serial@ff180000 {
>   		compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
>   		reg = <0xff180000 0x100>;
> @@ -326,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";
> @@ -339,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";
> @@ -356,6 +409,7 @@
>   		pinctrl-0 = <&uart2_xfer>;
>   		status = "disabled";
>   	};
> +
>   	uart3: serial@ff1b0000 {
>   		compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
>   		reg = <0xff1b0000 0x100>;
> @@ -364,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";
> @@ -377,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";
> @@ -388,7 +446,8 @@
>   		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";
>   	};
> @@ -503,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 {
> @@ -516,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>;
> @@ -534,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";
>   	};
>   
> @@ -547,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";
> @@ -567,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";
> @@ -647,7 +714,7 @@
>   		status = "disabled";
>   	};
>   
> -	bus_intmem: bus_intmem@ff700000 {
> +	bus_intmem: sram@ff700000 {
>   		compatible = "mmio-sram";
>   		reg = <0xff700000 0x18000>;
>   		#address-cells = <1>;
> @@ -659,7 +726,7 @@
>   		};
>   	};
>   
> -	sram@ff720000 {
> +	pmu_sram: sram@ff720000 {
>   		compatible = "rockchip,rk3288-pmu-sram", "mmio-sram";
>   		reg = <0xff720000 0x1000>;
>   	};
> @@ -701,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";
>   	};
>   
> @@ -709,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>;
> @@ -723,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>;
>   			};
> -
>   		};
>   	};
>   
> @@ -774,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";
> @@ -786,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>;
>   			};
> -
>   		};
>   	};
>   
> @@ -818,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";
> @@ -827,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>;
> @@ -858,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>;
> @@ -885,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>;
> @@ -911,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>;
> @@ -933,31 +1059,36 @@
>   		};
>   	};
>   
> -	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 {
> @@ -999,13 +1130,84 @@
>   		};
>   	};
>   
> +	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";
>   	};
> @@ -1013,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 {
> @@ -1072,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>;
>   
> @@ -1191,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 {
> @@ -1210,7 +1440,7 @@
>   			drive-strength = <12>;
>   		};
>   
> -		sleep {
> +		suspend {
>   			global_pwroff: global-pwroff {
>   				rockchip,pins = <0 RK_PA0 1 &pcfg_pull_none>;
>   			};
> @@ -1228,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>,
> @@ -1281,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>,
> @@ -1299,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>;
>   			};
>   
> @@ -1490,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 {
> @@ -1505,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 {
> @@ -1528,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 {
> @@ -1538,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>;
>   			};
Johan Jonker Oct. 18, 2022, 10:54 a.m. UTC | #3
Hi Kever,


In the past Wadim in a private messege replied:

" FYI: The SPL code phycore_init() from phycore-rk3288.c can be removed. This should reduce the SPL size. Feel free to remove it if you run into SPL size limits. "

Removal reduzes size from 32,720 to 32,492.
Is that enough?

What option would you like:
1: remove phycore_init()
2: remove CONFIG_SPL from phycore-rk3288_defconfig
3: remove complete phycore-rk3288 board if no feedback from Phytec maintainer.

Johan

===

static struct spl_info spl_infos[] = {
	{ "rk3288", "RK32", 0x8000, false, RK_HEADER_V1 },
};

8000 hexadecimal = 32768 decimal

===

Before phycore_init() removal:

u-boot-spl.bin size: 32.0 KiB (32,720 bytes)

===

After phycore_init() removal:
u-boot-spl.bin size: 31.7 KiB (32,492 bytes)

===

rockchip: rk3288-phycore: move phycore_init() to its own board file 
https://source.denx.de/u-boot/u-boot/-/commit/8f5b5aac7671fcf7ad681b1f690b853cacb3fe3d


On 10/18/22 02:54, Kever Yang wrote:
> + Add Wadim Egorov,
> 
> Hi Johan, Wadim,
> 
> 
>     After I apply this patchset, the phycore-rk3288 board is not able to pass the build, due to the SPL image is too large.
> 
> Is it possible for phycore-rk3288 to Enable TPL like other rk3288 boards?
> 
>        arm:  +   phycore-rk3288
> +binman: Error 1 running 'mkimage -d ./mkimage.simple-bin.mkimage -n rk3288 -T rksd ./idbloader.img': Error: SPL image is too large (size 0x8800 than 0x8000)
> +Error: Bad parameters for image type
> 
> Thanks,
> 
> - Kever
> 
> On 2022/9/28 22:24, Johan Jonker wrote:
>> Partial sync of rk3288.dtsi from Linux version 5.18
>>
>> Changed:
>>    only properties and functions that are not yet included
>>    swap some clocks positions
>>    fix some irq numbers
>>    style and sort nodes
>>
>> Signed-off-by: Johan Jonker <jbx6244@gmail.com>
>> ---
>>
>> Changed V2:
>>    rebase
>> ---
>>   arch/arm/dts/rk3288-veyron-jerry.dts |   6 -
>>   arch/arm/dts/rk3288-veyron.dtsi      |   4 -
>>   arch/arm/dts/rk3288.dtsi             | 352 ++++++++++++++++++++++-----
>>   3 files changed, 296 insertions(+), 66 deletions(-)
>>
>> diff --git a/arch/arm/dts/rk3288-veyron-jerry.dts b/arch/arm/dts/rk3288-veyron-jerry.dts
>> index ff7669eb..40fee55c 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 4a9c27a4..35db8827 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 f473691c..8c394c1e 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>;
>> @@ -141,6 +151,26 @@
>>           };
>>       };
>>   +    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>;
>> +        };
>> +    };
>> +
>>       xin24m: oscillator {
>>           compatible = "fixed-clock";
>>           clock-frequency = <24000000>;
>> @@ -149,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 {
>> @@ -173,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";
>>       };
>>   @@ -185,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";
>>       };
>>   @@ -197,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";
>>       };
>>   @@ -209,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";
>>       };
>>   @@ -219,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";
>>       };
>>   @@ -318,6 +366,7 @@
>>           pinctrl-0 = <&i2c5_xfer>;
>>           status = "disabled";
>>       };
>> +
>>       uart0: serial@ff180000 {
>>           compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
>>           reg = <0xff180000 0x100>;
>> @@ -326,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";
>> @@ -339,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";
>> @@ -356,6 +409,7 @@
>>           pinctrl-0 = <&uart2_xfer>;
>>           status = "disabled";
>>       };
>> +
>>       uart3: serial@ff1b0000 {
>>           compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
>>           reg = <0xff1b0000 0x100>;
>> @@ -364,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";
>> @@ -377,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";
>> @@ -388,7 +446,8 @@
>>           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";
>>       };
>> @@ -503,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 {
>> @@ -516,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>;
>> @@ -534,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";
>>       };
>>   @@ -547,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";
>> @@ -567,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";
>> @@ -647,7 +714,7 @@
>>           status = "disabled";
>>       };
>>   -    bus_intmem: bus_intmem@ff700000 {
>> +    bus_intmem: sram@ff700000 {
>>           compatible = "mmio-sram";
>>           reg = <0xff700000 0x18000>;
>>           #address-cells = <1>;
>> @@ -659,7 +726,7 @@
>>           };
>>       };
>>   -    sram@ff720000 {
>> +    pmu_sram: sram@ff720000 {
>>           compatible = "rockchip,rk3288-pmu-sram", "mmio-sram";
>>           reg = <0xff720000 0x1000>;
>>       };
>> @@ -701,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";
>>       };
>>   @@ -709,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>;
>> @@ -723,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>;
>>               };
>> -
>>           };
>>       };
>>   @@ -774,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";
>> @@ -786,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>;
>>               };
>> -
>>           };
>>       };
>>   @@ -818,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";
>> @@ -827,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>;
>> @@ -858,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>;
>> @@ -885,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>;
>> @@ -911,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>;
>> @@ -933,31 +1059,36 @@
>>           };
>>       };
>>   -    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 {
>> @@ -999,13 +1130,84 @@
>>           };
>>       };
>>   +    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";
>>       };
>> @@ -1013,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 {
>> @@ -1072,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>;
>>   @@ -1191,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 {
>> @@ -1210,7 +1440,7 @@
>>               drive-strength = <12>;
>>           };
>>   -        sleep {
>> +        suspend {
>>               global_pwroff: global-pwroff {
>>                   rockchip,pins = <0 RK_PA0 1 &pcfg_pull_none>;
>>               };
>> @@ -1228,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>,
>> @@ -1281,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>,
>> @@ -1299,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>;
>>               };
>>   @@ -1490,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 {
>> @@ -1505,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 {
>> @@ -1528,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 {
>> @@ -1538,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 mbox series

Patch

diff --git a/arch/arm/dts/rk3288-veyron-jerry.dts b/arch/arm/dts/rk3288-veyron-jerry.dts
index ff7669eb..40fee55c 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 4a9c27a4..35db8827 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 f473691c..8c394c1e 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>;
@@ -141,6 +151,26 @@ 
 		};
 	};
 
+	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>;
+		};
+	};
+
 	xin24m: oscillator {
 		compatible = "fixed-clock";
 		clock-frequency = <24000000>;
@@ -149,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 {
@@ -173,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";
 	};
 
@@ -185,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";
 	};
 
@@ -197,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";
 	};
 
@@ -209,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";
 	};
 
@@ -219,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";
 	};
 
@@ -318,6 +366,7 @@ 
 		pinctrl-0 = <&i2c5_xfer>;
 		status = "disabled";
 	};
+
 	uart0: serial@ff180000 {
 		compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
 		reg = <0xff180000 0x100>;
@@ -326,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";
@@ -339,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";
@@ -356,6 +409,7 @@ 
 		pinctrl-0 = <&uart2_xfer>;
 		status = "disabled";
 	};
+
 	uart3: serial@ff1b0000 {
 		compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
 		reg = <0xff1b0000 0x100>;
@@ -364,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";
@@ -377,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";
@@ -388,7 +446,8 @@ 
 		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";
 	};
@@ -503,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 {
@@ -516,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>;
@@ -534,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";
 	};
 
@@ -547,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";
@@ -567,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";
@@ -647,7 +714,7 @@ 
 		status = "disabled";
 	};
 
-	bus_intmem: bus_intmem@ff700000 {
+	bus_intmem: sram@ff700000 {
 		compatible = "mmio-sram";
 		reg = <0xff700000 0x18000>;
 		#address-cells = <1>;
@@ -659,7 +726,7 @@ 
 		};
 	};
 
-	sram@ff720000 {
+	pmu_sram: sram@ff720000 {
 		compatible = "rockchip,rk3288-pmu-sram", "mmio-sram";
 		reg = <0xff720000 0x1000>;
 	};
@@ -701,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";
 	};
 
@@ -709,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>;
@@ -723,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>;
 			};
-
 		};
 	};
 
@@ -774,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";
@@ -786,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>;
 			};
-
 		};
 	};
 
@@ -818,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";
@@ -827,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>;
@@ -858,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>;
@@ -885,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>;
@@ -911,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>;
@@ -933,31 +1059,36 @@ 
 		};
 	};
 
-	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 {
@@ -999,13 +1130,84 @@ 
 		};
 	};
 
+	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";
 	};
@@ -1013,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 {
@@ -1072,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>;
 
@@ -1191,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 {
@@ -1210,7 +1440,7 @@ 
 			drive-strength = <12>;
 		};
 
-		sleep {
+		suspend {
 			global_pwroff: global-pwroff {
 				rockchip,pins = <0 RK_PA0 1 &pcfg_pull_none>;
 			};
@@ -1228,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>,
@@ -1281,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>,
@@ -1299,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>;
 			};
 
@@ -1490,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 {
@@ -1505,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 {
@@ -1528,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 {
@@ -1538,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>;
 			};