关键词:rk3188-clocks.dtsi ,linux_3.10,rockchip,dts
dts — rk3188-clocks.dtsi
/* * Copyright (C) 2013 ROCKCHIP, Inc. * Author: chenxing <chenxing@rock-chips.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #include <dt-bindings/clock/rockchip,rk3188.h> /{ clocks { compatible = "rockchip,rk-clocks"; #address-cells = <1>; #size-cells = <1>; ranges = <0x0 0x20000000 0x0100>; fixed_rate_cons { compatible = "rockchip,rk-fixed-rate-cons"; xin24m: xin24m { compatible = "fixed-clock"; #clock-cells = <0>; clock-output-names = "xin24m"; clock-frequency = <24000000>; }; xin12m: xin12m { compatible = "fixed-clock"; #clock-cells = <0>; clocks = <&xin24m>; clock-output-names = "xin12m"; clock-frequency = <12000000>; }; dummy: dummy { compatible = "fixed-clock"; #clock-cells = <0>; clock-output-names = "dummy"; clock-frequency = <0>; }; rmii_clkin: rmii_clkin { compatible = "fixed-clock"; #clock-cells = <0>; clock-output-names = "rmii_clkin"; clock-frequency = <0>; }; clk_hsadc_ext: clk_hsadc_ext { compatible = "fixed-clock"; #clock-cells = <0>; clock-output-names = "clk_hsadc_ext"; clock-frequency = <0>; }; clk_cif_in: clk_cif_in { compatible = "fixed-clock"; #clock-cells = <0>; clock-output-names = "clk_cif_in"; clock-frequency = <0>; }; }; fixed_factor_cons { compatible = "rockchip,rk-fixed-factor-cons"; otgphy0_480m: otgphy0_480m { compatible = "fixed-factor-clock"; clocks = <&clk_gates1 5>; clock-output-names = "otgphy0_480m"; clock-div = <1>; clock-mult = <20>; #clock-cells = <0>; }; otgphy1_480m: otgphy1_480m { compatible = "fixed-factor-clock"; clocks = <&clk_gates1 6>; clock-output-names = "otgphy1_480m"; clock-div = <1>; clock-mult = <20>; #clock-cells = <0>; }; }; clock_regs { compatible = "rockchip,rk-clock-regs"; reg = <0x0000 0x3ff>; #address-cells = <1>; #size-cells = <1>; ranges; /* PLL control regs */ pll_cons { compatible = "rockchip,rk-pll-cons"; #address-cells = <1>; #size-cells = <1>; ranges ; clk_apll: pll-clk@0000 { compatible = "rockchip,rk3188-pll-clk"; reg = <0x0000 0x10>; mode-reg = <0x0040 0>; status-reg = <0x00ac 6>; clocks = <&xin24m>; clock-output-names = "clk_apll"; rockchip,pll-type = <CLK_PLL_3188_APLL>; #clock-cells = <0>; }; clk_dpll: pll-clk@0010 { compatible = "rockchip,rk3188-pll-clk"; reg = <0x0010 0x10>; mode-reg = <0x0040 4>; status-reg = <0x00ac 5>; clocks = <&xin24m>; clock-output-names = "clk_dpll"; rockchip,pll-type = <CLK_PLL_3188>; #clock-cells = <0>; }; clk_cpll: pll-clk@0020 { compatible = "rockchip,rk3188-pll-clk"; reg = <0x0020 0x10>; mode-reg = <0x0040 8>; status-reg = <0x00ac 7>; clocks = <&xin24m>; clock-output-names = "clk_cpll"; rockchip,pll-type = <CLK_PLL_3188>; #clock-cells = <0>; #clock-init-cells = <1>; }; clk_gpll: pll-clk@0030 { compatible = "rockchip,rk3188-pll-clk"; reg = <0x0030 0x10>; mode-reg = <0x0040 12>; status-reg = <0x00ac 8>; clocks = <&xin24m>; clock-output-names = "clk_gpll"; rockchip,pll-type = <CLK_PLL_3188>; #clock-cells = <0>; #clock-init-cells = <1>; }; }; /* Select control regs */ clk_sel_cons { compatible = "rockchip,rk-sel-cons"; #address-cells = <1>; #size-cells = <1>; ranges; clk_sel_con0: sel-con@0044 { compatible = "rockchip,rk3188-selcon"; reg = <0x0044 0x4>; #address-cells = <1>; #size-cells = <1>; aclk_cpu_div: aclk_cpu_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <0 5>; clocks = <&aclk_cpu>; clock-output-names = "aclk_cpu"; #clock-cells = <0>; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; rockchip,clkops-idx = <CLKOPS_RATE_MUX_DIV>; rockchip,flags = <CLK_SET_RATE_NO_REPARENT>; }; aclk_cpu: aclk_cpu_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <5 1>; clocks = <&clk_apll>, <&clk_gpll>; clock-output-names = "aclk_cpu"; #clock-cells = <0>; #clock-init-cells = <1>; }; clk_core_peri: clk_core_peri_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <6 2>; clocks = <&clk_core>; clock-output-names = "clk_core_peri"; rockchip,div-type = <CLK_DIVIDER_USER_DEFINE>; rockchip,clkops-idx = <CLKOPS_RATE_CORE_CHILD>; #clock-cells = <0>; rockchip,div-relations = <0x0 2 0x1 4 0x2 8 0x3 16>; }; clk_core: clk_core_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <8 1>; clocks = <&clk_apll>, <&clk_gates0 1>; clock-output-names = "clk_core"; rockchip,flags = <(CLK_GET_RATE_NOCACHE | CLK_SET_RATE_NO_REPARENT)>; #clock-cells = <0>; #clock-init-cells = <1>; }; clk_core_div: clk_core_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <9 5>; clocks = <&clk_core>; clock-output-names = "clk_core"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; rockchip,clkops-idx = <CLKOPS_RATE_CORE>; #clock-cells = <0>; }; /* reg[15:14]: reserved */ }; clk_sel_con1: sel-con@0048 { compatible = "rockchip,rk3188-selcon"; reg = <0x0048 0x4>; #address-cells = <1>; #size-cells = <1>; /* reg[2:0]: reserved */ aclk_core: aclk_core_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <3 3>; clocks = <&clk_core>; clock-output-names = "aclk_core"; #clock-cells = <0>; rockchip,div-type = <CLK_DIVIDER_USER_DEFINE>; rockchip,clkops-idx = <CLKOPS_RATE_CORE_CHILD>; rockchip,div-relations = <0x0 1 0x1 2 0x2 3 0x3 4 0x4 8>; }; /* reg[7:6]: reserved */ hclk_cpu: hclk_cpu_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <8 2>; clocks = <&aclk_cpu>; rockchip,div-type = <CLK_DIVIDER_POWER_OF_TWO>; clock-output-names = "hclk_cpu"; #clock-cells = <0>; #clock-init-cells = <1>; }; /* reg[11:10]: reserved */ pclk_cpu: pclk_cpu_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <12 2>; clocks = <&aclk_cpu>; rockchip,div-type = <CLK_DIVIDER_POWER_OF_TWO>; clock-output-names = "pclk_cpu"; #clock-cells = <0>; #clock-init-cells = <1>; }; pclk_ahb2apb: pclk_ahb2apb_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <14 2>; clocks = <&hclk_cpu>; rockchip,div-type = <CLK_DIVIDER_POWER_OF_TWO>; clock-output-names = "pclk_ahb2apb"; #clock-cells = <0>; #clock-init-cells = <1>; }; }; clk_sel_con2: sel-con@004c { compatible = "rockchip,rk3188-selcon"; reg = <0x004c 0x4>; #address-cells = <1>; #size-cells = <1>; /* reg[14:0]: reserved */ clk_i2s_pll_mux: clk_i2s_pll_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <15 1>; clocks = <&clk_gpll>, <&clk_cpll>; clock-output-names = "clk_i2s_pll"; #clock-cells = <0>; #clock-init-cells = <1>; }; }; clk_sel_con3: sel-con@0050 { compatible = "rockchip,rk3188-selcon"; reg = <0x0050 0x4>; #address-cells = <1>; #size-cells = <1>; clk_i2s_div: clk_i2s_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <0 7>; clocks = <&clk_i2s_pll_mux>; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; clock-output-names = "clk_i2s_div"; #clock-cells = <0>; }; /* reg[7]: reserved */ clk_i2s: clk_i2s_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <8 2>; clocks = <&clk_i2s_div>, <&clk_i2s_frac>, <&xin12m>; clock-output-names = "clk_i2s"; rockchip,clkops-idx = <CLKOPS_RATE_I2S>; rockchip,flags = <CLK_SET_RATE_PARENT>; #clock-cells = <0>; }; /* reg[15:10]: reserved */ }; /* clk_sel_con4: reserved */ clk_sel_con5: sel-con@0058 { compatible = "rockchip,rk3188-selcon"; reg = <0x0058 0x4>; #address-cells = <1>; #size-cells = <1>; clk_spdif_div: clk_spdif_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <0 7>; clocks = <&clk_i2s_pll_mux>; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; clock-output-names = "clk_spdif_div"; /* spdif same as i2s */ #clock-cells = <0>; }; /* reg[7]: reserved */ clk_spdif: clk_spdif_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <8 2>; clocks = <&clk_spdif_div>, <&clk_spdif_frac>, <&xin12m>; clock-output-names = "clk_spdif"; rockchip,clkops-idx = <CLKOPS_RATE_I2S>; rockchip,flags = <CLK_SET_RATE_PARENT>; #clock-cells = <0>; }; /* reg[15:10]: reserved */ }; /* clk_sel_con6: reserved */ clk_sel_con7: sel-con@0060 { compatible = "rockchip,rk3188-selcon"; reg = <0x0060 0x4>; #address-cells = <1>; #size-cells = <1>; clk_i2s_frac: clk_i2s_frac { compatible = "rockchip,rk3188-frac-con"; clocks = <&clk_i2s_div>; clock-output-names = "clk_i2s_frac"; /* numerator denominator */ rockchip,bits = <0 32>; #clock-cells = <0>; rockchip,clkops-idx = <CLKOPS_RATE_I2S_FRAC>; }; }; /* clk_sel_con8: reserved */ clk_sel_con9: sel-con@0068 { compatible = "rockchip,rk3188-selcon"; reg = <0x0068 0x4>; #address-cells = <1>; #size-cells = <1>; clk_spdif_frac: clk_spdif_frac { compatible = "rockchip,rk3188-frac-con"; clocks = <&clk_spdif_div>; clock-output-names = "clk_spdif_frac"; /* numerator denominator */ rockchip,bits = <0 32>; #clock-cells = <0>; rockchip,clkops-idx = <CLKOPS_RATE_I2S_FRAC>; }; }; clk_sel_con10: sel-con@006c { compatible = "rockchip,rk3188-selcon"; reg = <0x006c 0x4>; #address-cells = <1>; #size-cells = <1>; aclk_peri_div: aclk_peri_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <0 5>; clocks = <&aclk_peri>; clock-output-names = "aclk_peri"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; #clock-init-cells = <1>; rockchip,clkops-idx = <CLKOPS_RATE_MUX_DIV>; rockchip,flags = <CLK_SET_RATE_NO_REPARENT>; }; /* reg[7:5]: reserved */ hclk_peri: hclk_peri_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <8 2>; clocks = <&aclk_peri>; clock-output-names = "hclk_peri"; rockchip,div-type = <CLK_DIVIDER_POWER_OF_TWO>; #clock-cells = <0>; #clock-init-cells = <1>; }; /* reg[11:10]: reserved */ pclk_peri: pclk_peri_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <12 2>; clocks = <&aclk_peri>; clock-output-names = "pclk_peri"; rockchip,div-type = <CLK_DIVIDER_POWER_OF_TWO>; #clock-cells = <0>; #clock-init-cells = <1>; }; /* reg[14]: reserved */ aclk_peri: aclk_peri_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <15 1>; clocks = <&clk_cpll>, <&clk_gpll>; clock-output-names = "aclk_peri"; #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_sdmmc: clk_sdmmc_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <0 6>; clocks = <&hclk_peri>; clock-output-names = "clk_sdmmc"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; rockchip,clkops-idx = <CLKOPS_RATE_EVENDIV>; #clock-cells = <0>; }; /* reg[7:6]: reserved */ clk_ehci1phy12m: ehci1_phy_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <8 6>; clocks = <&clk_ehci1phy480m>; clock-output-names = "clk_ehci1phy12m"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; }; /* reg[15:14]: reserved */ }; clk_sel_con12: sel-con@0074 { compatible = "rockchip,rk3188-selcon"; reg = <0x0074 0x4>; #address-cells = <1>; #size-cells = <1>; clk_sdio: clk_sdio_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <0 6>; clocks = <&hclk_peri>; clock-output-names = "clk_sdio"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; rockchip,clkops-idx = <CLKOPS_RATE_EVENDIV>; #clock-cells = <0>; }; /* reg[7:6]: reserved */ clk_emmc: clk_emmc_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <8 6>; clocks = <&hclk_peri>; clock-output-names = "clk_emmc"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; rockchip,clkops-idx = <CLKOPS_RATE_EVENDIV>; #clock-cells = <0>; }; /* reg[14]: reserved */ clk_uart_pll_mux: clk_uart_pll_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <15 1>; clocks = <&clk_gpll>, <&clk_cpll>; clock-output-names = "clk_uart_pll"; #clock-cells = <0>; #clock-init-cells = <1>; }; }; 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_mux>; 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>, <&clk_uart0_frac>, <&xin24m>; rockchip,clkops-idx = <CLKOPS_RATE_UART>; rockchip,flags = <CLK_SET_RATE_PARENT>; clock-output-names = "clk_uart0"; #clock-cells = <0>; }; /* reg[15:10]: 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_mux>; 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>, <&clk_uart1_frac>, <&xin24m>; rockchip,clkops-idx = <CLKOPS_RATE_UART>; rockchip,flags = <CLK_SET_RATE_PARENT>; clock-output-names = "clk_uart1"; #clock-cells = <0>; }; /* 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_mux>; 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>, <&clk_uart2_frac>, <&xin24m>; rockchip,clkops-idx = <CLKOPS_RATE_UART>; rockchip,flags = <CLK_SET_RATE_PARENT>; clock-output-names = "clk_uart2"; #clock-cells = <0>; }; /* reg[15:10]: reserved */ }; clk_sel_con16: sel-con@0084 { compatible = "rockchip,rk3188-selcon"; reg = <0x0084 0x4>; #address-cells = <1>; #size-cells = <1>; clk_uart3_div: clk_uart3_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <0 7>; clocks = <&clk_uart_pll_mux>; clock-output-names = "clk_uart3_div"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; }; /* reg[7]: reserved */ clk_uart3: clk_uart3_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <8 2>; clocks = <&clk_uart3_div>, <&clk_uart3_frac>, <&xin24m>; rockchip,clkops-idx = <CLKOPS_RATE_UART>; rockchip,flags = <CLK_SET_RATE_PARENT>; clock-output-names = "clk_uart3"; #clock-cells = <0>; }; /* reg[15:10]: reserved */ }; clk_sel_con17: sel-con@0088 { compatible = "rockchip,rk3188-selcon"; reg = <0x0088 0x4>; #address-cells = <1>; #size-cells = <1>; clk_uart0_frac: clk_uart0_frac { compatible = "rockchip,rk3188-frac-con"; clocks = <&clk_uart0_div>; clock-output-names = "clk_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>; clk_uart1_frac: clk_uart1_frac { compatible = "rockchip,rk3188-frac-con"; clocks = <&clk_uart1_div>; clock-output-names = "clk_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>; clk_uart2_frac: clk_uart2_frac { compatible = "rockchip,rk3188-frac-con"; clocks = <&clk_uart2_div>; clock-output-names = "clk_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_uart3_frac: clk_uart3_frac { compatible = "rockchip,rk3188-frac-con"; clocks = <&clk_uart3_div>; clock-output-names = "clk_uart3_frac"; /* numerator denominator */ rockchip,bits = <0 32>; rockchip,clkops-idx = <CLKOPS_RATE_FRAC>; #clock-cells = <0>; }; }; clk_sel_con21: sel-con@0098 { compatible = "rockchip,rk3188-selcon"; reg = <0x0098 0x4>; #address-cells = <1>; #size-cells = <1>; clk_mac_pll_mux: clk_mac_pll_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <0 1>; clocks = <&clk_gpll>, <&clk_dpll>; clock-output-names = "clk_mac_pll"; #clock-cells = <0>; }; /* reg[3:1]: reserved */ clk_mac: clk_mac_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <4 1>; clocks = <&clk_mac_pll_mux>, <&rmii_clkin>; rockchip,clkops-idx = <CLKOPS_RATE_MAC_REF>; rockchip,flags = <CLK_SET_RATE_PARENT>; clock-output-names = "clk_mac"; #clock-cells = <0>; }; /* reg[7:5]: reserved */ clk_mac_pll_div: clk_mac_pll_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <8 5>; clocks = <&clk_mac_pll_mux>; clock-output-names = "clk_mac_pll"; rockchip,clkops-idx = <CLKOPS_RATE_MUX_DIV>; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; }; /* reg[15:13]: reserved */ }; clk_sel_con22: sel-con@009c { compatible = "rockchip,rk3188-selcon"; reg = <0x009c 0x4>; #address-cells = <1>; #size-cells = <1>; clk_hsadc_pll_mux: clk_hsadc_pll_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <0 1>; clocks = <&clk_gpll>, <&clk_cpll>; clock-output-names = "clk_hsadc_pll"; #clock-cells = <0>; }; /* reg[3:1]: reserved */ clk_hsadc: clk_hsadc_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <4 2>; clocks = <&clk_hsadc_pll_mux>, <&clk_hsadc_frac>, <&clk_hsadc_ext>; rockchip,clkops-idx = <CLKOPS_RATE_HSADC>; rockchip,flags = <CLK_SET_RATE_PARENT>; clock-output-names = "clk_hsadc"; #clock-cells = <0>; }; /* reg[6]: reserved */ clk_hsadc_inv: clk_hsadc_inv { compatible = "rockchip,rk3188-inv-con"; rockchip,bits = <7 1>; clocks = <&clk_hsadc>; }; clk_hsadc_div: clk_hsadc_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <8 8>; clocks = <&clk_hsadc_pll_mux>; clock-output-names = "clk_hsadc_pll"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; }; }; clk_sel_con23: sel-con@00a0 { compatible = "rockchip,rk3188-selcon"; reg = <0x00a0 0x4>; #address-cells = <1>; #size-cells = <1>; clk_hsadc_frac: clk_hsadc_frac{ compatible = "rockchip,rk3188-frac-con"; clocks = <&clk_hsadc_pll_mux>; clock-output-names = "clk_hsadc_frac"; /* numerator denominator */ rockchip,bits = <0 32>; rockchip,clkops-idx = <CLKOPS_RATE_FRAC>; #clock-cells = <0>; }; }; clk_sel_con24: sel-con@00a4 { compatible = "rockchip,rk3188-selcon"; reg = <0x00a4 0x4>; #address-cells = <1>; #size-cells = <1>; clk_saradc: clk_saradc_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <8 8>; clocks = <&xin24m>; clock-output-names = "clk_saradc"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; }; }; clk_sel_con25: sel-con@00a8 { compatible = "rockchip,rk3188-selcon"; reg = <0x00a8 0x4>; #address-cells = <1>; #size-cells = <1>; clk_spi0: clk_spi0_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <0 7>; clocks = <&pclk_peri>; clock-output-names = "clk_spi0"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; }; /* reg[7]: reserved */ clk_spi1: clk_spi1_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <8 7>; clocks = <&pclk_peri>; clock-output-names = "clk_spi1"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; }; /* reg[15]: reserved */ }; clk_sel_con26: sel-con@00ac { compatible = "rockchip,rk3188-selcon"; reg = <0x00ac 0x4>; #address-cells = <1>; #size-cells = <1>; clk_ddr_div: clk_ddr_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <0 2>; clocks = <&clk_ddr>; clock-output-names = "clk_ddr"; rockchip,div-type = <CLK_DIVIDER_POWER_OF_TWO>; rockchip,clkops-idx = <CLKOPS_RATE_DDR>; #clock-cells = <0>; }; /* reg[7:2]: reserved */ clk_ddr: clk_ddr_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <8 1>; clocks = <&clk_dpll>, <&clk_gates1 7>; clock-output-names = "clk_ddr"; rockchip,flags = <(CLK_GET_RATE_NOCACHE | CLK_SET_RATE_NO_REPARENT)>; #clock-cells = <0>; }; /* reg[15:9]: reserved */ }; clk_sel_con27: sel-con@00b0 { compatible = "rockchip,rk3188-selcon"; reg = <0x00b0 0x4>; #address-cells = <1>; #size-cells = <1>; dclk_lcdc0: dclk_lcdc0_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <0 1>; clocks = <&clk_cpll>, <&clk_gpll>; clock-output-names = "dclk_lcdc0"; #clock-cells = <0>; }; /* reg[7:1]: reserved */ dclk_lcdc0_div: dclk_lcdc0_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <8 8>; clocks = <&dclk_lcdc0>; clock-output-names = "dclk_lcdc0"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; rockchip,clkops-idx = <CLKOPS_RATE_MUX_EVENDIV>; #clock-cells = <0>; }; }; 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 1>; clocks = <&clk_cpll>, <&clk_gpll>; clock-output-names = "dclk_lcdc1"; #clock-cells = <0>; }; /* reg[7:1]: 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>; rockchip,clkops-idx = <CLKOPS_RATE_MUX_EVENDIV>; #clock-cells = <0>; }; }; clk_sel_con29: sel-con@00b8 { compatible = "rockchip,rk3188-selcon"; reg = <0x00b8 0x4>; #address-cells = <1>; #size-cells = <1>; cif_out_pll_mux: cif_out_pll_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <0 1>; clocks = <&clk_cpll>, <&clk_gpll>; clock-output-names = "cif_out_pll"; #clock-cells = <0>; }; cif0_out_div: cif0_out_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <1 5>; clocks = <&cif_out_pll_mux>; clock-output-names = "cif_out_pll"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; rockchip,clkops-idx = <CLKOPS_RATE_MUX_DIV>; #clock-cells = <0>; }; /* reg[6]: reserved */ clk_cif0: cif0_out_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <7 1>; clocks = <&cif_out_pll_mux>, <&xin24m>; rockchip,clkops-idx = <CLKOPS_RATE_CIFOUT>; rockchip,flags = <CLK_SET_RATE_PARENT>; clock-output-names = "clk_cif0"; #clock-cells = <0>; }; /* reg[15:8]: reserved */ }; clk_sel_con30: sel-con@00bc { compatible = "rockchip,rk3188-selcon"; reg = <0x00bc 0x4>; #address-cells = <1>; #size-cells = <1>; clk_ehci1phy480m: clk_ehci1phy480m_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <0 2>; clocks = <&otgphy0_480m>, <&otgphy1_480m>, <&clk_gpll>, <&clk_cpll>; clock-output-names = "clk_ehci1phy480m"; #clock-cells = <0>; }; /* reg[7:2]: reserved */ /* inv here?????? */ /* reg[15:9]: reserved */ }; clk_sel_con31: sel-con@00c0 { compatible = "rockchip,rk3188-selcon"; reg = <0x00c0 0x4>; #address-cells = <1>; #size-cells = <1>; aclk_lcdc0_pre_div: aclk_lcdc0_pre_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <0 5>; clocks = <&aclk_lcdc0>; clock-output-names = "aclk_lcdc0"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; rockchip,clkops-idx = <CLKOPS_RATE_MUX_DIV>; #clock-cells = <0>; }; /* reg[6:5]: reserved */ aclk_lcdc0: aclk_lcdc0_pre_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <7 1>; clocks = <&clk_cpll>, <&clk_gpll>; clock-output-names = "aclk_lcdc0"; #clock-cells = <0>; #clock-init-cells = <1>; }; aclk_lcdc1_pre_div: aclk_lcdc1_pre_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <8 5>; clocks = <&aclk_lcdc1>; clock-output-names = "aclk_lcdc1"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; rockchip,clkops-idx = <CLKOPS_RATE_MUX_DIV>; #clock-cells = <0>; }; /* reg[14:13]: reserved */ aclk_lcdc1: aclk_lcdc1_pre_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <15 1>; clocks = <&clk_cpll>, <&clk_gpll>; clock-output-names = "aclk_lcdc1"; #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>; aclk_vepu_div: aclk_vepu_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <0 5>; clocks = <&clk_vepu>; clock-output-names = "clk_vepu"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; rockchip,clkops-idx = <CLKOPS_RATE_MUX_DIV>; #clock-cells = <0>; }; /* reg[6:5]: reserved */ clk_vepu: aclk_vepu_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <7 1>; clocks = <&clk_cpll>, <&clk_gpll>; clock-output-names = "clk_vepu"; #clock-cells = <0>; }; aclk_vdpu_div: aclk_vdpu_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <8 5>; clocks = <&clk_vdpu>; clock-output-names = "clk_vdpu"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; rockchip,clkops-idx = <CLKOPS_RATE_MUX_DIV>; #clock-cells = <0>; }; /* reg[14:13]: reserved */ clk_vdpu: aclk_vdpu_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <15 1>; clocks = <&clk_cpll>, <&clk_gpll>; clock-output-names = "clk_vdpu"; #clock-cells = <0>; }; }; clk_sel_con34: sel-con@00cc { compatible = "rockchip,rk3188-selcon"; reg = <0x00cc 0x4>; #address-cells = <1>; #size-cells = <1>; aclk_gpu_div: aclk_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>; rockchip,clkops-idx = <CLKOPS_RATE_MUX_DIV>; #clock-cells = <0>; }; /* reg[6:5]: reserved */ clk_gpu: aclk_gpu_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <7 1>; clocks = <&clk_cpll>, <&clk_gpll>; clock-output-names = "clk_gpu"; #clock-cells = <0>; #clock-init-cells = <1>; }; /* reg[15:8]: 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_peri>, <&clk_gpll>, <&clk_dpll>, <&aclk_cpu>, <&hclk_cpu>, <&pclk_cpu>, <&pclk_cpu>, <&aclk_core>, <&dummy>, <&clk_i2s_div>, <&clk_i2s_frac>, <&dummy>, <&dummy>, <&clk_spdif_div>, <&clk_spdif_frac>, <&dummy>; clock-output-names = "clk_core_peri", "clk_arm_gpll", "clk_dpll", "aclk_cpu", "hclk_cpu", "pclk_cpu", "g_atclk_cpu", "aclk_core", "reserved", "clk_i2s_div", "clk_i2s_frac", "reserved", "reserved", "clk_spdif_div", "clk_spdif_frac", "g_testclk"; rockchip,suspend-clkgating-setting=<0x00bf 0x00bf>; #clock-cells = <1>; }; clk_gates1: gate-clk@00d4 { compatible = "rockchip,rk3188-gate-clk"; reg = <0x00d4 0x4>; clocks = <&xin24m>, <&xin24m>, <&xin24m>, <&dummy>, <&aclk_lcdc1>, <&xin24m>, <&xin24m>, <&clk_gpll>, <&clk_uart0_div>, <&clk_uart0_frac>, <&clk_uart1_div>, <&clk_uart1_frac>, <&clk_uart2_div>, <&clk_uart2_frac>, <&clk_uart3_div>, <&clk_uart3_frac>; clock-output-names = "timer0", "timer1", "timer3", "g_jtag", "aclk_lcdc1", "g_otgphy0", "g_otgphy1", "clk_ddr_gpll", "clk_uart0_div", "clk_uart0_frac", "clk_uart1_div", "clk_uart1_frac", "clk_uart2_div", "clk_uart2_frac", "clk_uart3_div", "clk_uart3_frac"; rockchip,suspend-clkgating-setting=<0x0 0x0>; #clock-cells = <1>; }; clk_gates2: gate-clk@00d8 { compatible = "rockchip,rk3188-gate-clk"; reg = <0x00d8 0x4>; clocks = <&aclk_peri>, <&aclk_peri>, <&hclk_peri>, <&pclk_peri>, <&hclk_peri>, <&clk_mac_pll_mux>, <&clk_hsadc_pll_mux>, <&clk_hsadc_frac>, <&clk_saradc>, <&clk_spi0>, <&clk_spi1>, <&clk_sdmmc>, <&dummy>, <&clk_sdio>, <&clk_emmc>, <&dummy>; clock-output-names = "aclk_peri", "g_aclk_peri", "hclk_peri", "pclk_peri", "g_smc_src", "clk_mac_pll", "clk_hsadc_pll", "clk_hsadc_frac", "clk_saradc", "clk_spi0", "clk_spi1", "clk_sdmmc", "g_mac_lbtest", "clk_sdio", "clk_emmc", "reserved"; //rockchip,suspend-clkgating-setting=<0x1f 0x1b>; rockchip,suspend-clkgating-setting=<0x1f 0x1b>; #clock-cells = <1>; }; clk_gates3: gate-clk@00dc { compatible = "rockchip,rk3188-gate-clk"; reg = <0x00dc 0x4>; clocks = <&aclk_lcdc0>, <&dclk_lcdc0>, <&dclk_lcdc1>, <&clk_cif_in>, <&xin24m>, <&xin24m>, <&clk_ehci1phy480m>, <&clk_cif0>, <&xin24m>, <&clk_vepu>, <&clk_vepu>, <&clk_vdpu>, <&clk_vdpu>, <&dummy>, <&xin24m>, <&clk_gpu>; clock-output-names = "aclk_lcdc0", "dclk_lcdc0", "dclk_lcdc1", "g_clk_cif_in", /* * FIXME: cif_out_pll can be set to * clk_cif as virtual */ "timer2", "timer4", "clk_ehci1phy480m", "clk_cif0", "timer5", "clk_vepu", "g_h_vepu", "clk_vdpu", "g_h_vdpu", "reserved", "timer6", "clk_gpu"; rockchip,suspend-clkgating-setting=<0x0 0x0>; #clock-cells = <1>; }; clk_gates4: gate-clk@00e0 { compatible = "rockchip,rk3188-gate-clk"; reg = <0x00e0 0x4>; clocks = <&hclk_peri>, <&pclk_peri>, <&aclk_peri>, <&aclk_peri>, <&aclk_peri>, <&hclk_peri>, <&hclk_peri>, <&hclk_peri>, <&hclk_cpu>, <&hclk_cpu>, <&aclk_cpu>, <&dummy>, <&aclk_cpu>, <&dummy>, <&hclk_cpu>, <&hclk_cpu>; /* * g_ap: gate_aclk_peri_... * g_hp: gate_hclk_peri_... * g_pp: gate_pclk_peri_... */ clock-output-names = "g_hp_axi_matrix", "g_pp_axi_matrix", "g_a_cpu_peri", "g_ap_axi_matrix", "g_a_peri_niu", "g_h_usb_peri", "g_hp_ahb_arbi", "g_h_emem_peri", "g_h_cpubus", "g_h_ahb2apb", "g_a_strc_sys", "reserved", "g_a_intmem", "reserved", "g_h_imem1", "g_h_imem0"; //rockchip,suspend-clkgating-setting=<0xd75e 0xd75e>; rockchip,suspend-clkgating-setting=<0xd75e 0xd75e>; #clock-cells = <1>; }; clk_gates5: gate-clk@00e4 { compatible = "rockchip,rk3188-gate-clk"; reg = <0x00e4 0x4>; clocks = <&aclk_cpu>, <&aclk_peri>, <&pclk_cpu>, <&pclk_cpu>, <&pclk_cpu>, <&pclk_cpu>, <&hclk_cpu>, <&pclk_cpu>, <&aclk_peri>, <&hclk_peri>, <&hclk_peri>, <&hclk_peri>, <&hclk_peri>, <&hclk_peri>; clock-output-names = "g_a_dmac1", "g_a_dmac2", "g_p_efuse", "g_p_tzpc", "g_p_grf", "g_p_pmu", "g_h_rom", "g_p_ddrupctl", "g_a_smc", "g_h_nandc", "g_h_sdmmc0", "g_h_sdio", "g_h_emmc", "g_h_otg0"; rockchip,suspend-clkgating-setting=<0x80 0x80>; #clock-cells = <1>; }; clk_gates6: gate-clk@00e8 { compatible = "rockchip,rk3188-gate-clk"; reg = <0x00e8 0x4>; clocks = <&clk_gates6 13>, <&hclk_cpu>, <&hclk_cpu>, <&clk_gates9 5>, <&hclk_cpu>, <&clk_gates6 13>, <&dummy>, <&dummy>, <&clk_gates6 13>, <&hclk_cpu>, <&hclk_cpu>, <&clk_gates9 5>, <&hclk_cpu>, <&aclk_lcdc0>; clock-output-names = "g_a_lcdc0", "g_h_lcdc0", "g_h_lcdc1", "g_a_lcdc1", "g_h_cif0", "g_a_cif0", "reserved", "reserved", "g_a_ipp", "g_h_ipp", "g_h_rga", "g_a_rga", "g_h_vio_bus", "g_a_vio0"; rockchip,suspend-clkgating-setting=<0x0 0x0>; #clock-cells = <1>; }; clk_gates7: gate-clk@00ec { compatible = "rockchip,rk3188-gate-clk"; reg = <0x00ec 0x4>; clocks = <&hclk_peri>, <&hclk_cpu>, <&hclk_cpu>, <&hclk_peri>, <&hclk_peri>, <&hclk_peri>, <&hclk_peri>, <&pclk_cpu>, <&dummy>, <&pclk_cpu>, <&pclk_cpu>, <&pclk_peri>, <&pclk_peri>, <&pclk_peri>, <&pclk_peri>, <&pclk_peri>; clock-output-names = "g_h_emac", "g_h_spdif", "g_h_i2s0_2ch", "g_h_otg1", "g_h_ehci1", "g_h_hsadc", "g_h_pidf", "g_p_timer0", "reserved", "g_p_timer2", "g_p_pwm01", "g_p_pwm23", "g_p_spi0", "g_p_spi1", "g_p_saradc", "g_p_wdt"; rockchip,suspend-clkgating-setting=<0x0 0x0>; #clock-cells = <1>; }; clk_gates8: gate-clk@00f0 { compatible = "rockchip,rk3188-gate-clk"; reg = <0x00f0 0x4>; clocks = <&pclk_ahb2apb>, <&pclk_ahb2apb>, <&pclk_peri>, <&pclk_peri>, <&pclk_cpu>, <&pclk_cpu>, <&pclk_peri>, <&pclk_peri>, <&pclk_peri>, <&pclk_cpu>, <&pclk_cpu>, <&pclk_cpu>, <&pclk_peri>, <&aclk_peri>; clock-output-names = "g_p_uart0", "g_p_uart1", "g_p_uart2", "g_p_uart3", "g_p_i2c0", "g_p_i2c1", "g_p_i2c2", "g_p_i2c3", "g_p_i2c4", "g_p_gpio0", "g_p_gpio1", "g_p_gpio2", "g_p_gpio3", "g_a_gps"; rockchip,suspend-clkgating-setting=<0x200 0x200>; #clock-cells = <1>; }; clk_gates9: gate-clk@00f4 { compatible = "rockchip,rk3188-gate-clk"; reg = <0x00f4 0x4>; clocks = <&clk_core>, <&pclk_cpu>, <&clk_gates0 6>, <&clk_gates0 6>, <&clk_core>, <&aclk_lcdc1>, <&pclk_cpu>, <&clk_gpu>; clock-output-names = "g_clk_core_dbg", "g_p_dbg", "g_clk_trace", "g_atclk", "g_clk_l2c", "g_a_vio1", "g_p_ddrpubl", "g_a_gpu"; rockchip,suspend-clkgating-setting=<0x50 0x50>; #clock-cells = <1>; }; }; }; }; }; &cru SRST_LCDC1_AHB>, <&cru SRST_LCDC1_DCLK>; reset-names = "axi", "ahb", "dclk"; iommus = <&vopl_mmu>; status = "disabled"; vopl_out: port { #address-cells = <1>; #size-cells = <0>; vopl_out_hdmi: endpoint@0 { reg = <0>; remote-endpoint = <&hdmi_in_vopl>; }; vopl_out_edp: endpoint@1 { reg = <1>; remote-endpoint = <&edp_in_vopl>; }; vopl_out_dsi0: endpoint@2 { reg = <2>; remote-endpoint = <&dsi0_in_vopl>; }; vopl_out_lvds: endpoint@3 { reg = <3>; remote-endpoint = <&lvds_in_vopl>; }; vopl_out_dsi1: endpoint@4 { reg = <4>; remote-endpoint = <&dsi1_in_vopl>; }; }; }; vopl_mmu: iommu@ff940300 { compatible = "rockchip,iommu"; reg = <0x0 0xff940300 0x0 0x100>; interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "vopl_mmu"; 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 ) >; }; };