关键词: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 ) >; }; };