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