• 周三. 6月 18th, 2025

dts — rk3288-evb-android-rk818-mipi.dts

关键词:rk3288-evb-android-rk818-mipi.dts ,linux_3.10,rockchip,dts

dts — rk3288-evb-android-rk818-mipi.dts

/*
 * Copyright (c) 2017 Fuzhou Rockchip Electronics Co., Ltd
 *
 * This file is dual-licensed: you can use it either under the terms
 * of the GPL or the X11 license, at your option. Note that this dual
 * licensing only applies to this file, and not this project as a
 * whole.
 *
 *  a) This file is free software; you can redistribute it and/or
 *     modify it under the terms of the GNU General Public License as
 *     published by the Free Software Foundation; either version 2 of the
 *     License, or (at your option) any later version.
 *
 *     This file is distributed in the hope that it will be useful,
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *     GNU General Public License for more details.
 *
 * Or, alternatively,
 *
 *  b) Permission is hereby granted, free of charge, to any person
 *     obtaining a copy of this software and associated documentation
 *     files (the "Software"), to deal in the Software without
 *     restriction, including without limitation the rights to use,
 *     copy, modify, merge, publish, distribute, sublicense, and/or
 *     sell copies of the Software, and to permit persons to whom the
 *     Software is furnished to do so, subject to the following
 *     conditions:
 *
 *     The above copyright notice and this permission notice shall be
 *     included in all copies or substantial portions of the Software.
 *
 *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 *     OTHER DEALINGS IN THE SOFTWARE.
 */

/dts-v1/;
#include "rk3288-evb.dtsi"
#include "rk3288-android.dtsi"

/ {
	compatible = "rockchip,rk3288-evb-android-rk818", "rockchip,rk3288";

	sdio_pwrseq: sdio-pwrseq {
		compatible = "mmc-pwrseq-simple";
		clocks = <&rk818 1>;
		clock-names = "ext_clock";

		/*
		 * On the module itself this is one of these (depending
		 * on the actual card populated):
		 * - SDIO_RESET_L_WL_REG_ON
		 * - PDN (power down when low)
		 */
		reset-gpios = <&gpio4 28 GPIO_ACTIVE_LOW>;
	};

	wireless-bluetooth {
		clocks = <&rk818 1>;
		clock-names = "ext_clock";
	};

	/delete-node/ sdmmc-regulator;

	vcc_lcd: vcc-lcd {
		compatible = "regulator-fixed";
		enable-active-high;
		regulator-boot-on;
		gpio = <&gpio7 3 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&lcd_en>;
		regulator-name = "vcc_lcd";
		vin-supply = <&vcc_io>;
	};

	xin32k: xin32k {
		compatible = "fixed-clock";
		clock-frequency = <32768>;
		clock-output-names = "xin32k";
		#clock-cells = <0>;
	};
};

&cpu0 {
	cpu-supply = <&vdd_cpu>;
};

&edp_panel {
	backlight = <&backlight>;
	power-supply = <&vcc_lcd>;
};

&gpu {
	status = "okay";
	mali-supply = <&vdd_gpu>;
};

&hdmi_analog_sound {
	status = "okay";
};

&i2c0 {
	clock-frequency = <400000>;

	vdd_cpu: syr827@40 {
		compatible = "silergy,syr827";
		reg = <0x40>;
		vin-supply = <&vcc_sys>;
		regulator-compatible = "fan53555-reg";
		pinctrl-0 = <&vsel1_gpio>;
		vsel-gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>;
		regulator-name = "vdd_cpu";
		regulator-min-microvolt = <712500>;
		regulator-max-microvolt = <1500000>;
		regulator-ramp-delay = <1000>;
		fcs,suspend-voltage-selector = <1>;
		regulator-always-on;
		regulator-boot-on;
		regulator-initial-state = <3>;
		regulator-state-mem {
			regulator-off-in-suspend;
		};
	};

	rk818: pmic@1c {
		compatible = "rockchip,rk818";
		reg = <0x1c>;
		status = "okay";

		clock-output-names = "rk818-clkout1", "wifibt_32kin";
		interrupt-parent = <&gpio0>;
		interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
		pinctrl-names = "default";
		pinctrl-0 = <&pmic_int>;
		rockchip,system-power-controller;
		wakeup-source;
		#clock-cells = <1>;

		vcc1-supply = <&vcc_sys>;
		vcc2-supply = <&vcc_sys>;
		vcc3-supply = <&vcc_sys>;
		vcc4-supply = <&vcc_sys>;
		vcc6-supply = <&vcc_sys>;
		vcc7-supply = <&vcc_sys>;
		vcc8-supply = <&vcc_sys>;
		vcc9-supply = <&vcc_io>;
		boost-supply = <&vcc_sys>;
		h_5v-supply = <&boost>;

		regulators {
			vdd_logic: DCDC_REG1 {
				regulator-name = "vdd_logic";
				regulator-always-on;
				regulator-boot-on;
				regulator-min-microvolt = <800000>;
				regulator-max-microvolt = <1250000>;
				regulator-ramp-delay = <6001>;
				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <1000000>;
				};
			};

			vdd_gpu: DCDC_REG2 {
				regulator-name = "vdd_gpu";
				regulator-always-on;
				regulator-boot-on;
				regulator-min-microvolt = <800000>;
				regulator-max-microvolt = <1250000>;
				regulator-ramp-delay = <6001>;
				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <1000000>;
				};
			};

			vcc_ddr: DCDC_REG3 {
				regulator-always-on;
				regulator-boot-on;
				regulator-name = "vcc_ddr";
				regulator-state-mem {
					regulator-on-in-suspend;
				};
			};

			vcc_io: DCDC_REG4 {
				regulator-always-on;
				regulator-boot-on;
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-name = "vcc_io";
				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};

			boost: DCDC_BOOST {
				regulator-always-on;
				regulator-boot-on;
				regulator-min-microvolt = <5000000>;
				regulator-max-microvolt = <5000000>;
				regulator-name = "boost";
				regulator-state-mem {
					regulator-on-in-suspend;
				};
			};

			vcca_codec: LDO_REG1 {
				regulator-always-on;
				regulator-boot-on;
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-name = "vcca_codec";
				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};

			vcc_tp: LDO_REG2 {
				regulator-always-on;
				regulator-boot-on;
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-name = "vcc_tp";
				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};

			vdd_10: LDO_REG3 {
				regulator-always-on;
				regulator-boot-on;
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1000000>;
				regulator-name = "vdd_10";
				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <1000000>;
				};
			};

			vcc18_lcd: LDO_REG4 {
				regulator-always-on;
				regulator-boot-on;
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-name = "vcc18_lcd";
				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};

			vccio_pmu: LDO_REG5 {
				regulator-always-on;
				regulator-boot-on;
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-name = "vccio_pmu";
				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <3300000>;
				};
			};

			vdd10_lcd: LDO_REG6 {
				regulator-always-on;
				regulator-boot-on;
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1000000>;
				regulator-name = "vdd10_lcd";
				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};

			vcc_18: LDO_REG7 {
				regulator-always-on;
				regulator-boot-on;
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-name = "vcc_18";
				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <1800000>;
				};
			};

			vccio_wl: LDO_REG8 {
				regulator-always-on;
				regulator-boot-on;
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <3300000>;
				regulator-name = "vccio_wl";
				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <3300000>;
				};
			};

			vccio_sd: LDO_REG9 {
				regulator-always-on;
				regulator-boot-on;
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <3300000>;
				regulator-name = "vccio_sd";
				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <3300000>;
				};
			};

			vcc_sd: SWITCH_REG {
				regulator-always-on;
				regulator-boot-on;
				regulator-name = "vcc_sd";
				regulator-state-mem {
					regulator-on-in-suspend;
				};
			};

			h_5v: HDMI_SWITCH {
				regulator-always-on;
				regulator-boot-on;
				regulator-name = "h_5v";
				regulator-state-mem {
					regulator-on-in-suspend;
				};
			};
		};
	};
};

&i2c1 {
	status = "okay";
	clock-frequency = <400000>;

	mpu6050@68 {
		compatible = "invensense,mpu6050";
		status = "okay";
		pinctrl-names = "default";
		pinctrl-0 = <&mpu6050_irq_gpio>;
		reg = <0x68>;
		irq-gpio = <&gpio8 0 IRQ_TYPE_EDGE_RISING>;
		mpu-int_config = <0x10>;
		mpu-level_shifter = <0>;
		mpu-orientation = <0 1 0 1 0 0 0 0 1>;
		orientation-x= <0>;
		orientation-y= <1>;
		orientation-z= <0>;
		support-hw-poweroff = <1>;
		mpu-debug = <1>;
	};
};

&lvds_panel {
	power-supply = <&vcc_lcd>;
};

&dsi0 {
	status = "okay";
	rockchip,lane-rate = <1000>;

	panel: panel {
		compatible = "simple-panel-dsi";
		reg = <0>;
		backlight = <&backlight>;
		enable-gpios = <&gpio7 4 GPIO_ACTIVE_HIGH>;
		power-supply = <&vcc_lcd>;
		dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST)>;
		dsi,format = <MIPI_DSI_FMT_RGB888>;
		dsi,lanes = <4>;
		reset-delay-ms = <20>;
		init-delay-ms = <20>;
		enable-delay-ms = <120>;
		prepare-delay-ms = <120>;
		status = "okay";

		disp_timings: display-timings {
			native-mode = <&timing0>;

			timing0: timing0 {
				clock-frequency = <150000000>;
				hactive = <1200>;
				vactive = <1920>;
				hback-porch = <80>;
				hfront-porch = <81>;
				vback-porch = <21>;
				vfront-porch = <21>;
				hsync-len = <10>;
				vsync-len = <3>;
				hsync-active = <0>;
				vsync-active = <0>;
				de-active = <0>;
				pixelclk-active = <0>;
			};
		};
	};
};

&route_dsi0 {
	status = "okay";
};

&tsadc {
	rockchip,hw-tshut-polarity = <1>; /* tshut polarity 0:LOW 1:HIGH */
};

&pinctrl {
	lcd {
		lcd_en: lcd-en  {
			rockchip,pins = <7 3 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	mpu6050 {
		mpu6050_irq_gpio: mpu6050-irq-gpio {
			rockchip,pins = <8 0 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	pmic {
		pmic_int: pmic-int {
			rockchip,pins = <RK_GPIO0 4 RK_FUNC_GPIO &pcfg_pull_up>;
		};
		vsel1_gpio: vsel1-gpio {
			rockchip,pins = <RK_GPIO0 0 RK_FUNC_GPIO &pcfg_pull_down>;
		};
	};
};
-con";
						rockchip,bits = <0 7>;
						clocks = <&clk_spdif_pll>;
						clock-output-names = "clk_spdif_pll";
						rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>;
						#clock-cells = <0>;
						rockchip,clkops-idx =
							<CLKOPS_RATE_MUX_DIV>;
						rockchip,flags = <CLK_SET_RATE_NO_REPARENT>;
					};

					/* reg[7]: reserved */

					clk_spdif: spdif_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <8 2>;
						clocks = <&spdif_div>, <&spdif_frac>, <&xin12m>;
						clock-output-names = "clk_spdif";
						#clock-cells = <0>;
						rockchip,clkops-idx =
							<CLKOPS_RATE_RK3288_I2S>;
						rockchip,flags = <CLK_SET_RATE_PARENT>;
					};

					clk_spdif_pll: spdif_pll_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <10 2>;
						clocks = <&clk_apll>,<&clk_dpll>, <&clk_gpll>;
						clock-output-names = "clk_spdif_pll";
						#clock-cells = <0>;
						#clock-init-cells = <1>;
					};

					/* reg[15:12]: reserved */
				};

				clk_sel_con7: sel-con@0060 {
					compatible = "rockchip,rk3188-selcon";
					reg = <0x0060 0x4>;
					#address-cells = <1>;
					#size-cells = <1>;

					i2s_frac: i2s_frac {
						compatible = "rockchip,rk3188-frac-con";
						clocks = <&clk_i2s_pll>;
						clock-output-names = "i2s_frac";
						/* numerator	denominator */
						rockchip,bits = <0 32>;
						rockchip,clkops-idx =
							<CLKOPS_RATE_FRAC>;
						#clock-cells = <0>;
					};
				};

				clk_sel_con9: sel-con@0068 {
					compatible = "rockchip,rk3188-selcon";
					reg = <0x0068 0x4>;
					#address-cells = <1>;
					#size-cells = <1>;

					spdif_frac: spdif_frac {
						compatible = "rockchip,rk3188-frac-con";
						clocks = <&spdif_div>;
						clock-output-names = "spdif_frac";
						/* numerator	denominator */
						rockchip,bits = <0 32>;
						rockchip,clkops-idx =
							<CLKOPS_RATE_FRAC>;
						#clock-cells = <0>;
					};
				};

				clk_sel_con10: sel-con@006c {
					compatible = "rockchip,rk3188-selcon";
					reg = <0x006c 0x4>;
					#address-cells = <1>;
					#size-cells = <1>;

					aclk_peri_pre_div: aclk_peri_pre_div {
						compatible = "rockchip,rk3188-div-con";
						rockchip,bits = <0 5>;
						clocks = <&aclk_peri_pre>;
						clock-output-names = "aclk_peri_pre";
						rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>;
						#clock-cells = <0>;
						rockchip,clkops-idx =
							<CLKOPS_RATE_MUX_DIV>;
						rockchip,flags = <CLK_SET_RATE_NO_REPARENT>;
					};

					/* reg[7:5]: reserved */

					hclk_peri_pre: hclk_peri_pre_div {
						compatible = "rockchip,rk3188-div-con";
						rockchip,bits = <8 2>;
						clocks = <&aclk_peri_pre>;
						clock-output-names = "hclk_peri_pre";
						rockchip,div-type = <CLK_DIVIDER_USER_DEFINE>;
						rockchip,div-relations =
								<0x0 1
								 0x1 2
								 0x2 4>;
						#clock-cells = <0>;
						#clock-init-cells = <1>;
					};

					/* reg[11:10]: reserved */

					pclk_peri_pre: pclk_peri_div {
						compatible = "rockchip,rk3188-div-con";
						rockchip,bits = <12 2>;
						clocks = <&aclk_peri_pre>;
						clock-output-names = "pclk_peri_pre";
						rockchip,div-type = <CLK_DIVIDER_USER_DEFINE>;
						rockchip,div-relations =
								<0x0 1
								 0x1 2
								 0x2 4
								 0x3 8>;
						#clock-cells = <0>;
						#clock-init-cells = <1>;
					};

					aclk_peri_pre: aclk_peri_pre_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <14 2>;
						clocks = <&clk_apll>,<&clk_dpll>, <&clk_gpll>;
						clock-output-names = "aclk_peri_pre";
						#clock-cells = <0>;
						#clock-init-cells = <1>;
					};
				};

				clk_sel_con11: sel-con@0070 {
					compatible = "rockchip,rk3188-selcon";
					reg = <0x0070 0x4>;
					#address-cells = <1>;
					#size-cells = <1>;

					clk_sdmmc0_div: clk_sdmmc0_div {
						compatible = "rockchip,rk3188-div-con";
						rockchip,bits = <0 6>;
						clocks = <&clk_sdmmc0>;
						clock-output-names = "clk_sdmmc0";
						rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>;
						#clock-cells = <0>;
						rockchip,clkops-idx =
							<CLKOPS_RATE_MUX_EVENDIV>;
					};

					/* reg[7]: reserved */

					clk_sdio_div: clk_sdio_div {
						compatible = "rockchip,rk3188-div-con";
						rockchip,bits = <8 7>;
						clocks = <&clk_sdio>;
						clock-output-names = "clk_sdio";
						rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>;
						#clock-cells = <0>;
						rockchip,clkops-idx =
							<CLKOPS_RATE_MUX_EVENDIV>;
					};

					/* reg[15]: reserved */

				};

				clk_sel_con12: sel-con@0074 {
					compatible = "rockchip,rk3188-selcon";
					reg = <0x0074 0x4>;
					#address-cells = <1>;
					#size-cells = <1>;

					clk_emmc_div: clk_emmc_div {
						compatible = "rockchip,rk3188-div-con";
						rockchip,bits = <0 7>;
						clocks = <&clk_emmc>;
						clock-output-names = "clk_emmc";
						rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>;
						#clock-cells = <0>;
						rockchip,clkops-idx =
							<CLKOPS_RATE_MUX_EVENDIV>;
					};

					/* reg[7]: reserved */

					clk_sdmmc0: clk_sdmmc0_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <8 2>;
						clocks = <&clk_apll>,<&clk_dpll>, <&clk_gpll>, <&xin24m>;
						clock-output-names = "clk_sdmmc0";
						#clock-cells = <0>;
					};

					clk_sdio: clk_sdio_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <10 2>;
						clocks = <&clk_apll>,<&clk_dpll>, <&clk_gpll>, <&xin24m>;
						clock-output-names = "clk_sdio";
						#clock-cells = <0>;
					};

					clk_emmc: clk_emmc_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <12 2>;
						clocks = <&clk_apll>,<&clk_dpll>, <&clk_gpll>, <&xin24m>;
						clock-output-names = "clk_emmc";
						#clock-cells = <0>;
					};

					/* reg[15:14]: reserved */
				};

				clk_sel_con13: sel-con@0078 {
					compatible = "rockchip,rk3188-selcon";
					reg = <0x0078 0x4>;
					#address-cells = <1>;
					#size-cells = <1>;

					clk_uart0_div: clk_uart0_div {
						compatible = "rockchip,rk3188-div-con";
						rockchip,bits = <0 7>;
						clocks = <&clk_uart_pll>;
						clock-output-names = "clk_uart0_div";
						rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>;
						#clock-cells = <0>;
					};

					/* reg[7]: reserved */

					clk_uart0: clk_uart0_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <8 2>;
						clocks = <&clk_uart0_div>, <&uart0_frac>, <&xin24m>;
						clock-output-names = "clk_uart0";
						#clock-cells = <0>;
						rockchip,clkops-idx =
							<CLKOPS_RATE_RK3288_I2S>;
						rockchip,flags = <CLK_SET_RATE_PARENT>;
					};

					clk_uart_pll: clk_uart_pll_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <10 2>;
						clocks = <&clk_apll>,<&clk_dpll>, <&clk_gpll>, <&usb_480m>;
						clock-output-names = "clk_uart_pll";
						#clock-cells = <0>;
						#clock-init-cells = <1>;
					};

					/* reg[15:12]: reserved */

				};

				clk_sel_con14: sel-con@007c {
					compatible = "rockchip,rk3188-selcon";
					reg = <0x007c 0x4>;
					#address-cells = <1>;
					#size-cells = <1>;

					clk_uart1_div: clk_uart1_div {
						compatible = "rockchip,rk3188-div-con";
						rockchip,bits = <0 7>;
						clocks = <&clk_uart_pll>;
						clock-output-names = "clk_uart1_div";
						rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>;
						#clock-cells = <0>;
					};

					/* reg[7]: reserved */

					clk_uart1: clk_uart1_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <8 2>;
						clocks = <&clk_uart1_div>, <&uart1_frac>, <&xin24m>;
						clock-output-names = "clk_uart1";
						#clock-cells = <0>;
						rockchip,clkops-idx =
							<CLKOPS_RATE_RK3288_I2S>;
						rockchip,flags = <CLK_SET_RATE_PARENT>;
					};

					/* reg[15:10]: reserved */
				};

				clk_sel_con15: sel-con@0080 {
					compatible = "rockchip,rk3188-selcon";
					reg = <0x0080 0x4>;
					#address-cells = <1>;
					#size-cells = <1>;

					clk_uart2_div: clk_uart2_div {
						compatible = "rockchip,rk3188-div-con";
						rockchip,bits = <0 7>;
						clocks = <&clk_uart_pll>;
						clock-output-names = "clk_uart2_div";
						rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>;
						#clock-cells = <0>;
					};

					/* reg[7]: reserved */

					clk_uart2: clk_uart2_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <8 2>;
						clocks = <&clk_uart2_div>, <&uart2_frac>, <&xin24m>;
						clock-output-names = "clk_uart2";
						#clock-cells = <0>;
						rockchip,clkops-idx =
							<CLKOPS_RATE_RK3288_I2S>;
						rockchip,flags = <CLK_SET_RATE_PARENT>;
					};

					/* reg[15:10]: reserved */
				};

				clk_sel_con16: sel-con@0084 {
					compatible = "rockchip,rk3188-selcon";
					reg = <0x0084 0x4>;
					#address-cells = <1>;
					#size-cells = <1>;

					clk_sfc: clk_sfc_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <0 2>;
						clocks = <&clk_apll>, <&clk_dpll>, <&clk_gpll>, <&xin24m>;
						clock-output-names = "clk_sfc";
						#clock-cells = <0>;
					};

					clk_sfc_div: clk_sfc_div {
						compatible = "rockchip,rk3188-div-con";
						rockchip,bits = <2 5>;
						clocks = <&clk_sfc>;
						clock-output-names = "clk_sfc";
						rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>;
						#clock-cells = <0>;
						rockchip,clkops-idx =
							<CLKOPS_RATE_MUX_DIV>;
					};

					/* reg[7]: reserved */

					clk_nandc: clk_nandc_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <8 2>;
						clocks = <&clk_apll>, <&clk_dpll>, <&clk_gpll>;
						clock-output-names = "clk_nandc";
						#clock-cells = <0>;
					};

					clk_nandc_div: clk_nandc_div {
						compatible = "rockchip,rk3188-div-con";
						rockchip,bits = <10 5>;
						clocks = <&clk_nandc>;
						clock-output-names = "clk_nandc";
						rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>;
						#clock-cells = <0>;
						rockchip,clkops-idx =
							<CLKOPS_RATE_MUX_DIV>;
					};

					/* reg[31:15]: reserved */
				};

				clk_sel_con17: sel-con@0088 {
					compatible = "rockchip,rk3188-selcon";
					reg = <0x0088 0x4>;
					#address-cells = <1>;
					#size-cells = <1>;

					uart0_frac: uart0_frac {
						compatible = "rockchip,rk3188-frac-con";
						clocks = <&clk_uart0_div>;
						clock-output-names = "uart0_frac";
						/* numerator	denominator */
						rockchip,bits = <0 32>;
						rockchip,clkops-idx =
							<CLKOPS_RATE_FRAC>;
						#clock-cells = <0>;
					};
				};

				clk_sel_con18: sel-con@008c {
					compatible = "rockchip,rk3188-selcon";
					reg = <0x008c 0x4>;
					#address-cells = <1>;
					#size-cells = <1>;

					uart1_frac: uart1_frac {
						compatible = "rockchip,rk3188-frac-con";
						clocks = <&clk_uart1_div>;
						clock-output-names = "uart1_frac";
						/* numerator	denominator */
						rockchip,bits = <0 32>;
						rockchip,clkops-idx =
							<CLKOPS_RATE_FRAC>;
						#clock-cells = <0>;
					};
				};

				clk_sel_con19: sel-con@0090 {
					compatible = "rockchip,rk3188-selcon";
					reg = <0x0090 0x4>;
					#address-cells = <1>;
					#size-cells = <1>;

					uart2_frac: uart2_frac {
						compatible = "rockchip,rk3188-frac-con";
						clocks = <&clk_uart2_div>;
						clock-output-names = "uart2_frac";
						/* numerator	denominator */
						rockchip,bits = <0 32>;
						rockchip,clkops-idx =
							<CLKOPS_RATE_FRAC>;
						#clock-cells = <0>;
					};

				};

				clk_sel_con20: sel-con@0094 {
					compatible = "rockchip,rk3188-selcon";
					reg = <0x0094 0x4>;
					#address-cells = <1>;
					#size-cells = <1>;

					clk_hevc_core: clk_hevc_core_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <0 2>;
						clocks = <&clk_apll>, <&clk_dpll>, <&clk_gpll>;
						clock-output-names = "clk_hevc_core";
						#clock-cells = <0>;
						#clock-init-cells = <1>;
					};

					clk_hevc_core_div: clk_hevc_core_div {
						compatible = "rockchip,rk3188-div-con";
						rockchip,bits = <2 5>;
						clocks = <&clk_hevc_core>;
						clock-output-names = "clk_hevc_core";
						rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>;
						#clock-cells = <0>;
						rockchip,clkops-idx =
							<CLKOPS_RATE_MUX_DIV>;
						rockchip,flags = <CLK_SET_RATE_NO_REPARENT>;
					};

					/* reg[31:7]: reserved */

				};

				clk_sel_con21: sel-con@0098 {
					compatible = "rockchip,rk3188-selcon";
					reg = <0x0098 0x4>;
					#address-cells = <1>;
					#size-cells = <1>;

					clk_mac_pll: clk_mac_pll_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <0 2>;
						clocks = <&clk_apll>, <&clk_dpll>, <&clk_gpll>;
						clock-output-names = "clk_mac_pll";
						#clock-cells = <0>;
						#clock-init-cells = <1>;
					};

					/* reg[2]: reserved */

					clk_mac_ref: clk_mac_ref_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <3 1>;
						clocks = <&clk_mac_pll_div>, <&rmii_clkin>;
						clock-output-names = "clk_mac_ref";
						#clock-cells = <0>;
						rockchip,clkops-idx =
							<CLKOPS_RATE_MAC_REF>;
						rockchip,flags = <CLK_SET_RATE_PARENT>;
						#clock-init-cells = <1>;
					};

					clk_mac_ref_div: clk_mac_ref_div {
						compatible = "rockchip,rk3188-div-con";
						rockchip,bits = <4 5>;
						clocks = <&clk_mac_ref>;
						clock-output-names = "clk_mac";
						rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>;
						#clock-cells = <0>;
						#clock-init-cells = <1>;
					};

					clk_mac_pll_div: clk_mac_pll_div {
						compatible = "rockchip,rk3188-div-con";
						rockchip,bits = <9 5>;
						clocks = <&clk_mac_pll>;
						clock-output-names = "clk_mac_pll";
						rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>;
						#clock-cells = <0>;
						rockchip,clkops-idx =
							<CLKOPS_RATE_MUX_DIV>;
						#clock-init-cells = <1>;
					};

					/* reg[15:14]: reserved */
				};

				clk_sel_con25: sel-con@00a8 {
					compatible = "rockchip,rk3188-selcon";
					reg = <0x00a8 0x4>;
					#address-cells = <1>;
					#size-cells = <1>;

					clk_spi0_div: clk_spi0_div {
						compatible = "rockchip,rk3188-div-con";
						rockchip,bits = <0 7>;
						clocks = <&clk_spi0>;
						clock-output-names = "clk_spi0";
						rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>;
						#clock-cells = <0>;
						rockchip,clkops-idx =
							<CLKOPS_RATE_MUX_DIV>;
					};

					/* reg[7]: reserved */

					clk_spi0: clk_spi0_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <8 2>;
						clocks = <&clk_apll>, <&clk_dpll>,<&clk_gpll>;
						clock-output-names = "clk_spi0";
						#clock-cells = <0>;
					};

					/* reg[15:10]: reserved */

				};

				clk_sel_con26: sel-con@00ac {
					compatible = "rockchip,rk3188-selcon";
					reg = <0x00ac 0x4>;
					#address-cells = <1>;
					#size-cells = <1>;

					ddr_div: ddr_div {
						compatible = "rockchip,rk3188-div-con";
						rockchip,bits = <0 2>;
						clocks = <&clk_ddr>;
						clock-output-names = "clk_ddr";
						rockchip,div-type = <CLK_DIVIDER_USER_DEFINE>;
						rockchip,div-relations =
								<0x0 1
								 0x1 2
								 0x3 4>;
						#clock-cells = <0>;
						rockchip,flags = <(CLK_GET_RATE_NOCACHE |
									CLK_SET_RATE_NO_REPARENT)>;
						rockchip,clkops-idx = <CLKOPS_RATE_DDR>;
					};

					/* reg[7:1]: reserved */

					clk_ddr: ddr_clk_pll_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <8 1>;
						clocks = <&clk_dpll>, <&dummy>;
						clock-output-names = "clk_ddr";
						#clock-cells = <0>;
					};

					/* reg[15:9]: reserved */
				};

				clk_sel_con28: sel-con@00b4 {
					compatible = "rockchip,rk3188-selcon";
					reg = <0x00b4 0x4>;
					#address-cells = <1>;
					#size-cells = <1>;

					dclk_lcdc1: dclk_lcdc1_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <0 2>;
						clocks = <&clk_apll>, <&clk_dpll>, <&clk_gpll>;
						clock-output-names = "dclk_lcdc1";
						#clock-cells = <0>;
						#clock-init-cells = <1>;
					};

					/* reg[7:2]: reserved */

					dclk_lcdc1_div: dclk_lcdc1_div {
						compatible = "rockchip,rk3188-div-con";
						rockchip,bits = <8 8>;
						clocks = <&dclk_lcdc1>;
						clock-output-names = "dclk_lcdc1";
						rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>;
						#clock-cells = <0>;
						rockchip,clkops-idx =
							<CLKOPS_RATE_MUX_DIV>;
						rockchip,flags = <CLK_SET_RATE_NO_REPARENT>;
					};
				};

				clk_sel_con30: sel-con@00bc {
					compatible = "rockchip,rk3188-selcon";
					reg = <0x00bc 0x4>;
					#address-cells = <1>;
					#size-cells = <1>;

					clk_testout_div: clk_testout_div {
						compatible = "rockchip,rk3188-div-con";
						rockchip,bits = <0 5>;
						clocks = <&dummy>;
						clock-output-names = "clk_testout";
						rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>;
						#clock-cells = <0>;
						#clock-init-cells = <1>;
					};

					/* reg[7:5]: reserved */

					hclk_vio_pre_div: hclk_vio_pre_div {
						compatible = "rockchip,rk3188-div-con";
						rockchip,bits = <8 5>;
						clocks = <&hclk_vio_pre>;
						clock-output-names = "hclk_vio_pre";
						rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>;
						#clock-cells = <0>;
						rockchip,clkops-idx =
							<CLKOPS_RATE_MUX_DIV>;
						rockchip,flags = <CLK_SET_RATE_NO_REPARENT>;
					};

					/* reg[13]: reserved */

					hclk_vio_pre: hclk_vio_pre_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <14 2>;
						clocks = <&clk_apll>, <&clk_dpll>, <&clk_gpll>;
						clock-output-names = "hclk_vio_pre";
						#clock-cells = <0>;
						#clock-init-cells = <1>;
					};

				};

				clk_sel_con31: sel-con@00c0 {
					compatible = "rockchip,rk3188-selcon";
					reg = <0x00c0 0x4>;
					#address-cells = <1>;
					#size-cells = <1>;

					clk_hdmi: clk_hdmi_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <0 1>;
						clocks = <&dclk_lcdc1_div>, <&dummy>;
						clock-output-names = "clk_hdmi";
						#clock-cells = <0>;
					};

					/* reg[7:1]: reserved */

					aclk_vio_pre_div: aclk_vio_pre_div {
						compatible = "rockchip,rk3188-div-con";
						rockchip,bits = <8 5>;
						clocks = <&aclk_vio_pre>;
						clock-output-names = "aclk_vio_pre";
						rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>;
						#clock-cells = <0>;
						rockchip,clkops-idx =
							<CLKOPS_RATE_MUX_DIV>;
						rockchip,flags = <CLK_SET_RATE_NO_REPARENT>;
					};

					/* reg[13]: reserved */

					aclk_vio_pre: aclk_vio_pre_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <14 2>;
						clocks = <&clk_apll>, <&clk_dpll>, <&clk_gpll>;
						clock-output-names = "aclk_vio_pre";
						#clock-cells = <0>;
						#clock-init-cells = <1>;
					};

				};

				clk_sel_con32: sel-con@00c4 {
					compatible = "rockchip,rk3188-selcon";
					reg = <0x00c4 0x4>;
					#address-cells = <1>;
					#size-cells = <1>;

					/* reg[7:0]: reserved */

					aclk_vcodec_pre_div: aclk_vcodec_pre_div {
						compatible = "rockchip,rk3188-div-con";
						rockchip,bits = <8 5>;
						clocks = <&aclk_vcodec_pre>;
						clock-output-names = "aclk_vcodec_pre";
						rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>;
						#clock-cells = <0>;
						rockchip,clkops-idx =
							<CLKOPS_RATE_MUX_DIV>;
						rockchip,flags = <CLK_SET_RATE_NO_REPARENT>;
					};

					/* reg[13]: reserved */

					aclk_vcodec_pre: aclk_vcodec_pre_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <14 2>;
						clocks = <&clk_apll>, <&clk_dpll>, <&clk_gpll>;
						clock-output-names = "aclk_vcodec_pre";
						#clock-cells = <0>;
						#clock-init-cells = <1>;
					};
				};

				clk_sel_con34: sel-con@00cc {
					compatible = "rockchip,rk3188-selcon";
					reg = <0x00cc 0x4>;
					#address-cells = <1>;
					#size-cells = <1>;

					clk_gpu_div: clk_gpu_div {
						compatible = "rockchip,rk3188-div-con";
						rockchip,bits = <0 5>;
						clocks = <&clk_gpu>;
						clock-output-names = "clk_gpu";
						rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>;
						#clock-cells = <0>;
						rockchip,clkops-idx =
							<CLKOPS_RATE_MUX_DIV>;
						rockchip,flags = <CLK_SET_RATE_PARENT_IN_ORDER>;
					};

					/* reg[7:5]: reserved */

					clk_gpu: clk_gpu_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <8 2>;
						clocks = <&dummy>, <&dummy>, <&clk_gpll>;
						clock-output-names = "clk_gpu";
						#clock-cells = <0>;
						#clock-init-cells = <1>;
					};

					/* reg[15:10]: reserved */

				};

			};


			/* Gate control regs */
			clk_gate_cons {
				compatible = "rockchip,rk-gate-cons";
				#address-cells = <1>;
				#size-cells = <1>;
				ranges ;

				clk_gates0: gate-clk@00d0{
					compatible = "rockchip,rk3188-gate-clk";
					reg = <0x00d0 0x4>;
					clocks =
						<&clk_core>,		<&clk_gpll>,
						<&clk_dpll>,	<&aclk_cpu_pre>,

						<&aclk_cpu_pre>,	<&aclk_cpu_pre>,
						<&clk_gpll>,		<&clk_core>,

						<&clk_gpll>,	<&clk_i2s_pll>,
						<&i2s_frac>,	<&hclk_vio_pre>,

						<&dummy>,		<&clk_i2s_out>,
						<&clk_i2s>,		<&dummy>;

					clock-output-names =
						"pclk_dbg",			"reserved",	 /* do not use bit1 = "cpu_gpll" */
						"reserved",		"aclk_cpu_pre",

						"hclk_cpu_pre",		"pclk_cpu_pre",
						"reserved",		"aclk_core_pre",

						"reserved",		"clk_i2s_pll",
						"i2s_frac",		"hclk_vio_pre",

						"clk_cryto",		"clk_i2s_out",
						"clk_i2s",		"clk_testout";
					rockchip,suspend-clkgating-setting=<0x19ff 0x19ff>;

					#clock-cells = <1>;
				};

				clk_gates1: gate-clk@00d4{
					compatible = "rockchip,rk3188-gate-clk";
					reg = <0x00d4 0x4>;
					clocks =
						<&clk_timer0>,		<&clk_timer1>,
						<&dummy>,		<&jtag_tck>,

						<&aclk_vio_pre>,		<&xin12m>,
						<&dummy>,		<&dummy>,

						<&clk_uart0_div>,		<&uart0_frac>,
						<&clk_uart1_div>,		<&uart1_frac>,

						<&clk_uart2_div>,		<&uart2_frac>,
						<&dummy>,		<&dummy>;

					clock-output-names =
						"clk_timer0",		"clk_timer1",
						"reserved",		"clk_jatg",

						"aclk_vio_pre",		"clk_otgphy0",
						"clk_otgphy1",			"reserved",

						"clk_uart0_div",	"uart0_frac",
						"clk_uart1_div",	"uart1_frac",

						"clk_uart2_div",	"uart2_frac",
						"reserved",	"reserved";

					 rockchip,suspend-clkgating-setting=<0xc0af 0xc0af>;
					#clock-cells = <1>;
				};

				clk_gates2: gate-clk@00d8 {
					compatible = "rockchip,rk3188-gate-clk";
					reg = <0x00d8 0x4>;
					clocks =
						<&aclk_peri_pre>,		<&aclk_peri_pre>,
						<&aclk_peri_pre>,		<&aclk_peri_pre>,

						<&clk_timer2>,		<&clk_timer3>,
						<&clk_mac_ref>,		<&dummy>,

						<&dummy>,		<&clk_spi0>,
						<&clk_spdif_pll>,		<&clk_sdmmc0>,

						<&spdif_frac>,		<&clk_sdio>,
						<&clk_emmc>,		<&dummy>;

					clock-output-names =
						"aclk_peri",		"aclk_peri_pre",
						"hclk_peri_pre",		"pclk_peri_pre",

						"clk_timer2",		"clk_timer3",
						"clk_mac",		"reserved",

						"reserved",		"clk_spi0",
						"clk_spdif_pll",		"clk_sdmmc0",

						"spdif_frac",		"clk_sdio",
						"clk_emmc",		"reserved";
					    rockchip,suspend-clkgating-setting=<0x81bf 0x81bf>;

					#clock-cells = <1>;
				};

				clk_gates3: gate-clk@00dc {
					compatible = "rockchip,rk3188-gate-clk";
					reg = <0x00dc 0x4>;
					clocks =
						<&dummy>,		<&dummy>,
						<&dclk_lcdc1>,		<&dummy>,

						<&dummy>,			<&hclk_peri_pre>,
						<&dummy>,		<&dummy>,

						<&pclk_cpu_pre>,		<&dummy>,
						<&dummy>,		<&aclk_vcodec_pre>,

						<&aclk_vcodec_pre>,		<&clk_gpu>,
						<&hclk_peri_pre>,		<&dummy>;

					clock-output-names =
						"reserved",		"reserved",
						"dclk_lcdc1",		"reserved",

						"reserved",		"g_hclk_mac",
						"reserved",		"reserved",

						"g_pclk_hdmi",		"reserved",
						"reserved",		"aclk_vcodec_pre",

						"hclk_vcodec",		"clk_gpu",
						"g_hclk_sfc",		"reserved";
						rockchip,suspend-clkgating-setting=<0xa7fb 0xa7fb>;

					#clock-cells = <1>;
				};

				clk_gates4: gate-clk@00e0{
					compatible = "rockchip,rk3188-gate-clk";
					reg = <0x00e0 0x4>;
					clocks =
						<&hclk_peri_pre>,		<&pclk_peri_pre>,
						<&aclk_peri_pre>,		<&aclk_peri_pre>,

						<&dummy>,		<&dummy>,
						<&dummy>,		<&dummy>,

						<&dummy>,		<&dummy>,
						<&aclk_cpu_pre>,		<&dummy>,

						<&aclk_cpu_pre>,		<&dummy>,
						<&dummy>,		<&dummy>;

					clock-output-names =
						"g_hp_axi_matrix",		"g_pp_axi_matrix",
						"g_aclk_cpu_peri",		"g_ap_axi_matrix",

						"reserved",		"g_hclk_mac",
						"reserved",		"reserved",

						"reserved",		"reserved",
						"g_aclk_strc_sys",		"reserved",

						/* Not use these ddr gates */
						"g_aclk_intmem",		"reserved",
						"reserved",		"reserved";

					rockchip,suspend-clkgating-setting = <0xffff 0xffff>;
					#clock-cells = <1>;
				};

				clk_gates5: gate-clk@00e4 {
					compatible = "rockchip,rk3188-gate-clk";
					reg = <0x00e4 0x4>;
					clocks =
						<&dummy>,		<&aclk_peri_pre>,
						<&pclk_peri_pre>,		<&dummy>,

						<&pclk_cpu_pre>,		<&dummy>,
						<&hclk_cpu_pre>,		<&pclk_cpu_pre>,

						<&dummy>,		<&hclk_peri_pre>,
						<&hclk_peri_pre>,		<&hclk_peri_pre>,

						<&dummy>,		<&hclk_peri_pre>,
						<&pclk_cpu_pre>,		<&dummy>;

					clock-output-names =
						"reserved",		"g_aclk_dmac2",
						"g_pclk_efuse",	"reserved",

						"g_pclk_grf",		"reserved",
						"g_hclk_rom",		"g_pclk_ddrupctl",

						"reserved",		"g_hclk_nandc",
						"g_hclk_sdmmc0",		"g_hclk_sdio",

						"reserved",		"g_hclk_otg0",
						"g_pclk_acodec",		"reserved";

					rockchip,suspend-clkgating-setting = <0x91fd 0x91fd>;

					#clock-cells = <1>;
				};

				clk_gates6: gate-clk@00e8 {
					compatible = "rockchip,rk3188-gate-clk";
					reg = <0x00e8 0x4>;
					clocks =
						<&dummy>,		<&dummy>,
						<&dummy>,		<&dummy>,

						<&dummy>,		<&dummy>,
						<&dummy>,		<&dummy>,

						<&dummy>,		<&dummy>,
						<&dummy>,			<&dummy>,

						<&hclk_vio_pre>,		<&aclk_vio_pre>,
						<&dummy>,		<&dummy>;

					clock-output-names =
						"reserved",		"reserved",
						"reserved",		"reserved",

						"reserved",		"reserved",
						"reserved",		"reserved",

						"reserved",		"reserved",
						"reserved",		"reserved",

						"g_hclk_vio_bus",		"g_aclk_vio",
						"reserved",		"reserved";

					rockchip,suspend-clkgating-setting = <0xffff 0xffff>;

					#clock-cells = <1>;
				};

				clk_gates7: gate-clk@00ec {
					compatible = "rockchip,rk3188-gate-clk";
					reg = <0x00ec 0x4>;
					clocks =
						<&hclk_peri_pre>,		<&dummy>,
						<&hclk_peri_pre>,		<&hclk_peri_pre>,

						<&dummy>,		<&dummy>,
						<&dummy>,		<&pclk_peri_pre>,

						<&dummy>,		<&dummy>,
						<&pclk_peri_pre>,		<&dummy>,

						<&pclk_peri_pre>,		<&dummy>,
						<&dummy>,		<&pclk_peri_pre>;

					clock-output-names =
						"g_hclk_emmc",		"reserved",
						"g_hclk_i2s",		"g_hclk_otg1",

						"reserved",		"reserved",
						"reserved",		"g_pclk_timer0",

						"reserved",		"reserved",
						"g_pclk_pwm",		"reserved",

						"g_pclk_spi",		"reserved",
						"reserved",		"g_pclk_wdt";

					rockchip,suspend-clkgating-setting = <0x6ff2 0x6ff2>;

					#clock-cells = <1>;
				};

				clk_gates8: gate-clk@00f0 {
					compatible = "rockchip,rk3188-gate-clk";
					reg = <0x00f0 0x4>;
					clocks =
						<&pclk_peri_pre>,		<&pclk_peri_pre>,
						<&pclk_peri_pre>,		<&dummy>,

						<&pclk_peri_pre>,		<&pclk_peri_pre>,
						<&pclk_peri_pre>,		<&dummy>,

						<&dummy>,		<&pclk_peri_pre>,
						<&pclk_peri_pre>,		<&pclk_peri_pre>,

						<&dummy>,		<&dummy>,
						<&dummy>,		<&dummy>;

					clock-output-names =
						"g_pclk_uart0",		"g_pclk_uart1",
						"g_pclk_uart2",		"reserved",

						"g_pclk_i2c0",		"g_pclk_i2c1",
						"g_pclk_i2c2",		"reserved",

						"reserved",		"g_pclk_gpio0",
						"g_pclk_gpio1",		"g_pclk_gpio2",

						"reserved",		"reserved",
						"reserved",		"reserved";

					rockchip,suspend-clkgating-setting=<0xf38c 0xf38c>;
					#clock-cells = <1>;
				};

				clk_gates9: gate-clk@00f4 {
					compatible = "rockchip,rk3188-gate-clk";
					reg = <0x00f4 0x4>;
					clocks =
						<&dummy>,		<&dummy>,
						<&dummy>,		<&dummy>,

						<&dummy>,		<&hclk_vio_pre>,
						<&aclk_vio_pre>,		<&dummy>,

						<&dummy>,		<&dummy>,
						<&dummy>,		<&dummy>,

						<&dummy>,		<&hclk_peri_pre>,
						<&hclk_peri_pre>,		<&aclk_peri_pre>;

					clock-output-names =
						"reserved",		"reserved",
						"reserved",		"reserved",

						"reserved",		"g_hclk_lcdc",
						"g_aclk_lcdc",		"reserved",

						"reserved",		"reserved",
						"reserved",		"reserved",

						"reserved",		"g_hclk_usb_peri",
						"g_hclk_pe_arbi",		"g_aclk_peri_niu";

					rockchip,suspend-clkgating-setting=<0xdf9f 0xdf9f>;

					#clock-cells = <1>;
				};

				clk_gates10: gate-clk@00f8 {
					compatible = "rockchip,rk3188-gate-clk";
					reg = <0x00f8 0x4>;
					clocks =
						<&xin24m>,		<&xin24m>,
						<&xin24m>,		<&dummy>,

						<&clk_nandc>,		<&clk_sfc>,
						<&clk_hevc_core>,		<&dummy>,

						<&clk_dpll>,		<&dummy>,
						<&dummy>,		<&dummy>,

						<&dummy>,		<&dummy>,
						<&dummy>,		<&dummy>;

					clock-output-names =
						"g_clk_pvtm_core",		"g_clk_pvtm_gpu",
						"g_pvtm_video",		"reserved",

						"clk_nandc",		"clk_sfc",
						"clk_hevc_core",		"reserved",

						"reserved",		"reserved",
						"reserved",		"reserved",

						"reserved",		"reserved",
						"reserved",		"reserved";

					rockchip,suspend-clkgating-setting = <0x0077 0x0077>;	/* pwm logic vol */

					#clock-cells = <1>;
				};

			};
		};
	};
};
mu";
		clocks = <&cru ACLK_VOP1>, <&cru HCLK_VOP1>;
		clock-names = "aclk", "hclk";
		power-domains = <&power RK3288_PD_VIO>;
		#iommu-cells = <0>;
		status = "disabled";
	};

	cif: cif@ff950000 {
		compatible = "rockchip,cif";
		reg = <0x0 0xff950000 0x0 0x400>;
		interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&cru ACLK_VIP>, <&cru HCLK_VIP>,
			<&cru PCLK_VIP_IN>, <&cru SCLK_VIP_OUT>;
		clock-names = "aclk_cif0", "hclk_cif0",
				"cif0_in", "cif0_out";
		resets = <&cru SRST_VIP>;
		reset-names = "rst_cif";
		pinctrl-names = "cif_pin_all";
		pinctrl-0 = <&isp_mipi &isp_dvp_d2d9 &isp_dvp_d10d11>;
		rockchip,grf = <&grf>;
		rockchip,cru = <&cru>;
		power-domains = <&power RK3288_PD_VIO>;
		status = "disabled";
	};

	dsi0: dsi@ff960000 {
		compatible = "rockchip,rk3288-mipi-dsi", "snps,dw-mipi-dsi";
		reg = <0x0 0xff960000 0x0 0x4000>;
		interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&cru SCLK_MIPIDSI_24M>, <&cru PCLK_MIPI_DSI0>;
		clock-names = "ref", "pclk";
		resets = <&cru SRST_MIPIDSI0>;
		reset-names = "apb";
		power-domains = <&power RK3288_PD_VIO>;
		rockchip,grf = <&grf>;
		#address-cells = <1>;
		#size-cells = <0>;
		status = "disabled";

		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			dsi0_in: port {
				#address-cells = <1>;
				#size-cells = <0>;

				dsi0_in_vopb: endpoint@0 {
					reg = <0>;
					remote-endpoint = <&vopb_out_dsi0>;
				};
				dsi0_in_vopl: endpoint@1 {
					reg = <1>;
					remote-endpoint = <&vopl_out_dsi0>;
				};
			};
		};
	};

	dsi1: dsi@ff964000 {
		compatible = "rockchip,rk3288-mipi-dsi", "snps,dw-mipi-dsi";
		reg = <0x0 0xff964000 0x0 0x4000>;
		interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&cru SCLK_MIPIDSI_24M>, <&cru PCLK_MIPI_DSI1>;
		clock-names = "ref", "pclk";
		resets = <&cru SRST_MIPIDSI1>;
		reset-names = "apb";
		power-domains = <&power RK3288_PD_VIO>;
		rockchip,grf = <&grf>;
		#address-cells = <1>;
		#size-cells = <0>;
		status = "disabled";

		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			dsi1_in: port {
				#address-cells = <1>;
				#size-cells = <0>;

				dsi1_in_vopb: endpoint@0 {
					reg = <0>;
					remote-endpoint = <&vopb_out_dsi1>;
				};
				dsi1_in_vopl: endpoint@1 {
					reg = <1>;
					remote-endpoint = <&vopl_out_dsi1>;
				};
			};
		};
	};

	mipi_phy_tx1rx1: mipi-phy-tx1rx1@ff968000 {
		compatible = "rockchip,rk3288-mipi-dphy";
		reg = <0x0 0xff968000 0x0 0x4000>;
		rockchip,grf = <&grf>;
		clocks = <&cru SCLK_MIPIDSI_24M>, <&cru PCLK_MIPI_CSI>;
		clock-names = "dphy-ref", "pclk";
		status = "disabled";
	};

	edp: dp@ff970000 {
		compatible = "rockchip,rk3288-dp";
		reg = <0x0 0xff970000 0x0 0x4000>;
		interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&cru SCLK_EDP>, <&cru PCLK_EDP_CTRL>;
		clock-names = "dp", "pclk";
		power-domains = <&power RK3288_PD_VIO>;
		phys = <&edp_phy>;
		phy-names = "dp";
		resets = <&cru SRST_EDP>;
		reset-names = "dp";
		rockchip,grf = <&grf>;
		status = "disabled";

		ports {
			#address-cells = <1>;
			#size-cells = <0>;
			edp_in: port@0 {
				reg = <0>;
				#address-cells = <1>;
				#size-cells = <0>;
				edp_in_vopb: endpoint@0 {
					reg = <0>;
					remote-endpoint = <&vopb_out_edp>;
				};
				edp_in_vopl: endpoint@1 {
					reg = <1>;
					remote-endpoint = <&vopl_out_edp>;
				};
			};
		};
	};

	lvds: lvds@ff96c000 {
		compatible = "rockchip,rk3288-lvds";
		reg = <0x0 0xff96c000 0x0 0x4000>;
		clocks = <&cru PCLK_LVDS_PHY>;
		clock-names = "pclk_lvds";
		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>;
				};
				lvds_in_vopl: endpoint@1 {
					reg = <1>;
					remote-endpoint = <&vopl_out_lvds>;
				};
			};
		};
	};

	hdmi: hdmi@ff980000 {
		compatible = "rockchip,rk3288-dw-hdmi";
		reg = <0x0 0xff980000 0x0 0x20000>;
		reg-io-width = <4>;
		rockchip,grf = <&grf>;
		interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&cru  PCLK_HDMI_CTRL>, <&cru SCLK_HDMI_HDCP>;
		clock-names = "iahb", "isfr";
		pinctrl-names = "default", "sleep";
		pinctrl-0 = <&hdmi_ddc>;
		pinctrl-1 = <&hdmi_gpio>;
		power-domains = <&power RK3288_PD_VIO>;
		status = "disabled";

		ports {
			hdmi_in: port {
				#address-cells = <1>;
				#size-cells = <0>;
				hdmi_in_vopb: endpoint@0 {
					reg = <0>;
					remote-endpoint = <&vopb_out_hdmi>;
				};
				hdmi_in_vopl: endpoint@1 {
					reg = <1>;
					remote-endpoint = <&vopl_out_hdmi>;
				};
			};
		};
	};

	vpu: video-codec@ff9a0000 {
		compatible = "rockchip,rk3288-vpu";
		reg = <0x0 0xff9a0000 0x0 0x800>;
		interrupts = <GIC_SPI 9 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", "hclk";
		power-domains = <&power RK3288_PD_VIDEO>;
		iommus = <&vpu_mmu>;
		assigned-clocks = <&cru ACLK_VCODEC>;
		assigned-clock-rates = <400000000>;
		status = "disabled";
	};

	vpu_service: vpu-service@ff9a0000 {
		compatible = "rockchip,vpu_service";
		reg = <0x0 0xff9a0000 0x0 0x800>;
		interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
				<GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
		interrupt-names = "irq_enc", "irq_dec";
		clocks = <&cru ACLK_VCODEC>, <&cru HCLK_VCODEC>;
		clock-names = "aclk_vcodec", "hclk_vcodec";
		power-domains = <&power RK3288_PD_VIDEO>;
		rockchip,grf = <&grf>;
		resets = <&cru SRST_VCODEC_AXI>, <&cru SRST_VCODEC_AHB>;
		reset-names = "video_a", "video_h";
		iommus = <&vpu_mmu>;
		iommu_enabled = <1>;
		status = "disabled";
		/* 0 means ion, 1 means drm */
		allocator = <1>;
	};

	vpu_mmu: iommu@ff9a0800 {
		compatible = "rockchip,iommu";
		reg = <0x0 0xff9a0800 0x0 0x100>;
		interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
		interrupt-names = "vpu_mmu";
		clocks = <&cru ACLK_VCODEC>, <&cru HCLK_VCODEC>;
		clock-names = "aclk", "hclk";
		power-domains = <&power RK3288_PD_VIDEO>;
		#iommu-cells = <0>;
	};

	hevc_service: hevc-service@ff9c0000 {
		compatible = "rockchip,hevc_service";
		reg = <0x0 0xff9c0000 0x0 0x400>;
		interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
		interrupt-names = "irq_dec";
		clocks = <&cru ACLK_HEVC>, <&cru HCLK_HEVC>,
			<&cru SCLK_HEVC_CORE>,
			<&cru SCLK_HEVC_CABAC>;
		clock-names = "aclk_vcodec", "hclk_vcodec", "clk_core",
			"clk_cabac";
		/*
		 * The 4K hevc would also work well with 500/125/300/300,
		 * no more err irq and reset request.
		 */
		assigned-clocks = <&cru ACLK_HEVC>, <&cru HCLK_HEVC>,
				  <&cru SCLK_HEVC_CORE>,
				  <&cru SCLK_HEVC_CABAC>;
		assigned-clock-rates = <400000000>, <100000000>,
				       <300000000>, <300000000>;

		resets = <&cru SRST_HEVC>;
		reset-names = "video";
		power-domains = <&power RK3288_PD_HEVC>;
		rockchip,grf = <&grf>;
		iommus = <&hevc_mmu>;
		iommu_enabled = <1>;
		status = "disabled";
		/* 0 means ion, 1 means drm */
		allocator = <1>;
	};

	hevc_mmu: iommu@ff9c0440 {
		compatible = "rockchip,iommu";
		reg = <0x0 0xff9c0440 0x0 0x40>, <0x0 0xff9c0480 0x0 0x40>;
		interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
		interrupt-names = "hevc_mmu";
		clocks = <&cru ACLK_HEVC>, <&cru HCLK_HEVC>,
			<&cru SCLK_HEVC_CORE>,
			<&cru SCLK_HEVC_CABAC>;
		clock-names = "aclk", "hclk", "clk_core",
			"clk_cabac";
		power-domains = <&power RK3288_PD_HEVC>;
		#iommu-cells = <0>;
	};

	gpu: gpu@ffa30000 {
		compatible = "arm,malit764",
			     "arm,malit76x",
			     "arm,malit7xx",
			     "arm,mali-midgard";
		reg = <0x0 0xffa30000 0x0 0x10000>;
		interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
		interrupt-names = "JOB", "MMU", "GPU";
		clocks = <&cru ACLK_GPU>;
		clock-names = "clk_mali";
		operating-points-v2 = <&gpu_opp_table>;
		#cooling-cells = <2>; /* min followed by max */
		power-domains = <&power RK3288_PD_GPU>;
		status = "disabled";

		upthreshold = <75>;
		downdifferential = <10>;

		gpu_power_model: power_model {
			compatible = "arm,mali-simple-power-model";
			static-coefficient = <411000>;
			dynamic-coefficient = <733>;
			ts = <32000 4700 (-80) 2>;
			thermal-zone = "gpu-thermal";
		};
	};

	gpu_opp_table: opp-table1 {
		compatible = "operating-points-v2";

		opp-100000000 {
			opp-hz = /bits/ 64 <100000000>;
			opp-microvolt = <950000>;
		};
		opp-200000000 {
			opp-hz = /bits/ 64 <200000000>;
			opp-microvolt = <950000>;
		};
		opp-300000000 {
			opp-hz = /bits/ 64 <300000000>;
			opp-microvolt = <1000000>;
		};
		opp-400000000 {
			opp-hz = /bits/ 64 <400000000>;
			opp-microvolt = <1100000>;
		};
		opp-500000000 {
			opp-hz = /bits/ 64 <500000000>;
			opp-microvolt = <1200000>;
		};
	};

	noc: syscon@ffac0000 {
		compatible = "rockchip,rk3288-noc", "syscon";
		reg = <0x0 0xffac0000 0x0 0x2000>;
	};

	nocp_core: nocp-core@ffac0400 {
		compatible = "rockchip,rk3288-nocp";
		reg = <0x0 0xffac0400 0x0 0x400>;
	};

	nocp_gpu: nocp-gpu@ffac0800 {
		compatible = "rockchip,rk3288-nocp";
		reg = <0x0 0xffac0800 0x0 0x400>;
	};

	nocp_peri: nocp-peri@ffac0c00 {
		compatible = "rockchip,rk3288-nocp";
		reg = <0x0 0xffac0c00 0x0 0x400>;
	};

	nocp_vpu: nocp-vpu@ffac1000 {
		compatible = "rockchip,rk3288-nocp";
		reg = <0x0 0xffac1000 0x0 0x400>;
	};

	nocp_vio0: nocp-vio0@ffac1400 {
		compatible = "rockchip,rk3288-nocp";
		reg = <0x0 0xffac1400 0x0 0x400>;
	};

	nocp_vio1: nocp-vio1@ffac1800 {
		compatible = "rockchip,rk3288-nocp";
		reg = <0x0 0xffac1800 0x0 0x400>;
	};

	nocp_vio2: nocp-vio2@ffac1c00 {
		compatible = "rockchip,rk3288-nocp";
		reg = <0x0 0xffac1c00 0x0 0x400>;
	};

	efuse: efuse@ffb40000 {
		compatible = "rockchip,rockchip-efuse";
		reg = <0x0 0xffb40000 0x0 0x20>;
		#address-cells = <1>;
		#size-cells = <1>;
		clocks = <&cru PCLK_EFUSE256>;
		clock-names = "pclk_efuse";

		special_function: special-function@5 {
			reg = <0x5 0x1>;
			bits = <4 4>;
		};
		process_version: process-version@6 {
			reg = <0x6 0x1>;
			bits = <0 4>;
		};
		efuse_id: id@7 {
			reg = <0x7 0x10>;
		};
		cpu_leakage: cpu-leakage@17 {
			reg = <0x17 0x1>;
		};
		performance_w: performance@1c {
			reg = <0x1c 0x1>;
			bits = <4 3>;
		};
		performance: performance@1d {
			reg = <0x1d 0x1>;
			bits = <4 3>;
		};
	};

	gic: interrupt-controller@ffc01000 {
		compatible = "arm,gic-400";
		interrupt-controller;
		#interrupt-cells = <3>;
		#address-cells = <0>;

		reg = <0x0 0xffc01000 0x0 0x1000>,
		      <0x0 0xffc02000 0x0 0x2000>,
		      <0x0 0xffc04000 0x0 0x2000>,
		      <0x0 0xffc06000 0x0 0x2000>;
		interrupts = <GIC_PPI 9 0xf04>;
	};

	pinctrl: pinctrl {
		compatible = "rockchip,rk3288-pinctrl";
		rockchip,grf = <&grf>;
		rockchip,pmu = <&pmu>;
		#address-cells = <2>;
		#size-cells = <2>;
		ranges;

		gpio0: gpio0@ff750000 {
			compatible = "rockchip,gpio-bank";
			reg = <0x0 0xff750000 0x0 0x100>;
			interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&cru PCLK_GPIO0>;

			gpio-controller;
			#gpio-cells = <2>;

			interrupt-controller;
			#interrupt-cells = <2>;
		};

		gpio1: gpio1@ff780000 {
			compatible = "rockchip,gpio-bank";
			reg = <0x0 0xff780000 0x0 0x100>;
			interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&cru PCLK_GPIO1>;

			gpio-controller;
			#gpio-cells = <2>;

			interrupt-controller;
			#interrupt-cells = <2>;
		};

		gpio2: gpio2@ff790000 {
			compatible = "rockchip,gpio-bank";
			reg = <0x0 0xff790000 0x0 0x100>;
			interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&cru PCLK_GPIO2>;

			gpio-controller;
			#gpio-cells = <2>;

			interrupt-controller;
			#interrupt-cells = <2>;
		};

		gpio3: gpio3@ff7a0000 {
			compatible = "rockchip,gpio-bank";
			reg = <0x0 0xff7a0000 0x0 0x100>;
			interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&cru PCLK_GPIO3>;

			gpio-controller;
			#gpio-cells = <2>;

			interrupt-controller;
			#interrupt-cells = <2>;
		};

		gpio4: gpio4@ff7b0000 {
			compatible = "rockchip,gpio-bank";
			reg = <0x0 0xff7b0000 0x0 0x100>;
			interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&cru PCLK_GPIO4>;

			gpio-controller;
			#gpio-cells = <2>;

			interrupt-controller;
			#interrupt-cells = <2>;
		};

		gpio5: gpio5@ff7c0000 {
			compatible = "rockchip,gpio-bank";
			reg = <0x0 0xff7c0000 0x0 0x100>;
			interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&cru PCLK_GPIO5>;

			gpio-controller;
			#gpio-cells = <2>;

			interrupt-controller;
			#interrupt-cells = <2>;
		};

		gpio6: gpio6@ff7d0000 {
			compatible = "rockchip,gpio-bank";
			reg = <0x0 0xff7d0000 0x0 0x100>;
			interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&cru PCLK_GPIO6>;

			gpio-controller;
			#gpio-cells = <2>;

			interrupt-controller;
			#interrupt-cells = <2>;
		};

		gpio7: gpio7@ff7e0000 {
			compatible = "rockchip,gpio-bank";
			reg = <0x0 0xff7e0000 0x0 0x100>;
			interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&cru PCLK_GPIO7>;

			gpio-controller;
			#gpio-cells = <2>;

			interrupt-controller;
			#interrupt-cells = <2>;
		};

		gpio8: gpio8@ff7f0000 {
			compatible = "rockchip,gpio-bank";
			reg = <0x0 0xff7f0000 0x0 0x100>;
			interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&cru PCLK_GPIO8>;

			gpio-controller;
			#gpio-cells = <2>;

			interrupt-controller;
			#interrupt-cells = <2>;
		};

		hdmi {
			hdmi_gpio: hdmi-gpio {
				rockchip,pins = <7 19 RK_FUNC_GPIO
						 &pcfg_pull_none>,
						<7 20 RK_FUNC_GPIO
						 &pcfg_pull_none>;
			};

			hdmi_ddc: hdmi-ddc {
				rockchip,pins = <7 19 RK_FUNC_2 &pcfg_pull_none>,
						<7 20 RK_FUNC_2 &pcfg_pull_none>;
			};
		};

		pcfg_pull_up: pcfg-pull-up {
			bias-pull-up;
		};

		pcfg_pull_down: pcfg-pull-down {
			bias-pull-down;
		};

		pcfg_pull_none: pcfg-pull-none {
			bias-disable;
		};

		pcfg_pull_none_12ma: pcfg-pull-none-12ma {
			bias-disable;
			drive-strength = <12>;
		};

		sleep {
			global_pwroff: global-pwroff {
				rockchip,pins = <0 0 RK_FUNC_1 &pcfg_pull_none>;
			};

			ddrio_pwroff: ddrio-pwroff {
				rockchip,pins = <0 1 RK_FUNC_1 &pcfg_pull_none>;
			};

			ddr0_retention: ddr0-retention {
				rockchip,pins = <0 2 RK_FUNC_1 &pcfg_pull_up>;
			};

			ddr1_retention: ddr1-retention {
				rockchip,pins = <0 3 RK_FUNC_1 &pcfg_pull_up>;
			};
		};

		edp {
			edp_hpd: edp-hpd {
				rockchip,pins = <7 11 RK_FUNC_2 &pcfg_pull_down>;
			};
		};

		i2c0 {
			i2c0_xfer: i2c0-xfer {
				rockchip,pins = <0 15 RK_FUNC_1 &pcfg_pull_none>,
						<0 16 RK_FUNC_1 &pcfg_pull_none>;
			};
		};

		i2c1 {
			i2c1_xfer: i2c1-xfer {
				rockchip,pins = <8 4 RK_FUNC_1 &pcfg_pull_none>,
						<8 5 RK_FUNC_1 &pcfg_pull_none>;
			};
		};

		i2c2 {
			i2c2_xfer: i2c2-xfer {
				rockchip,pins = <6 9 RK_FUNC_1 &pcfg_pull_none>,
						<6 10 RK_FUNC_1 &pcfg_pull_none>;
			};
		};

		i2c3 {
			i2c3_xfer: i2c3-xfer {
				rockchip,pins = <2 16 RK_FUNC_1 &pcfg_pull_none>,
						<2 17 RK_FUNC_1 &pcfg_pull_none>;
			};
		};

		i2c4 {
			i2c4_xfer: i2c4-xfer {
				rockchip,pins = <7 17 RK_FUNC_1 &pcfg_pull_none>,
						<7 18 RK_FUNC_1 &pcfg_pull_none>;
			};
		};

		i2c5 {
			i2c5_xfer: i2c5-xfer {
				rockchip,pins = <7 19 RK_FUNC_1 &pcfg_pull_none>,
						<7 20 RK_FUNC_1 &pcfg_pull_none>;
			};
		};

		i2s0 {
			i2s0_bus: i2s0-bus {
				rockchip,pins = <6 0 RK_FUNC_1 &pcfg_pull_none>,
						<6 1 RK_FUNC_1 &pcfg_pull_none>,
						<6 2 RK_FUNC_1 &pcfg_pull_none>,
						<6 3 RK_FUNC_1 &pcfg_pull_none>,
						<6 4 RK_FUNC_1 &pcfg_pull_none>;
			};

			i2s0_mclk: i2s0-mclk {
				rockchip,pins = <6 8 RK_FUNC_1 &pcfg_pull_none>;
			};
		};

		lcdc {
			lcdc_ctl: lcdc-ctl {
				rockchip,pins = <1 24 RK_FUNC_1 &pcfg_pull_none>,
						<1 25 RK_FUNC_1 &pcfg_pull_none>,
						<1 26 RK_FUNC_1 &pcfg_pull_none>,
						<1 27 RK_FUNC_1 &pcfg_pull_none>;
			};
		};

		sdmmc {
			sdmmc_clk: sdmmc-clk {
				rockchip,pins = <6 20 RK_FUNC_1 &pcfg_pull_none>;
			};

			sdmmc_cmd: sdmmc-cmd {
				rockchip,pins = <6 21 RK_FUNC_1 &pcfg_pull_up>;
			};

			sdmmc_cd: sdmmc-cd {
				rockchip,pins = <6 22 RK_FUNC_1 &pcfg_pull_up>;
			};

			sdmmc_bus1: sdmmc-bus1 {
				rockchip,pins = <6 16 RK_FUNC_1 &pcfg_pull_up>;
			};

			sdmmc_bus4: sdmmc-bus4 {
				rockchip,pins = <6 16 RK_FUNC_1 &pcfg_pull_up>,
						<6 17 RK_FUNC_1 &pcfg_pull_up>,
						<6 18 RK_FUNC_1 &pcfg_pull_up>,
						<6 19 RK_FUNC_1 &pcfg_pull_up>;
			};
		};

		sdio0 {
			sdio0_bus1: sdio0-bus1 {
				rockchip,pins = <4 20 RK_FUNC_1 &pcfg_pull_up>;
			};

			sdio0_bus4: sdio0-bus4 {
				rockchip,pins = <4 20 RK_FUNC_1 &pcfg_pull_up>,
						<4 21 RK_FUNC_1 &pcfg_pull_up>,
						<4 22 RK_FUNC_1 &pcfg_pull_up>,
						<4 23 RK_FUNC_1 &pcfg_pull_up>;
			};

			sdio0_cmd: sdio0-cmd {
				rockchip,pins = <4 24 RK_FUNC_1 &pcfg_pull_up>;
			};

			sdio0_clk: sdio0-clk {
				rockchip,pins = <4 25 RK_FUNC_1 &pcfg_pull_none>;
			};

			sdio0_cd: sdio0-cd {
				rockchip,pins = <4 26 RK_FUNC_1 &pcfg_pull_up>;
			};

			sdio0_wp: sdio0-wp {
				rockchip,pins = <4 27 RK_FUNC_1 &pcfg_pull_up>;
			};

			sdio0_pwr: sdio0-pwr {
				rockchip,pins = <4 28 RK_FUNC_1 &pcfg_pull_up>;
			};

			sdio0_bkpwr: sdio0-bkpwr {
				rockchip,pins = <4 29 RK_FUNC_1 &pcfg_pull_up>;
			};

			sdio0_int: sdio0-int {
				rockchip,pins = <4 30 RK_FUNC_1 &pcfg_pull_up>;
			};
		};

		sdio1 {
			sdio1_bus1: sdio1-bus1 {
				rockchip,pins = <3 24 4 &pcfg_pull_up>;
			};

			sdio1_bus4: sdio1-bus4 {
				rockchip,pins = <3 24 4 &pcfg_pull_up>,
						<3 25 4 &pcfg_pull_up>,
						<3 26 4 &pcfg_pull_up>,
						<3 27 4 &pcfg_pull_up>;
			};

			sdio1_cd: sdio1-cd {
				rockchip,pins = <3 28 4 &pcfg_pull_up>;
			};

			sdio1_wp: sdio1-wp {
				rockchip,pins = <3 29 4 &pcfg_pull_up>;
			};

			sdio1_bkpwr: sdio1-bkpwr {
				rockchip,pins = <3 30 4 &pcfg_pull_up>;
			};

			sdio1_int: sdio1-int {
				rockchip,pins = <3 31 4 &pcfg_pull_up>;
			};

			sdio1_cmd: sdio1-cmd {
				rockchip,pins = <4 6 4 &pcfg_pull_up>;
			};

			sdio1_clk: sdio1-clk {
				rockchip,pins = <4 7 4 &pcfg_pull_none>;
			};

			sdio1_pwr: sdio1-pwr {
				rockchip,pins = <4 9 4 &pcfg_pull_up>;
			};
		};

		emmc {
			emmc_clk: emmc-clk {
				rockchip,pins = <3 18 RK_FUNC_2 &pcfg_pull_none>;
			};

			emmc_cmd: emmc-cmd {
				rockchip,pins = <3 16 RK_FUNC_2 &pcfg_pull_up>;
			};

			emmc_pwr: emmc-pwr {
				rockchip,pins = <3 9 RK_FUNC_2 &pcfg_pull_up>;
			};

			emmc_bus1: emmc-bus1 {
				rockchip,pins = <3 0 RK_FUNC_2 &pcfg_pull_up>;
			};

			emmc_bus4: emmc-bus4 {
				rockchip,pins = <3 0 RK_FUNC_2 &pcfg_pull_up>,
						<3 1 RK_FUNC_2 &pcfg_pull_up>,
						<3 2 RK_FUNC_2 &pcfg_pull_up>,
						<3 3 RK_FUNC_2 &pcfg_pull_up>;
			};

			emmc_bus8: emmc-bus8 {
				rockchip,pins = <3 0 RK_FUNC_2 &pcfg_pull_up>,
						<3 1 RK_FUNC_2 &pcfg_pull_up>,
						<3 2 RK_FUNC_2 &pcfg_pull_up>,
						<3 3 RK_FUNC_2 &pcfg_pull_up>,
						<3 4 RK_FUNC_2 &pcfg_pull_up>,
						<3 5 RK_FUNC_2 &pcfg_pull_up>,
						<3 6 RK_FUNC_2 &pcfg_pull_up>,
						<3 7 RK_FUNC_2 &pcfg_pull_up>;
			};
		};

		spi0 {
			spi0_clk: spi0-clk {
				rockchip,pins = <5 12 RK_FUNC_1 &pcfg_pull_up>;
			};
			spi0_cs0: spi0-cs0 {
				rockchip,pins = <5 13 RK_FUNC_1 &pcfg_pull_up>;
			};
			spi0_tx: spi0-tx {
				rockchip,pins = <5 14 RK_FUNC_1 &pcfg_pull_up>;
			};
			spi0_rx: spi0-rx {
				rockchip,pins = <5 15 RK_FUNC_1 &pcfg_pull_up>;
			};
			spi0_cs1: spi0-cs1 {
				rockchip,pins = <5 16 RK_FUNC_1 &pcfg_pull_up>;
			};
		};
		spi1 {
			spi1_clk: spi1-clk {
				rockchip,pins = <7 12 RK_FUNC_2 &pcfg_pull_up>;
			};
			spi1_cs0: spi1-cs0 {
				rockchip,pins = <7 13 RK_FUNC_2 &pcfg_pull_up>;
			};
			spi1_rx: spi1-rx {
				rockchip,pins = <7 14 RK_FUNC_2 &pcfg_pull_up>;
			};
			spi1_tx: spi1-tx {
				rockchip,pins = <7 15 RK_FUNC_2 &pcfg_pull_up>;
			};
		};

		spi2 {
			spi2_cs1: spi2-cs1 {
				rockchip,pins = <8 3 RK_FUNC_1 &pcfg_pull_up>;
			};
			spi2_clk: spi2-clk {
				rockchip,pins = <8 6 RK_FUNC_1 &pcfg_pull_up>;
			};
			spi2_cs0: spi2-cs0 {
				rockchip,pins = <8 7 RK_FUNC_1 &pcfg_pull_up>;
			};
			spi2_rx: spi2-rx {
				rockchip,pins = <8 8 RK_FUNC_1 &pcfg_pull_up>;
			};
			spi2_tx: spi2-tx {
				rockchip,pins = <8 9 RK_FUNC_1 &pcfg_pull_up>;
			};
		};

		uart0 {
			uart0_xfer: uart0-xfer {
				rockchip,pins = <4 16 RK_FUNC_1 &pcfg_pull_up>,
						<4 17 RK_FUNC_1 &pcfg_pull_none>;
			};

			uart0_cts: uart0-cts {
				rockchip,pins = <4 18 RK_FUNC_1 &pcfg_pull_up>;
			};

			uart0_rts: uart0-rts {
				rockchip,pins = <4 19 RK_FUNC_1 &pcfg_pull_none>;
			};
		};

		uart1 {
			uart1_xfer: uart1-xfer {
				rockchip,pins = <5 8 RK_FUNC_1 &pcfg_pull_up>,
						<5 9 RK_FUNC_1 &pcfg_pull_none>;
			};

			uart1_cts: uart1-cts {
				rockchip,pins = <5 10 RK_FUNC_1 &pcfg_pull_up>;
			};

			uart1_rts: uart1-rts {
				rockchip,pins = <5 11 RK_FUNC_1 &pcfg_pull_none>;
			};
		};

		uart2 {
			uart2_xfer: uart2-xfer {
				rockchip,pins = <7 22 RK_FUNC_1 &pcfg_pull_up>,
						<7 23 RK_FUNC_1 &pcfg_pull_none>;
			};
			/* no rts / cts for uart2 */
		};

		uart3 {
			uart3_xfer: uart3-xfer {
				rockchip,pins = <7 7 RK_FUNC_1 &pcfg_pull_up>,
						<7 8 RK_FUNC_1 &pcfg_pull_none>;
			};

			uart3_cts: uart3-cts {
				rockchip,pins = <7 9 RK_FUNC_1 &pcfg_pull_up>;
			};

			uart3_rts: uart3-rts {
				rockchip,pins = <7 10 RK_FUNC_1 &pcfg_pull_none>;
			};
		};

		uart4 {
			uart4_xfer: uart4-xfer {
				rockchip,pins = <5 15 3 &pcfg_pull_up>,
						<5 14 3 &pcfg_pull_none>;
			};

			uart4_cts: uart4-cts {
				rockchip,pins = <5 12 3 &pcfg_pull_up>;
			};

			uart4_rts: uart4-rts {
				rockchip,pins = <5 13 3 &pcfg_pull_none>;
			};
		};

		tsadc {
			otp_gpio: otp-gpio {
				rockchip,pins = <0 10 RK_FUNC_GPIO &pcfg_pull_none>;
			};

			otp_out: otp-out {
				rockchip,pins = <0 10 RK_FUNC_1 &pcfg_pull_none>;
			};
		};

		pwm0 {
			pwm0_pin: pwm0-pin {
				rockchip,pins = <7 0 RK_FUNC_1 &pcfg_pull_none>;
			};

			pwm0_pin_pull_down: pwm0-pin-pull-down {
				rockchip,pins = <7 0 RK_FUNC_1 &pcfg_pull_down>;
			};

		};

		pwm1 {
			pwm1_pin: pwm1-pin {
				rockchip,pins = <7 1 RK_FUNC_1 &pcfg_pull_none>;
			};

			pwm1_pin_pull_down: pwm1-pin-pull-down {
				rockchip,pins = <7 1 RK_FUNC_1 &pcfg_pull_down>;
			};
		};

		pwm2 {
			pwm2_pin: pwm2-pin {
				rockchip,pins = <7 22 3 &pcfg_pull_none>;
			};

			pwm2_pin_pull_down: pwm2-pin-pull-down {
				rockchip,pins = <7 22 3 &pcfg_pull_down>;
			};
		};

		pwm3 {
			pwm3_pin: pwm3-pin {
				rockchip,pins = <7 23 3 &pcfg_pull_none>;
			};

			pwm3_pin_pull_down: pwm3-pin-pull-down {
				rockchip,pins = <7 23 3 &pcfg_pull_down>;
			};
		};

		gmac {
			rgmii_pins: rgmii-pins {
				rockchip,pins = <3 30 3 &pcfg_pull_none>,
						<3 31 3 &pcfg_pull_none>,
						<3 26 3 &pcfg_pull_none>,
						<3 27 3 &pcfg_pull_none>,
						<3 28 3 &pcfg_pull_none_12ma>,
						<3 29 3 &pcfg_pull_none_12ma>,
						<3 24 3 &pcfg_pull_none_12ma>,
						<3 25 3 &pcfg_pull_none_12ma>,
						<4 0 3 &pcfg_pull_none>,
						<4 5 3 &pcfg_pull_none>,
						<4 6 3 &pcfg_pull_none>,
						<4 9 3 &pcfg_pull_none_12ma>,
						<4 4 3 &pcfg_pull_none_12ma>,
						<4 1 3 &pcfg_pull_none>,
						<4 3 3 &pcfg_pull_none>;
			};

			rmii_pins: rmii-pins {
				rockchip,pins = <3 30 3 &pcfg_pull_none>,
						<3 31 3 &pcfg_pull_none>,
						<3 28 3 &pcfg_pull_none>,
						<3 29 3 &pcfg_pull_none>,
						<4 0 3 &pcfg_pull_none>,
						<4 5 3 &pcfg_pull_none>,
						<4 4 3 &pcfg_pull_none>,
						<4 1 3 &pcfg_pull_none>,
						<4 2 3 &pcfg_pull_none>,
						<4 3 3 &pcfg_pull_none>;
			};
		};

		spdif {
			spdif_tx: spdif-tx {
				rockchip,pins = <RK_GPIO6 11 RK_FUNC_1 &pcfg_pull_none>;
			};
		};

		cif {
			cif_dvp_d2d9: cif-dvp-d2d9 {
				rockchip,pins = <2 0 RK_FUNC_1 &pcfg_pull_none>,
						<2 1 RK_FUNC_1 &pcfg_pull_none>,
						<2 2 RK_FUNC_1 &pcfg_pull_none>,
						<2 3 RK_FUNC_1 &pcfg_pull_none>,
						<2 4 RK_FUNC_1 &pcfg_pull_none>,
						<2 5 RK_FUNC_1 &pcfg_pull_none>,
						<2 6 RK_FUNC_1 &pcfg_pull_none>,
						<2 7 RK_FUNC_1 &pcfg_pull_none>,
						<2 8 RK_FUNC_1 &pcfg_pull_none>,
						<2 9 RK_FUNC_1 &pcfg_pull_none>,
						<2 11 RK_FUNC_1 &pcfg_pull_none>;
			};
		};

		isp_pin {
			isp_mipi: isp-mipi {
				rockchip,pins =
					/* cif_clkout */
					<2 11 RK_FUNC_1 &pcfg_pull_none>;
			};

			isp_dvp_d2d9: isp-d2d9 {
				rockchip,pins =
					/* cif_data2 ... cif_data9 */
					<2 0 RK_FUNC_1 &pcfg_pull_none>,
					<2 1 RK_FUNC_1 &pcfg_pull_none>,
					<2 2 RK_FUNC_1 &pcfg_pull_none>,
					<2 3 RK_FUNC_1 &pcfg_pull_none>,
					<2 4 RK_FUNC_1 &pcfg_pull_none>,
					<2 5 RK_FUNC_1 &pcfg_pull_none>,
					<2 6 RK_FUNC_1 &pcfg_pull_none>,
					<2 7 RK_FUNC_1 &pcfg_pull_none>,
					/* cif_sync, cif_href */
					<2 8 RK_FUNC_1 &pcfg_pull_none>,
					<2 9 RK_FUNC_1 &pcfg_pull_none>,
					/* cif_clkin, cif_clkout */
					<2 10 RK_FUNC_1 &pcfg_pull_none>,
					<2 11 RK_FUNC_1 &pcfg_pull_none>;
			};

			isp_dvp_d0d1: isp-d0d1 {
				rockchip,pins =
					/* cif_data0, cif_data1 */
					<2 12 RK_FUNC_1 &pcfg_pull_none>,
					<2 13 RK_FUNC_1 &pcfg_pull_none>;
			};

			isp_dvp_d10d11: isp-d10d11 {
				rockchip,pins =
					/* cif_data10, cif_data11 */
					<2 14 RK_FUNC_1 &pcfg_pull_none>,
					<2 15 RK_FUNC_1 &pcfg_pull_none>;
			};

			isp_dvp_d0d7: isp-d0d7 {
				rockchip,pins =
					/* cif_data0 ... cif_data7 */
					<2 12 RK_FUNC_1 &pcfg_pull_none>,
					<2 13 RK_FUNC_1 &pcfg_pull_none>,
					<2 0 RK_FUNC_1 &pcfg_pull_none>,
					<2 1 RK_FUNC_1 &pcfg_pull_none>,
					<2 2 RK_FUNC_1 &pcfg_pull_none>,
					<2 3 RK_FUNC_1 &pcfg_pull_none>,
					<2 4 RK_FUNC_1 &pcfg_pull_none>,
					<2 5 RK_FUNC_1 &pcfg_pull_none>;
			};

			isp_shutter: isp-shutter {
				rockchip,pins =
					/* SHUTTEREN, SHUTTERTRIG */
					<7 12 RK_FUNC_2 &pcfg_pull_none>,
					<7 15 RK_FUNC_2 &pcfg_pull_none>;
			};

			isp_flash_trigger: isp-flash-trigger {
				rockchip,pins =
					/* ISP_FLASHTRIGOU */
					<7 13 RK_FUNC_2 &pcfg_pull_none>;
			};

			isp_prelight: isp-prelight {
				rockchip,pins =
					/* ISP_PRELIGHTTRIG */
					<7 14 RK_FUNC_2 &pcfg_pull_none>;
			};

			isp_flash_trigger_as_gpio: isp-flash-trigger-as-gpio {
				rockchip,pins =
					/* ISP_FLASHTRIGOU */
					<7 13 RK_FUNC_2 &pcfg_pull_none>;
			};
		};

	};
	rockchip_suspend: rockchip-suspend {
		compatible = "rockchip,pm-rk3288";
		status = "disabled";
		rockchip,sleep-mode-config = <
			(0
			|RKPM_CTR_PWR_DMNS
			|RKPM_CTR_GTCLKS
			|RKPM_CTR_PLLS
			|RKPM_CTR_ARMOFF_LPMD
			|RKPM_CTR_SYSCLK_OSC_DIS
			)
		>;
		rockchip,wakeup-config = <
			(0
			| RKPM_GPIO_WKUP_EN
			)
		>;
		rockchip,pwm-regulator-config = <
			(0
			| PWM2_REGULATOR_EN
			)
		>;
	};
};

发表评论

您的电子邮箱地址不会被公开。