• 周三. 6月 18th, 2025

dts — rk3036-clocks.dtsi

关键词:rk3036-clocks.dtsi ,linux_3.10,rockchip,dts

dts — rk3036-clocks.dtsi

/*
 * Copyright (C) 2014 ROCKCHIP, Inc.
 *
 * This program 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 program 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.
 */
#include <dt-bindings/clock/rockchip,rk3036.h>

/{

	clocks {
		compatible = "rockchip,rk-clocks";
		#address-cells = <1>;
		#size-cells = <1>;
		ranges = <0x0  0x20000000  0x1f0>;

		fixed_rate_cons {
			compatible = "rockchip,rk-fixed-rate-cons";

			xin24m: xin24m {
				compatible = "rockchip,rk-fixed-clock";
				clock-output-names = "xin24m";
				clock-frequency = <24000000>;
				#clock-cells = <0>;
			};

			xin12m: xin12m {
				compatible = "rockchip,rk-fixed-clock";
				clocks = <&xin24m>;
				clock-output-names = "xin12m";
				clock-frequency = <12000000>;
				#clock-cells = <0>;
			};

			rmii_clkin: rmii_clkin {
				compatible = "rockchip,rk-fixed-clock";
				clock-output-names = "rmii_clkin";
				clock-frequency = <50000000>;
				#clock-cells = <0>;
			};

			usb_480m: usb_480m {
				compatible = "rockchip,rk-fixed-clock";
				clock-output-names = "usb_480m";
				clock-frequency = <480000000>;
				#clock-cells = <0>;
			};

			i2s_clkin: i2s_clkin {
				compatible = "rockchip,rk-fixed-clock";
				clock-output-names = "i2s_clkin";
				clock-frequency = <0>;
				#clock-cells = <0>;
			};

			jtag_tck: jtag_tck {
				compatible = "rockchip,rk-fixed-clock";
				clock-output-names = "jtag_tck";
				clock-frequency = <0>;
				#clock-cells = <0>;
			};

			dummy: dummy {
				compatible = "rockchip,rk-fixed-clock";
				clock-output-names = "dummy";
				clock-frequency = <0>;
				#clock-cells = <0>;
			};

			dummy_cpll: dummy_cpll {
				compatible = "rockchip,rk-fixed-clock";
				clock-output-names = "dummy_cpll";
				clock-frequency = <0>;
				#clock-cells = <0>;
			};

		};

		fixed_factor_cons {
			compatible = "rockchip,rk-fixed-factor-cons";
/*
			otgphy0_12m: otgphy0_12m {
				compatible = "rockchip,rk-fixed-factor-clock";
				clocks = <&clk_gates1 5>;
				clock-output-names = "otgphy0_12m";
				clock-div = <1>;
				clock-mult = <20>;
				#clock-cells = <0>;
			};
*/
			hclk_vcodec: hclk_vcodec {
				compatible = "rockchip,rk-fixed-factor-clock";
				clocks = <&aclk_vcodec_pre>;
				clock-output-names = "hclk_vcodec";
				clock-div = <4>;
				clock-mult = <1>;
				#clock-cells = <0>;
			};

			io_mac_mdclkout: io_mac_mdclkout {
				compatible = "rockchip,rk-fixed-factor-clock";
				clocks = <&aclk_peri_pre>;
				clock-output-names = "io_mac_mdclkout";
				clock-div = <2>;
				clock-mult = <1>;
				#clock-cells = <0>;
			};
		};

		clock_regs {
			compatible = "rockchip,rk-clock-regs";
			#address-cells = <1>;
			#size-cells = <1>;
			reg = <0x0000 0x01f0>;
			ranges;

			/* PLL control regs */
			pll_cons {
				compatible = "rockchip,rk-pll-cons";
				#address-cells = <1>;
				#size-cells = <1>;
				ranges ;

				clk_apll: pll-clk@0000 {
					compatible = "rockchip,rk3188-pll-clk";
					reg = <0x0000 0x10>;
					mode-reg = <0x0040 0>;
					status-reg = <0x0004 10>;
					clocks = <&xin24m>;
					clock-output-names = "clk_apll";
					rockchip,pll-type = <CLK_PLL_3036_APLL>;
					#clock-cells = <0>;
				};

				clk_dpll: pll-clk@0010 {
					compatible = "rockchip,rk3188-pll-clk";
					reg = <0x0010 0x10>;
					mode-reg = <0x0040 4>;
					status-reg = <0x0014 10>;
					clocks = <&xin24m>;
					clock-output-names = "clk_dpll";
					rockchip,pll-type = <CLK_PLL_3036PLUS_AUTO>;
					#clock-cells = <0>;
				};

				clk_gpll: pll-clk@0030 {
					compatible = "rockchip,rk3188-pll-clk";
					reg = <0x0030 0x10>;
					mode-reg = <0x0040 12>;
					status-reg = <0x0034 10>;
					clocks = <&xin24m>;
					clock-output-names = "clk_gpll";
					rockchip,pll-type = <CLK_PLL_3036PLUS_AUTO>;
					#clock-cells = <0>;
					#clock-init-cells = <1>;
				};

			};

			/* Select control regs */
			clk_sel_cons {
				compatible = "rockchip,rk-sel-cons";
				#address-cells = <1>;
				#size-cells = <1>;
				ranges;

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

					clk_core_div: clk_core_div {
						compatible = "rockchip,rk3188-div-con";
						rockchip,bits = <0 5>;
						clocks = <&clk_core>;
						clock-output-names = "clk_core";
						rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>;
						#clock-cells = <0>;
						rockchip,clkops-idx = <CLKOPS_RATE_CORE>;
						rockchip,flags = <(CLK_GET_RATE_NOCACHE |
									CLK_SET_RATE_NO_REPARENT)>;
					};

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

					clk_core: clk_core_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <7 1>;
						clocks = <&clk_apll>, <&clk_gates0 6>;
						clock-output-names = "clk_core";
						#clock-cells = <0>;
						#clock-init-cells = <1>;
					};

					aclk_cpu_pre_div: aclk_cpu_pre_div {
						compatible = "rockchip,rk3188-div-con";
						rockchip,bits = <8 5>;
						clocks = <&aclk_cpu_pre>;
						clock-output-names = "aclk_cpu_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_cpu_pre: aclk_cpu_pre_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <14 2>;
						clocks = <&clk_apll>, <&clk_dpll>,<&clk_gpll>;
						clock-output-names = "aclk_cpu_pre";
						#clock-cells = <0>;
						#clock-init-cells = <1>;
					};

				};

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

					pclk_dbg_div:  pclk_dbg_div {
						compatible = "rockchip,rk3188-div-con";
						rockchip,bits = <0 4>;
						clocks = <&clk_core>;
						clock-output-names = "pclk_dbg";
						rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>;
						#clock-cells = <0>;
						rockchip,clkops-idx = <CLKOPS_RATE_CORE_CHILD>;
					};

					aclk_core_pre: aclk_core_pre_div {
						compatible = "rockchip,rk3188-div-con";
						rockchip,bits = <4 3>;
						clocks = <&clk_core>;
						clock-output-names = "aclk_core_pre";
						rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>;
						#clock-cells = <0>;
						rockchip,clkops-idx = <CLKOPS_RATE_CORE_CHILD>;
					};

					/* reg[7]: reserved */

					hclk_cpu_pre: hclk_cpu_pre_div {
						compatible = "rockchip,rk3188-div-con";
						rockchip,bits = <8 2>;
						clocks = <&aclk_cpu_pre>;
						clock-output-names = "hclk_cpu_pre";
						rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>;
						#clock-cells = <0>;
						#clock-init-cells = <1>;
					};

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

					pclk_cpu_pre: pclk_cpu_pre_div {
						compatible = "rockchip,rk3188-div-con";
						rockchip,bits = <12 3>;
						clocks = <&aclk_cpu_pre>;
						clock-output-names = "pclk_cpu_pre";
						rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>;
						#clock-cells = <0>;
						#clock-init-cells = <1>;
					};

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

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

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

					clk_timer0: clk_timer0_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <4 1>;
						clocks = <&xin24m>, <&aclk_peri_pre>;
						clock-output-names = "clk_timer0";
						#clock-cells = <0>;
						#clock-init-cells = <1>;
					};

					clk_timer1: clk_timer1_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <5 1>;
						clocks = <&xin24m>, <&aclk_peri_pre>;
						clock-output-names = "clk_timer1";
						#clock-cells = <0>;
						#clock-init-cells = <1>;
					};

					clk_timer2: clk_timer2_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <6 1>;
						clocks = <&xin24m>, <&aclk_peri_pre>;
						clock-output-names = "clk_timer2";
						#clock-cells = <0>;
						#clock-init-cells = <1>;
					};

					clk_timer3: clk_timer3_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <7 1>;
						clocks = <&xin24m>, <&aclk_peri_pre>;
						clock-output-names = "clk_timer3";
						#clock-cells = <0>;
						#clock-init-cells = <1>;
					};

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

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

					clk_i2s_pll_div: clk_i2s_pll_div {
						compatible = "rockchip,rk3188-div-con";
						rockchip,bits = <0 7>;
						clocks = <&clk_i2s_pll>;
						clock-output-names = "clk_i2s_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_i2s: clk_i2s_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <8 2>;
						clocks = <&clk_i2s_pll_div>, <&i2s_frac>, <&i2s_clkin>, <&xin12m>;
						clock-output-names = "clk_i2s";
						#clock-cells = <0>;
						rockchip,clkops-idx =
							<CLKOPS_RATE_RK3288_I2S>;
						rockchip,flags = <CLK_SET_RATE_PARENT>;
					};

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

					clk_i2s_out: i2s_outclk_mux {
						compatible = "rockchip,rk3188-mux-con";
						rockchip,bits = <12 1>;
						clocks = <&xin12m>, <&clk_i2s>;
						clock-output-names = "i2s_clkout";
						#clock-cells = <0>;
					};

					/* reg[13]: reserved */

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

				};

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

					spdif_div: spdif_div {
						compatible = "rockchip,rk3188-div-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
			)
		>;
	};
};

发表评论

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