关键词:rk3036-clocks.dtsi ,linux_3.10,rockchip,dts
dts — rk3036-clocks.dtsi
/* * Copyright (C) 2014 ROCKCHIP, Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #include <dt-bindings/clock/rockchip,rk3036.h> /{ clocks { compatible = "rockchip,rk-clocks"; #address-cells = <1>; #size-cells = <1>; ranges = <0x0 0x20000000 0x1f0>; fixed_rate_cons { compatible = "rockchip,rk-fixed-rate-cons"; xin24m: xin24m { compatible = "rockchip,rk-fixed-clock"; clock-output-names = "xin24m"; clock-frequency = <24000000>; #clock-cells = <0>; }; xin12m: xin12m { compatible = "rockchip,rk-fixed-clock"; clocks = <&xin24m>; clock-output-names = "xin12m"; clock-frequency = <12000000>; #clock-cells = <0>; }; rmii_clkin: rmii_clkin { compatible = "rockchip,rk-fixed-clock"; clock-output-names = "rmii_clkin"; clock-frequency = <50000000>; #clock-cells = <0>; }; usb_480m: usb_480m { compatible = "rockchip,rk-fixed-clock"; clock-output-names = "usb_480m"; clock-frequency = <480000000>; #clock-cells = <0>; }; i2s_clkin: i2s_clkin { compatible = "rockchip,rk-fixed-clock"; clock-output-names = "i2s_clkin"; clock-frequency = <0>; #clock-cells = <0>; }; jtag_tck: jtag_tck { compatible = "rockchip,rk-fixed-clock"; clock-output-names = "jtag_tck"; clock-frequency = <0>; #clock-cells = <0>; }; dummy: dummy { compatible = "rockchip,rk-fixed-clock"; clock-output-names = "dummy"; clock-frequency = <0>; #clock-cells = <0>; }; dummy_cpll: dummy_cpll { compatible = "rockchip,rk-fixed-clock"; clock-output-names = "dummy_cpll"; clock-frequency = <0>; #clock-cells = <0>; }; }; fixed_factor_cons { compatible = "rockchip,rk-fixed-factor-cons"; /* otgphy0_12m: otgphy0_12m { compatible = "rockchip,rk-fixed-factor-clock"; clocks = <&clk_gates1 5>; clock-output-names = "otgphy0_12m"; clock-div = <1>; clock-mult = <20>; #clock-cells = <0>; }; */ hclk_vcodec: hclk_vcodec { compatible = "rockchip,rk-fixed-factor-clock"; clocks = <&aclk_vcodec_pre>; clock-output-names = "hclk_vcodec"; clock-div = <4>; clock-mult = <1>; #clock-cells = <0>; }; io_mac_mdclkout: io_mac_mdclkout { compatible = "rockchip,rk-fixed-factor-clock"; clocks = <&aclk_peri_pre>; clock-output-names = "io_mac_mdclkout"; clock-div = <2>; clock-mult = <1>; #clock-cells = <0>; }; }; clock_regs { compatible = "rockchip,rk-clock-regs"; #address-cells = <1>; #size-cells = <1>; reg = <0x0000 0x01f0>; ranges; /* PLL control regs */ pll_cons { compatible = "rockchip,rk-pll-cons"; #address-cells = <1>; #size-cells = <1>; ranges ; clk_apll: pll-clk@0000 { compatible = "rockchip,rk3188-pll-clk"; reg = <0x0000 0x10>; mode-reg = <0x0040 0>; status-reg = <0x0004 10>; clocks = <&xin24m>; clock-output-names = "clk_apll"; rockchip,pll-type = <CLK_PLL_3036_APLL>; #clock-cells = <0>; }; clk_dpll: pll-clk@0010 { compatible = "rockchip,rk3188-pll-clk"; reg = <0x0010 0x10>; mode-reg = <0x0040 4>; status-reg = <0x0014 10>; clocks = <&xin24m>; clock-output-names = "clk_dpll"; rockchip,pll-type = <CLK_PLL_3036PLUS_AUTO>; #clock-cells = <0>; }; clk_gpll: pll-clk@0030 { compatible = "rockchip,rk3188-pll-clk"; reg = <0x0030 0x10>; mode-reg = <0x0040 12>; status-reg = <0x0034 10>; clocks = <&xin24m>; clock-output-names = "clk_gpll"; rockchip,pll-type = <CLK_PLL_3036PLUS_AUTO>; #clock-cells = <0>; #clock-init-cells = <1>; }; }; /* Select control regs */ clk_sel_cons { compatible = "rockchip,rk-sel-cons"; #address-cells = <1>; #size-cells = <1>; ranges; clk_sel_con0: sel-con@0044 { compatible = "rockchip,rk3188-selcon"; reg = <0x0044 0x4>; #address-cells = <1>; #size-cells = <1>; clk_core_div: clk_core_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <0 5>; clocks = <&clk_core>; clock-output-names = "clk_core"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; rockchip,clkops-idx = <CLKOPS_RATE_CORE>; rockchip,flags = <(CLK_GET_RATE_NOCACHE | CLK_SET_RATE_NO_REPARENT)>; }; /* reg[6:5]: reserved */ clk_core: clk_core_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <7 1>; clocks = <&clk_apll>, <&clk_gates0 6>; clock-output-names = "clk_core"; #clock-cells = <0>; #clock-init-cells = <1>; }; aclk_cpu_pre_div: aclk_cpu_pre_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <8 5>; clocks = <&aclk_cpu_pre>; clock-output-names = "aclk_cpu_pre"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; rockchip,clkops-idx = <CLKOPS_RATE_MUX_DIV>; rockchip,flags = <CLK_SET_RATE_NO_REPARENT>; }; /* reg[13]: reserved */ aclk_cpu_pre: aclk_cpu_pre_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <14 2>; clocks = <&clk_apll>, <&clk_dpll>,<&clk_gpll>; clock-output-names = "aclk_cpu_pre"; #clock-cells = <0>; #clock-init-cells = <1>; }; }; clk_sel_con1: sel-con@0048 { compatible = "rockchip,rk3188-selcon"; reg = <0x0048 0x4>; #address-cells = <1>; #size-cells = <1>; pclk_dbg_div: pclk_dbg_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <0 4>; clocks = <&clk_core>; clock-output-names = "pclk_dbg"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; rockchip,clkops-idx = <CLKOPS_RATE_CORE_CHILD>; }; aclk_core_pre: aclk_core_pre_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <4 3>; clocks = <&clk_core>; clock-output-names = "aclk_core_pre"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; rockchip,clkops-idx = <CLKOPS_RATE_CORE_CHILD>; }; /* reg[7]: reserved */ hclk_cpu_pre: hclk_cpu_pre_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <8 2>; clocks = <&aclk_cpu_pre>; clock-output-names = "hclk_cpu_pre"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; #clock-init-cells = <1>; }; /* reg[11:10]: reserved */ pclk_cpu_pre: pclk_cpu_pre_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <12 3>; clocks = <&aclk_cpu_pre>; clock-output-names = "pclk_cpu_pre"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; #clock-init-cells = <1>; }; /* reg[15]: reserved */ }; clk_sel_con2: sel-con@004c { compatible = "rockchip,rk3188-selcon"; reg = <0x004c 0x4>; #address-cells = <1>; #size-cells = <1>; /* reg[3:0]: reserved */ clk_timer0: clk_timer0_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <4 1>; clocks = <&xin24m>, <&aclk_peri_pre>; clock-output-names = "clk_timer0"; #clock-cells = <0>; #clock-init-cells = <1>; }; clk_timer1: clk_timer1_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <5 1>; clocks = <&xin24m>, <&aclk_peri_pre>; clock-output-names = "clk_timer1"; #clock-cells = <0>; #clock-init-cells = <1>; }; clk_timer2: clk_timer2_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <6 1>; clocks = <&xin24m>, <&aclk_peri_pre>; clock-output-names = "clk_timer2"; #clock-cells = <0>; #clock-init-cells = <1>; }; clk_timer3: clk_timer3_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <7 1>; clocks = <&xin24m>, <&aclk_peri_pre>; clock-output-names = "clk_timer3"; #clock-cells = <0>; #clock-init-cells = <1>; }; /* reg[15:8]: reserved */ }; clk_sel_con3: sel-con@0050 { compatible = "rockchip,rk3188-selcon"; reg = <0x0050 0x4>; #address-cells = <1>; #size-cells = <1>; clk_i2s_pll_div: clk_i2s_pll_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <0 7>; clocks = <&clk_i2s_pll>; clock-output-names = "clk_i2s_pll"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; rockchip,clkops-idx = <CLKOPS_RATE_MUX_DIV>; rockchip,flags = <CLK_SET_RATE_NO_REPARENT>; }; /* reg[7]: reserved */ clk_i2s: clk_i2s_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <8 2>; clocks = <&clk_i2s_pll_div>, <&i2s_frac>, <&i2s_clkin>, <&xin12m>; clock-output-names = "clk_i2s"; #clock-cells = <0>; rockchip,clkops-idx = <CLKOPS_RATE_RK3288_I2S>; rockchip,flags = <CLK_SET_RATE_PARENT>; }; /* reg[11:10]: reserved */ clk_i2s_out: i2s_outclk_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <12 1>; clocks = <&xin12m>, <&clk_i2s>; clock-output-names = "i2s_clkout"; #clock-cells = <0>; }; /* reg[13]: reserved */ clk_i2s_pll: i2s_pll_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <14 2>; clocks = <&clk_apll>,<&clk_dpll>, <&clk_gpll>; clock-output-names = "clk_i2s_pll"; #clock-cells = <0>; #clock-init-cells = <1>; }; }; clk_sel_con5: sel-con@0058 { compatible = "rockchip,rk3188-selcon"; reg = <0x0058 0x4>; #address-cells = <1>; #size-cells = <1>; spdif_div: spdif_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <0 7>; clocks = <&clk_spdif_pll>; clock-output-names = "clk_spdif_pll"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; rockchip,clkops-idx = <CLKOPS_RATE_MUX_DIV>; rockchip,flags = <CLK_SET_RATE_NO_REPARENT>; }; /* reg[7]: reserved */ clk_spdif: spdif_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <8 2>; clocks = <&spdif_div>, <&spdif_frac>, <&xin12m>; clock-output-names = "clk_spdif"; #clock-cells = <0>; rockchip,clkops-idx = <CLKOPS_RATE_RK3288_I2S>; rockchip,flags = <CLK_SET_RATE_PARENT>; }; clk_spdif_pll: spdif_pll_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <10 2>; clocks = <&clk_apll>,<&clk_dpll>, <&clk_gpll>; clock-output-names = "clk_spdif_pll"; #clock-cells = <0>; #clock-init-cells = <1>; }; /* reg[15:12]: reserved */ }; clk_sel_con7: sel-con@0060 { compatible = "rockchip,rk3188-selcon"; reg = <0x0060 0x4>; #address-cells = <1>; #size-cells = <1>; i2s_frac: i2s_frac { compatible = "rockchip,rk3188-frac-con"; clocks = <&clk_i2s_pll>; clock-output-names = "i2s_frac"; /* numerator denominator */ rockchip,bits = <0 32>; rockchip,clkops-idx = <CLKOPS_RATE_FRAC>; #clock-cells = <0>; }; }; clk_sel_con9: sel-con@0068 { compatible = "rockchip,rk3188-selcon"; reg = <0x0068 0x4>; #address-cells = <1>; #size-cells = <1>; spdif_frac: spdif_frac { compatible = "rockchip,rk3188-frac-con"; clocks = <&spdif_div>; clock-output-names = "spdif_frac"; /* numerator denominator */ rockchip,bits = <0 32>; rockchip,clkops-idx = <CLKOPS_RATE_FRAC>; #clock-cells = <0>; }; }; clk_sel_con10: sel-con@006c { compatible = "rockchip,rk3188-selcon"; reg = <0x006c 0x4>; #address-cells = <1>; #size-cells = <1>; aclk_peri_pre_div: aclk_peri_pre_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <0 5>; clocks = <&aclk_peri_pre>; clock-output-names = "aclk_peri_pre"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; rockchip,clkops-idx = <CLKOPS_RATE_MUX_DIV>; rockchip,flags = <CLK_SET_RATE_NO_REPARENT>; }; /* reg[7:5]: reserved */ hclk_peri_pre: hclk_peri_pre_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <8 2>; clocks = <&aclk_peri_pre>; clock-output-names = "hclk_peri_pre"; rockchip,div-type = <CLK_DIVIDER_USER_DEFINE>; rockchip,div-relations = <0x0 1 0x1 2 0x2 4>; #clock-cells = <0>; #clock-init-cells = <1>; }; /* reg[11:10]: reserved */ pclk_peri_pre: pclk_peri_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <12 2>; clocks = <&aclk_peri_pre>; clock-output-names = "pclk_peri_pre"; rockchip,div-type = <CLK_DIVIDER_USER_DEFINE>; rockchip,div-relations = <0x0 1 0x1 2 0x2 4 0x3 8>; #clock-cells = <0>; #clock-init-cells = <1>; }; aclk_peri_pre: aclk_peri_pre_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <14 2>; clocks = <&clk_apll>,<&clk_dpll>, <&clk_gpll>; clock-output-names = "aclk_peri_pre"; #clock-cells = <0>; #clock-init-cells = <1>; }; }; clk_sel_con11: sel-con@0070 { compatible = "rockchip,rk3188-selcon"; reg = <0x0070 0x4>; #address-cells = <1>; #size-cells = <1>; clk_sdmmc0_div: clk_sdmmc0_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <0 6>; clocks = <&clk_sdmmc0>; clock-output-names = "clk_sdmmc0"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; rockchip,clkops-idx = <CLKOPS_RATE_MUX_EVENDIV>; }; /* reg[7]: reserved */ clk_sdio_div: clk_sdio_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <8 7>; clocks = <&clk_sdio>; clock-output-names = "clk_sdio"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; rockchip,clkops-idx = <CLKOPS_RATE_MUX_EVENDIV>; }; /* reg[15]: reserved */ }; clk_sel_con12: sel-con@0074 { compatible = "rockchip,rk3188-selcon"; reg = <0x0074 0x4>; #address-cells = <1>; #size-cells = <1>; clk_emmc_div: clk_emmc_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <0 7>; clocks = <&clk_emmc>; clock-output-names = "clk_emmc"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; rockchip,clkops-idx = <CLKOPS_RATE_MUX_EVENDIV>; }; /* reg[7]: reserved */ clk_sdmmc0: clk_sdmmc0_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <8 2>; clocks = <&clk_apll>,<&clk_dpll>, <&clk_gpll>, <&xin24m>; clock-output-names = "clk_sdmmc0"; #clock-cells = <0>; }; clk_sdio: clk_sdio_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <10 2>; clocks = <&clk_apll>,<&clk_dpll>, <&clk_gpll>, <&xin24m>; clock-output-names = "clk_sdio"; #clock-cells = <0>; }; clk_emmc: clk_emmc_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <12 2>; clocks = <&clk_apll>,<&clk_dpll>, <&clk_gpll>, <&xin24m>; clock-output-names = "clk_emmc"; #clock-cells = <0>; }; /* reg[15:14]: reserved */ }; clk_sel_con13: sel-con@0078 { compatible = "rockchip,rk3188-selcon"; reg = <0x0078 0x4>; #address-cells = <1>; #size-cells = <1>; clk_uart0_div: clk_uart0_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <0 7>; clocks = <&clk_uart_pll>; clock-output-names = "clk_uart0_div"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; }; /* reg[7]: reserved */ clk_uart0: clk_uart0_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <8 2>; clocks = <&clk_uart0_div>, <&uart0_frac>, <&xin24m>; clock-output-names = "clk_uart0"; #clock-cells = <0>; rockchip,clkops-idx = <CLKOPS_RATE_RK3288_I2S>; rockchip,flags = <CLK_SET_RATE_PARENT>; }; clk_uart_pll: clk_uart_pll_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <10 2>; clocks = <&clk_apll>,<&clk_dpll>, <&clk_gpll>, <&usb_480m>; clock-output-names = "clk_uart_pll"; #clock-cells = <0>; #clock-init-cells = <1>; }; /* reg[15:12]: reserved */ }; clk_sel_con14: sel-con@007c { compatible = "rockchip,rk3188-selcon"; reg = <0x007c 0x4>; #address-cells = <1>; #size-cells = <1>; clk_uart1_div: clk_uart1_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <0 7>; clocks = <&clk_uart_pll>; clock-output-names = "clk_uart1_div"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; }; /* reg[7]: reserved */ clk_uart1: clk_uart1_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <8 2>; clocks = <&clk_uart1_div>, <&uart1_frac>, <&xin24m>; clock-output-names = "clk_uart1"; #clock-cells = <0>; rockchip,clkops-idx = <CLKOPS_RATE_RK3288_I2S>; rockchip,flags = <CLK_SET_RATE_PARENT>; }; /* reg[15:10]: reserved */ }; clk_sel_con15: sel-con@0080 { compatible = "rockchip,rk3188-selcon"; reg = <0x0080 0x4>; #address-cells = <1>; #size-cells = <1>; clk_uart2_div: clk_uart2_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <0 7>; clocks = <&clk_uart_pll>; clock-output-names = "clk_uart2_div"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; }; /* reg[7]: reserved */ clk_uart2: clk_uart2_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <8 2>; clocks = <&clk_uart2_div>, <&uart2_frac>, <&xin24m>; clock-output-names = "clk_uart2"; #clock-cells = <0>; rockchip,clkops-idx = <CLKOPS_RATE_RK3288_I2S>; rockchip,flags = <CLK_SET_RATE_PARENT>; }; /* reg[15:10]: reserved */ }; clk_sel_con16: sel-con@0084 { compatible = "rockchip,rk3188-selcon"; reg = <0x0084 0x4>; #address-cells = <1>; #size-cells = <1>; clk_sfc: clk_sfc_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <0 2>; clocks = <&clk_apll>, <&clk_dpll>, <&clk_gpll>, <&xin24m>; clock-output-names = "clk_sfc"; #clock-cells = <0>; }; clk_sfc_div: clk_sfc_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <2 5>; clocks = <&clk_sfc>; clock-output-names = "clk_sfc"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; rockchip,clkops-idx = <CLKOPS_RATE_MUX_DIV>; }; /* reg[7]: reserved */ clk_nandc: clk_nandc_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <8 2>; clocks = <&clk_apll>, <&clk_dpll>, <&clk_gpll>; clock-output-names = "clk_nandc"; #clock-cells = <0>; }; clk_nandc_div: clk_nandc_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <10 5>; clocks = <&clk_nandc>; clock-output-names = "clk_nandc"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; rockchip,clkops-idx = <CLKOPS_RATE_MUX_DIV>; }; /* reg[31:15]: reserved */ }; clk_sel_con17: sel-con@0088 { compatible = "rockchip,rk3188-selcon"; reg = <0x0088 0x4>; #address-cells = <1>; #size-cells = <1>; uart0_frac: uart0_frac { compatible = "rockchip,rk3188-frac-con"; clocks = <&clk_uart0_div>; clock-output-names = "uart0_frac"; /* numerator denominator */ rockchip,bits = <0 32>; rockchip,clkops-idx = <CLKOPS_RATE_FRAC>; #clock-cells = <0>; }; }; clk_sel_con18: sel-con@008c { compatible = "rockchip,rk3188-selcon"; reg = <0x008c 0x4>; #address-cells = <1>; #size-cells = <1>; uart1_frac: uart1_frac { compatible = "rockchip,rk3188-frac-con"; clocks = <&clk_uart1_div>; clock-output-names = "uart1_frac"; /* numerator denominator */ rockchip,bits = <0 32>; rockchip,clkops-idx = <CLKOPS_RATE_FRAC>; #clock-cells = <0>; }; }; clk_sel_con19: sel-con@0090 { compatible = "rockchip,rk3188-selcon"; reg = <0x0090 0x4>; #address-cells = <1>; #size-cells = <1>; uart2_frac: uart2_frac { compatible = "rockchip,rk3188-frac-con"; clocks = <&clk_uart2_div>; clock-output-names = "uart2_frac"; /* numerator denominator */ rockchip,bits = <0 32>; rockchip,clkops-idx = <CLKOPS_RATE_FRAC>; #clock-cells = <0>; }; }; clk_sel_con20: sel-con@0094 { compatible = "rockchip,rk3188-selcon"; reg = <0x0094 0x4>; #address-cells = <1>; #size-cells = <1>; clk_hevc_core: clk_hevc_core_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <0 2>; clocks = <&clk_apll>, <&clk_dpll>, <&clk_gpll>; clock-output-names = "clk_hevc_core"; #clock-cells = <0>; #clock-init-cells = <1>; }; clk_hevc_core_div: clk_hevc_core_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <2 5>; clocks = <&clk_hevc_core>; clock-output-names = "clk_hevc_core"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; rockchip,clkops-idx = <CLKOPS_RATE_MUX_DIV>; rockchip,flags = <CLK_SET_RATE_NO_REPARENT>; }; /* reg[31:7]: reserved */ }; clk_sel_con21: sel-con@0098 { compatible = "rockchip,rk3188-selcon"; reg = <0x0098 0x4>; #address-cells = <1>; #size-cells = <1>; clk_mac_pll: clk_mac_pll_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <0 2>; clocks = <&clk_apll>, <&clk_dpll>, <&clk_gpll>; clock-output-names = "clk_mac_pll"; #clock-cells = <0>; #clock-init-cells = <1>; }; /* reg[2]: reserved */ clk_mac_ref: clk_mac_ref_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <3 1>; clocks = <&clk_mac_pll_div>, <&rmii_clkin>; clock-output-names = "clk_mac_ref"; #clock-cells = <0>; rockchip,clkops-idx = <CLKOPS_RATE_MAC_REF>; rockchip,flags = <CLK_SET_RATE_PARENT>; #clock-init-cells = <1>; }; clk_mac_ref_div: clk_mac_ref_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <4 5>; clocks = <&clk_mac_ref>; clock-output-names = "clk_mac"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; #clock-init-cells = <1>; }; clk_mac_pll_div: clk_mac_pll_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <9 5>; clocks = <&clk_mac_pll>; clock-output-names = "clk_mac_pll"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; rockchip,clkops-idx = <CLKOPS_RATE_MUX_DIV>; #clock-init-cells = <1>; }; /* reg[15:14]: reserved */ }; clk_sel_con25: sel-con@00a8 { compatible = "rockchip,rk3188-selcon"; reg = <0x00a8 0x4>; #address-cells = <1>; #size-cells = <1>; clk_spi0_div: clk_spi0_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <0 7>; clocks = <&clk_spi0>; clock-output-names = "clk_spi0"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; rockchip,clkops-idx = <CLKOPS_RATE_MUX_DIV>; }; /* reg[7]: reserved */ clk_spi0: clk_spi0_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <8 2>; clocks = <&clk_apll>, <&clk_dpll>,<&clk_gpll>; clock-output-names = "clk_spi0"; #clock-cells = <0>; }; /* reg[15:10]: reserved */ }; clk_sel_con26: sel-con@00ac { compatible = "rockchip,rk3188-selcon"; reg = <0x00ac 0x4>; #address-cells = <1>; #size-cells = <1>; ddr_div: ddr_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <0 2>; clocks = <&clk_ddr>; clock-output-names = "clk_ddr"; rockchip,div-type = <CLK_DIVIDER_USER_DEFINE>; rockchip,div-relations = <0x0 1 0x1 2 0x3 4>; #clock-cells = <0>; rockchip,flags = <(CLK_GET_RATE_NOCACHE | CLK_SET_RATE_NO_REPARENT)>; rockchip,clkops-idx = <CLKOPS_RATE_DDR>; }; /* reg[7:1]: reserved */ clk_ddr: ddr_clk_pll_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <8 1>; clocks = <&clk_dpll>, <&dummy>; clock-output-names = "clk_ddr"; #clock-cells = <0>; }; /* reg[15:9]: reserved */ }; clk_sel_con28: sel-con@00b4 { compatible = "rockchip,rk3188-selcon"; reg = <0x00b4 0x4>; #address-cells = <1>; #size-cells = <1>; dclk_lcdc1: dclk_lcdc1_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <0 2>; clocks = <&clk_apll>, <&clk_dpll>, <&clk_gpll>; clock-output-names = "dclk_lcdc1"; #clock-cells = <0>; #clock-init-cells = <1>; }; /* reg[7:2]: reserved */ dclk_lcdc1_div: dclk_lcdc1_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <8 8>; clocks = <&dclk_lcdc1>; clock-output-names = "dclk_lcdc1"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; rockchip,clkops-idx = <CLKOPS_RATE_MUX_DIV>; rockchip,flags = <CLK_SET_RATE_NO_REPARENT>; }; }; clk_sel_con30: sel-con@00bc { compatible = "rockchip,rk3188-selcon"; reg = <0x00bc 0x4>; #address-cells = <1>; #size-cells = <1>; clk_testout_div: clk_testout_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <0 5>; clocks = <&dummy>; clock-output-names = "clk_testout"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; #clock-init-cells = <1>; }; /* reg[7:5]: reserved */ hclk_vio_pre_div: hclk_vio_pre_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <8 5>; clocks = <&hclk_vio_pre>; clock-output-names = "hclk_vio_pre"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; rockchip,clkops-idx = <CLKOPS_RATE_MUX_DIV>; rockchip,flags = <CLK_SET_RATE_NO_REPARENT>; }; /* reg[13]: reserved */ hclk_vio_pre: hclk_vio_pre_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <14 2>; clocks = <&clk_apll>, <&clk_dpll>, <&clk_gpll>; clock-output-names = "hclk_vio_pre"; #clock-cells = <0>; #clock-init-cells = <1>; }; }; clk_sel_con31: sel-con@00c0 { compatible = "rockchip,rk3188-selcon"; reg = <0x00c0 0x4>; #address-cells = <1>; #size-cells = <1>; clk_hdmi: clk_hdmi_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <0 1>; clocks = <&dclk_lcdc1_div>, <&dummy>; clock-output-names = "clk_hdmi"; #clock-cells = <0>; }; /* reg[7:1]: reserved */ aclk_vio_pre_div: aclk_vio_pre_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <8 5>; clocks = <&aclk_vio_pre>; clock-output-names = "aclk_vio_pre"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; rockchip,clkops-idx = <CLKOPS_RATE_MUX_DIV>; rockchip,flags = <CLK_SET_RATE_NO_REPARENT>; }; /* reg[13]: reserved */ aclk_vio_pre: aclk_vio_pre_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <14 2>; clocks = <&clk_apll>, <&clk_dpll>, <&clk_gpll>; clock-output-names = "aclk_vio_pre"; #clock-cells = <0>; #clock-init-cells = <1>; }; }; clk_sel_con32: sel-con@00c4 { compatible = "rockchip,rk3188-selcon"; reg = <0x00c4 0x4>; #address-cells = <1>; #size-cells = <1>; /* reg[7:0]: reserved */ aclk_vcodec_pre_div: aclk_vcodec_pre_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <8 5>; clocks = <&aclk_vcodec_pre>; clock-output-names = "aclk_vcodec_pre"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; rockchip,clkops-idx = <CLKOPS_RATE_MUX_DIV>; rockchip,flags = <CLK_SET_RATE_NO_REPARENT>; }; /* reg[13]: reserved */ aclk_vcodec_pre: aclk_vcodec_pre_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <14 2>; clocks = <&clk_apll>, <&clk_dpll>, <&clk_gpll>; clock-output-names = "aclk_vcodec_pre"; #clock-cells = <0>; #clock-init-cells = <1>; }; }; clk_sel_con34: sel-con@00cc { compatible = "rockchip,rk3188-selcon"; reg = <0x00cc 0x4>; #address-cells = <1>; #size-cells = <1>; clk_gpu_div: clk_gpu_div { compatible = "rockchip,rk3188-div-con"; rockchip,bits = <0 5>; clocks = <&clk_gpu>; clock-output-names = "clk_gpu"; rockchip,div-type = <CLK_DIVIDER_PLUS_ONE>; #clock-cells = <0>; rockchip,clkops-idx = <CLKOPS_RATE_MUX_DIV>; rockchip,flags = <CLK_SET_RATE_PARENT_IN_ORDER>; }; /* reg[7:5]: reserved */ clk_gpu: clk_gpu_mux { compatible = "rockchip,rk3188-mux-con"; rockchip,bits = <8 2>; clocks = <&dummy>, <&dummy>, <&clk_gpll>; clock-output-names = "clk_gpu"; #clock-cells = <0>; #clock-init-cells = <1>; }; /* reg[15:10]: reserved */ }; }; /* Gate control regs */ clk_gate_cons { compatible = "rockchip,rk-gate-cons"; #address-cells = <1>; #size-cells = <1>; ranges ; clk_gates0: gate-clk@00d0{ compatible = "rockchip,rk3188-gate-clk"; reg = <0x00d0 0x4>; clocks = <&clk_core>, <&clk_gpll>, <&clk_dpll>, <&aclk_cpu_pre>, <&aclk_cpu_pre>, <&aclk_cpu_pre>, <&clk_gpll>, <&clk_core>, <&clk_gpll>, <&clk_i2s_pll>, <&i2s_frac>, <&hclk_vio_pre>, <&dummy>, <&clk_i2s_out>, <&clk_i2s>, <&dummy>; clock-output-names = "pclk_dbg", "reserved", /* do not use bit1 = "cpu_gpll" */ "reserved", "aclk_cpu_pre", "hclk_cpu_pre", "pclk_cpu_pre", "reserved", "aclk_core_pre", "reserved", "clk_i2s_pll", "i2s_frac", "hclk_vio_pre", "clk_cryto", "clk_i2s_out", "clk_i2s", "clk_testout"; rockchip,suspend-clkgating-setting=<0x19ff 0x19ff>; #clock-cells = <1>; }; clk_gates1: gate-clk@00d4{ compatible = "rockchip,rk3188-gate-clk"; reg = <0x00d4 0x4>; clocks = <&clk_timer0>, <&clk_timer1>, <&dummy>, <&jtag_tck>, <&aclk_vio_pre>, <&xin12m>, <&dummy>, <&dummy>, <&clk_uart0_div>, <&uart0_frac>, <&clk_uart1_div>, <&uart1_frac>, <&clk_uart2_div>, <&uart2_frac>, <&dummy>, <&dummy>; clock-output-names = "clk_timer0", "clk_timer1", "reserved", "clk_jatg", "aclk_vio_pre", "clk_otgphy0", "clk_otgphy1", "reserved", "clk_uart0_div", "uart0_frac", "clk_uart1_div", "uart1_frac", "clk_uart2_div", "uart2_frac", "reserved", "reserved"; rockchip,suspend-clkgating-setting=<0xc0af 0xc0af>; #clock-cells = <1>; }; clk_gates2: gate-clk@00d8 { compatible = "rockchip,rk3188-gate-clk"; reg = <0x00d8 0x4>; clocks = <&aclk_peri_pre>, <&aclk_peri_pre>, <&aclk_peri_pre>, <&aclk_peri_pre>, <&clk_timer2>, <&clk_timer3>, <&clk_mac_ref>, <&dummy>, <&dummy>, <&clk_spi0>, <&clk_spdif_pll>, <&clk_sdmmc0>, <&spdif_frac>, <&clk_sdio>, <&clk_emmc>, <&dummy>; clock-output-names = "aclk_peri", "aclk_peri_pre", "hclk_peri_pre", "pclk_peri_pre", "clk_timer2", "clk_timer3", "clk_mac", "reserved", "reserved", "clk_spi0", "clk_spdif_pll", "clk_sdmmc0", "spdif_frac", "clk_sdio", "clk_emmc", "reserved"; rockchip,suspend-clkgating-setting=<0x81bf 0x81bf>; #clock-cells = <1>; }; clk_gates3: gate-clk@00dc { compatible = "rockchip,rk3188-gate-clk"; reg = <0x00dc 0x4>; clocks = <&dummy>, <&dummy>, <&dclk_lcdc1>, <&dummy>, <&dummy>, <&hclk_peri_pre>, <&dummy>, <&dummy>, <&pclk_cpu_pre>, <&dummy>, <&dummy>, <&aclk_vcodec_pre>, <&aclk_vcodec_pre>, <&clk_gpu>, <&hclk_peri_pre>, <&dummy>; clock-output-names = "reserved", "reserved", "dclk_lcdc1", "reserved", "reserved", "g_hclk_mac", "reserved", "reserved", "g_pclk_hdmi", "reserved", "reserved", "aclk_vcodec_pre", "hclk_vcodec", "clk_gpu", "g_hclk_sfc", "reserved"; rockchip,suspend-clkgating-setting=<0xa7fb 0xa7fb>; #clock-cells = <1>; }; clk_gates4: gate-clk@00e0{ compatible = "rockchip,rk3188-gate-clk"; reg = <0x00e0 0x4>; clocks = <&hclk_peri_pre>, <&pclk_peri_pre>, <&aclk_peri_pre>, <&aclk_peri_pre>, <&dummy>, <&dummy>, <&dummy>, <&dummy>, <&dummy>, <&dummy>, <&aclk_cpu_pre>, <&dummy>, <&aclk_cpu_pre>, <&dummy>, <&dummy>, <&dummy>; clock-output-names = "g_hp_axi_matrix", "g_pp_axi_matrix", "g_aclk_cpu_peri", "g_ap_axi_matrix", "reserved", "g_hclk_mac", "reserved", "reserved", "reserved", "reserved", "g_aclk_strc_sys", "reserved", /* Not use these ddr gates */ "g_aclk_intmem", "reserved", "reserved", "reserved"; rockchip,suspend-clkgating-setting = <0xffff 0xffff>; #clock-cells = <1>; }; clk_gates5: gate-clk@00e4 { compatible = "rockchip,rk3188-gate-clk"; reg = <0x00e4 0x4>; clocks = <&dummy>, <&aclk_peri_pre>, <&pclk_peri_pre>, <&dummy>, <&pclk_cpu_pre>, <&dummy>, <&hclk_cpu_pre>, <&pclk_cpu_pre>, <&dummy>, <&hclk_peri_pre>, <&hclk_peri_pre>, <&hclk_peri_pre>, <&dummy>, <&hclk_peri_pre>, <&pclk_cpu_pre>, <&dummy>; clock-output-names = "reserved", "g_aclk_dmac2", "g_pclk_efuse", "reserved", "g_pclk_grf", "reserved", "g_hclk_rom", "g_pclk_ddrupctl", "reserved", "g_hclk_nandc", "g_hclk_sdmmc0", "g_hclk_sdio", "reserved", "g_hclk_otg0", "g_pclk_acodec", "reserved"; rockchip,suspend-clkgating-setting = <0x91fd 0x91fd>; #clock-cells = <1>; }; clk_gates6: gate-clk@00e8 { compatible = "rockchip,rk3188-gate-clk"; reg = <0x00e8 0x4>; clocks = <&dummy>, <&dummy>, <&dummy>, <&dummy>, <&dummy>, <&dummy>, <&dummy>, <&dummy>, <&dummy>, <&dummy>, <&dummy>, <&dummy>, <&hclk_vio_pre>, <&aclk_vio_pre>, <&dummy>, <&dummy>; clock-output-names = "reserved", "reserved", "reserved", "reserved", "reserved", "reserved", "reserved", "reserved", "reserved", "reserved", "reserved", "reserved", "g_hclk_vio_bus", "g_aclk_vio", "reserved", "reserved"; rockchip,suspend-clkgating-setting = <0xffff 0xffff>; #clock-cells = <1>; }; clk_gates7: gate-clk@00ec { compatible = "rockchip,rk3188-gate-clk"; reg = <0x00ec 0x4>; clocks = <&hclk_peri_pre>, <&dummy>, <&hclk_peri_pre>, <&hclk_peri_pre>, <&dummy>, <&dummy>, <&dummy>, <&pclk_peri_pre>, <&dummy>, <&dummy>, <&pclk_peri_pre>, <&dummy>, <&pclk_peri_pre>, <&dummy>, <&dummy>, <&pclk_peri_pre>; clock-output-names = "g_hclk_emmc", "reserved", "g_hclk_i2s", "g_hclk_otg1", "reserved", "reserved", "reserved", "g_pclk_timer0", "reserved", "reserved", "g_pclk_pwm", "reserved", "g_pclk_spi", "reserved", "reserved", "g_pclk_wdt"; rockchip,suspend-clkgating-setting = <0x6ff2 0x6ff2>; #clock-cells = <1>; }; clk_gates8: gate-clk@00f0 { compatible = "rockchip,rk3188-gate-clk"; reg = <0x00f0 0x4>; clocks = <&pclk_peri_pre>, <&pclk_peri_pre>, <&pclk_peri_pre>, <&dummy>, <&pclk_peri_pre>, <&pclk_peri_pre>, <&pclk_peri_pre>, <&dummy>, <&dummy>, <&pclk_peri_pre>, <&pclk_peri_pre>, <&pclk_peri_pre>, <&dummy>, <&dummy>, <&dummy>, <&dummy>; clock-output-names = "g_pclk_uart0", "g_pclk_uart1", "g_pclk_uart2", "reserved", "g_pclk_i2c0", "g_pclk_i2c1", "g_pclk_i2c2", "reserved", "reserved", "g_pclk_gpio0", "g_pclk_gpio1", "g_pclk_gpio2", "reserved", "reserved", "reserved", "reserved"; rockchip,suspend-clkgating-setting=<0xf38c 0xf38c>; #clock-cells = <1>; }; clk_gates9: gate-clk@00f4 { compatible = "rockchip,rk3188-gate-clk"; reg = <0x00f4 0x4>; clocks = <&dummy>, <&dummy>, <&dummy>, <&dummy>, <&dummy>, <&hclk_vio_pre>, <&aclk_vio_pre>, <&dummy>, <&dummy>, <&dummy>, <&dummy>, <&dummy>, <&dummy>, <&hclk_peri_pre>, <&hclk_peri_pre>, <&aclk_peri_pre>; clock-output-names = "reserved", "reserved", "reserved", "reserved", "reserved", "g_hclk_lcdc", "g_aclk_lcdc", "reserved", "reserved", "reserved", "reserved", "reserved", "reserved", "g_hclk_usb_peri", "g_hclk_pe_arbi", "g_aclk_peri_niu"; rockchip,suspend-clkgating-setting=<0xdf9f 0xdf9f>; #clock-cells = <1>; }; clk_gates10: gate-clk@00f8 { compatible = "rockchip,rk3188-gate-clk"; reg = <0x00f8 0x4>; clocks = <&xin24m>, <&xin24m>, <&xin24m>, <&dummy>, <&clk_nandc>, <&clk_sfc>, <&clk_hevc_core>, <&dummy>, <&clk_dpll>, <&dummy>, <&dummy>, <&dummy>, <&dummy>, <&dummy>, <&dummy>, <&dummy>; clock-output-names = "g_clk_pvtm_core", "g_clk_pvtm_gpu", "g_pvtm_video", "reserved", "clk_nandc", "clk_sfc", "clk_hevc_core", "reserved", "reserved", "reserved", "reserved", "reserved", "reserved", "reserved", "reserved", "reserved"; rockchip,suspend-clkgating-setting = <0x0077 0x0077>; /* pwm logic vol */ #clock-cells = <1>; }; }; }; }; }; mu"; clocks = <&cru ACLK_VOP1>, <&cru HCLK_VOP1>; clock-names = "aclk", "hclk"; power-domains = <&power RK3288_PD_VIO>; #iommu-cells = <0>; status = "disabled"; }; cif: cif@ff950000 { compatible = "rockchip,cif"; reg = <0x0 0xff950000 0x0 0x400>; interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>; clocks = <&cru ACLK_VIP>, <&cru HCLK_VIP>, <&cru PCLK_VIP_IN>, <&cru SCLK_VIP_OUT>; clock-names = "aclk_cif0", "hclk_cif0", "cif0_in", "cif0_out"; resets = <&cru SRST_VIP>; reset-names = "rst_cif"; pinctrl-names = "cif_pin_all"; pinctrl-0 = <&isp_mipi &isp_dvp_d2d9 &isp_dvp_d10d11>; rockchip,grf = <&grf>; rockchip,cru = <&cru>; power-domains = <&power RK3288_PD_VIO>; status = "disabled"; }; dsi0: dsi@ff960000 { compatible = "rockchip,rk3288-mipi-dsi", "snps,dw-mipi-dsi"; reg = <0x0 0xff960000 0x0 0x4000>; interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>; clocks = <&cru SCLK_MIPIDSI_24M>, <&cru PCLK_MIPI_DSI0>; clock-names = "ref", "pclk"; resets = <&cru SRST_MIPIDSI0>; reset-names = "apb"; power-domains = <&power RK3288_PD_VIO>; rockchip,grf = <&grf>; #address-cells = <1>; #size-cells = <0>; status = "disabled"; ports { #address-cells = <1>; #size-cells = <0>; dsi0_in: port { #address-cells = <1>; #size-cells = <0>; dsi0_in_vopb: endpoint@0 { reg = <0>; remote-endpoint = <&vopb_out_dsi0>; }; dsi0_in_vopl: endpoint@1 { reg = <1>; remote-endpoint = <&vopl_out_dsi0>; }; }; }; }; dsi1: dsi@ff964000 { compatible = "rockchip,rk3288-mipi-dsi", "snps,dw-mipi-dsi"; reg = <0x0 0xff964000 0x0 0x4000>; interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>; clocks = <&cru SCLK_MIPIDSI_24M>, <&cru PCLK_MIPI_DSI1>; clock-names = "ref", "pclk"; resets = <&cru SRST_MIPIDSI1>; reset-names = "apb"; power-domains = <&power RK3288_PD_VIO>; rockchip,grf = <&grf>; #address-cells = <1>; #size-cells = <0>; status = "disabled"; ports { #address-cells = <1>; #size-cells = <0>; dsi1_in: port { #address-cells = <1>; #size-cells = <0>; dsi1_in_vopb: endpoint@0 { reg = <0>; remote-endpoint = <&vopb_out_dsi1>; }; dsi1_in_vopl: endpoint@1 { reg = <1>; remote-endpoint = <&vopl_out_dsi1>; }; }; }; }; mipi_phy_tx1rx1: mipi-phy-tx1rx1@ff968000 { compatible = "rockchip,rk3288-mipi-dphy"; reg = <0x0 0xff968000 0x0 0x4000>; rockchip,grf = <&grf>; clocks = <&cru SCLK_MIPIDSI_24M>, <&cru PCLK_MIPI_CSI>; clock-names = "dphy-ref", "pclk"; status = "disabled"; }; edp: dp@ff970000 { compatible = "rockchip,rk3288-dp"; reg = <0x0 0xff970000 0x0 0x4000>; interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; clocks = <&cru SCLK_EDP>, <&cru PCLK_EDP_CTRL>; clock-names = "dp", "pclk"; power-domains = <&power RK3288_PD_VIO>; phys = <&edp_phy>; phy-names = "dp"; resets = <&cru SRST_EDP>; reset-names = "dp"; rockchip,grf = <&grf>; status = "disabled"; ports { #address-cells = <1>; #size-cells = <0>; edp_in: port@0 { reg = <0>; #address-cells = <1>; #size-cells = <0>; edp_in_vopb: endpoint@0 { reg = <0>; remote-endpoint = <&vopb_out_edp>; }; edp_in_vopl: endpoint@1 { reg = <1>; remote-endpoint = <&vopl_out_edp>; }; }; }; }; lvds: lvds@ff96c000 { compatible = "rockchip,rk3288-lvds"; reg = <0x0 0xff96c000 0x0 0x4000>; clocks = <&cru PCLK_LVDS_PHY>; clock-names = "pclk_lvds"; power-domains = <&power RK3288_PD_VIO>; rockchip,grf = <&grf>; status = "disabled"; ports { #address-cells = <1>; #size-cells = <0>; lvds_in: port@0 { reg = <0>; #address-cells = <1>; #size-cells = <0>; lvds_in_vopb: endpoint@0 { reg = <0>; remote-endpoint = <&vopb_out_lvds>; }; lvds_in_vopl: endpoint@1 { reg = <1>; remote-endpoint = <&vopl_out_lvds>; }; }; }; }; hdmi: hdmi@ff980000 { compatible = "rockchip,rk3288-dw-hdmi"; reg = <0x0 0xff980000 0x0 0x20000>; reg-io-width = <4>; rockchip,grf = <&grf>; interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>; clocks = <&cru PCLK_HDMI_CTRL>, <&cru SCLK_HDMI_HDCP>; clock-names = "iahb", "isfr"; pinctrl-names = "default", "sleep"; pinctrl-0 = <&hdmi_ddc>; pinctrl-1 = <&hdmi_gpio>; power-domains = <&power RK3288_PD_VIO>; status = "disabled"; ports { hdmi_in: port { #address-cells = <1>; #size-cells = <0>; hdmi_in_vopb: endpoint@0 { reg = <0>; remote-endpoint = <&vopb_out_hdmi>; }; hdmi_in_vopl: endpoint@1 { reg = <1>; remote-endpoint = <&vopl_out_hdmi>; }; }; }; }; vpu: video-codec@ff9a0000 { compatible = "rockchip,rk3288-vpu"; reg = <0x0 0xff9a0000 0x0 0x800>; interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "vepu", "vdpu"; clocks = <&cru ACLK_VCODEC>, <&cru HCLK_VCODEC>; clock-names = "aclk", "hclk"; power-domains = <&power RK3288_PD_VIDEO>; iommus = <&vpu_mmu>; assigned-clocks = <&cru ACLK_VCODEC>; assigned-clock-rates = <400000000>; status = "disabled"; }; vpu_service: vpu-service@ff9a0000 { compatible = "rockchip,vpu_service"; reg = <0x0 0xff9a0000 0x0 0x800>; interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "irq_enc", "irq_dec"; clocks = <&cru ACLK_VCODEC>, <&cru HCLK_VCODEC>; clock-names = "aclk_vcodec", "hclk_vcodec"; power-domains = <&power RK3288_PD_VIDEO>; rockchip,grf = <&grf>; resets = <&cru SRST_VCODEC_AXI>, <&cru SRST_VCODEC_AHB>; reset-names = "video_a", "video_h"; iommus = <&vpu_mmu>; iommu_enabled = <1>; status = "disabled"; /* 0 means ion, 1 means drm */ allocator = <1>; }; vpu_mmu: iommu@ff9a0800 { compatible = "rockchip,iommu"; reg = <0x0 0xff9a0800 0x0 0x100>; interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "vpu_mmu"; clocks = <&cru ACLK_VCODEC>, <&cru HCLK_VCODEC>; clock-names = "aclk", "hclk"; power-domains = <&power RK3288_PD_VIDEO>; #iommu-cells = <0>; }; hevc_service: hevc-service@ff9c0000 { compatible = "rockchip,hevc_service"; reg = <0x0 0xff9c0000 0x0 0x400>; interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "irq_dec"; clocks = <&cru ACLK_HEVC>, <&cru HCLK_HEVC>, <&cru SCLK_HEVC_CORE>, <&cru SCLK_HEVC_CABAC>; clock-names = "aclk_vcodec", "hclk_vcodec", "clk_core", "clk_cabac"; /* * The 4K hevc would also work well with 500/125/300/300, * no more err irq and reset request. */ assigned-clocks = <&cru ACLK_HEVC>, <&cru HCLK_HEVC>, <&cru SCLK_HEVC_CORE>, <&cru SCLK_HEVC_CABAC>; assigned-clock-rates = <400000000>, <100000000>, <300000000>, <300000000>; resets = <&cru SRST_HEVC>; reset-names = "video"; power-domains = <&power RK3288_PD_HEVC>; rockchip,grf = <&grf>; iommus = <&hevc_mmu>; iommu_enabled = <1>; status = "disabled"; /* 0 means ion, 1 means drm */ allocator = <1>; }; hevc_mmu: iommu@ff9c0440 { compatible = "rockchip,iommu"; reg = <0x0 0xff9c0440 0x0 0x40>, <0x0 0xff9c0480 0x0 0x40>; interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "hevc_mmu"; clocks = <&cru ACLK_HEVC>, <&cru HCLK_HEVC>, <&cru SCLK_HEVC_CORE>, <&cru SCLK_HEVC_CABAC>; clock-names = "aclk", "hclk", "clk_core", "clk_cabac"; power-domains = <&power RK3288_PD_HEVC>; #iommu-cells = <0>; }; gpu: gpu@ffa30000 { compatible = "arm,malit764", "arm,malit76x", "arm,malit7xx", "arm,mali-midgard"; reg = <0x0 0xffa30000 0x0 0x10000>; interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "JOB", "MMU", "GPU"; clocks = <&cru ACLK_GPU>; clock-names = "clk_mali"; operating-points-v2 = <&gpu_opp_table>; #cooling-cells = <2>; /* min followed by max */ power-domains = <&power RK3288_PD_GPU>; status = "disabled"; upthreshold = <75>; downdifferential = <10>; gpu_power_model: power_model { compatible = "arm,mali-simple-power-model"; static-coefficient = <411000>; dynamic-coefficient = <733>; ts = <32000 4700 (-80) 2>; thermal-zone = "gpu-thermal"; }; }; gpu_opp_table: opp-table1 { compatible = "operating-points-v2"; opp-100000000 { opp-hz = /bits/ 64 <100000000>; opp-microvolt = <950000>; }; opp-200000000 { opp-hz = /bits/ 64 <200000000>; opp-microvolt = <950000>; }; opp-300000000 { opp-hz = /bits/ 64 <300000000>; opp-microvolt = <1000000>; }; opp-400000000 { opp-hz = /bits/ 64 <400000000>; opp-microvolt = <1100000>; }; opp-500000000 { opp-hz = /bits/ 64 <500000000>; opp-microvolt = <1200000>; }; }; noc: syscon@ffac0000 { compatible = "rockchip,rk3288-noc", "syscon"; reg = <0x0 0xffac0000 0x0 0x2000>; }; nocp_core: nocp-core@ffac0400 { compatible = "rockchip,rk3288-nocp"; reg = <0x0 0xffac0400 0x0 0x400>; }; nocp_gpu: nocp-gpu@ffac0800 { compatible = "rockchip,rk3288-nocp"; reg = <0x0 0xffac0800 0x0 0x400>; }; nocp_peri: nocp-peri@ffac0c00 { compatible = "rockchip,rk3288-nocp"; reg = <0x0 0xffac0c00 0x0 0x400>; }; nocp_vpu: nocp-vpu@ffac1000 { compatible = "rockchip,rk3288-nocp"; reg = <0x0 0xffac1000 0x0 0x400>; }; nocp_vio0: nocp-vio0@ffac1400 { compatible = "rockchip,rk3288-nocp"; reg = <0x0 0xffac1400 0x0 0x400>; }; nocp_vio1: nocp-vio1@ffac1800 { compatible = "rockchip,rk3288-nocp"; reg = <0x0 0xffac1800 0x0 0x400>; }; nocp_vio2: nocp-vio2@ffac1c00 { compatible = "rockchip,rk3288-nocp"; reg = <0x0 0xffac1c00 0x0 0x400>; }; efuse: efuse@ffb40000 { compatible = "rockchip,rockchip-efuse"; reg = <0x0 0xffb40000 0x0 0x20>; #address-cells = <1>; #size-cells = <1>; clocks = <&cru PCLK_EFUSE256>; clock-names = "pclk_efuse"; special_function: special-function@5 { reg = <0x5 0x1>; bits = <4 4>; }; process_version: process-version@6 { reg = <0x6 0x1>; bits = <0 4>; }; efuse_id: id@7 { reg = <0x7 0x10>; }; cpu_leakage: cpu-leakage@17 { reg = <0x17 0x1>; }; performance_w: performance@1c { reg = <0x1c 0x1>; bits = <4 3>; }; performance: performance@1d { reg = <0x1d 0x1>; bits = <4 3>; }; }; gic: interrupt-controller@ffc01000 { compatible = "arm,gic-400"; interrupt-controller; #interrupt-cells = <3>; #address-cells = <0>; reg = <0x0 0xffc01000 0x0 0x1000>, <0x0 0xffc02000 0x0 0x2000>, <0x0 0xffc04000 0x0 0x2000>, <0x0 0xffc06000 0x0 0x2000>; interrupts = <GIC_PPI 9 0xf04>; }; pinctrl: pinctrl { compatible = "rockchip,rk3288-pinctrl"; rockchip,grf = <&grf>; rockchip,pmu = <&pmu>; #address-cells = <2>; #size-cells = <2>; ranges; gpio0: gpio0@ff750000 { compatible = "rockchip,gpio-bank"; reg = <0x0 0xff750000 0x0 0x100>; interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>; clocks = <&cru PCLK_GPIO0>; gpio-controller; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; }; gpio1: gpio1@ff780000 { compatible = "rockchip,gpio-bank"; reg = <0x0 0xff780000 0x0 0x100>; interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>; clocks = <&cru PCLK_GPIO1>; gpio-controller; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; }; gpio2: gpio2@ff790000 { compatible = "rockchip,gpio-bank"; reg = <0x0 0xff790000 0x0 0x100>; interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>; clocks = <&cru PCLK_GPIO2>; gpio-controller; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; }; gpio3: gpio3@ff7a0000 { compatible = "rockchip,gpio-bank"; reg = <0x0 0xff7a0000 0x0 0x100>; interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>; clocks = <&cru PCLK_GPIO3>; gpio-controller; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; }; gpio4: gpio4@ff7b0000 { compatible = "rockchip,gpio-bank"; reg = <0x0 0xff7b0000 0x0 0x100>; interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>; clocks = <&cru PCLK_GPIO4>; gpio-controller; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; }; gpio5: gpio5@ff7c0000 { compatible = "rockchip,gpio-bank"; reg = <0x0 0xff7c0000 0x0 0x100>; interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>; clocks = <&cru PCLK_GPIO5>; gpio-controller; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; }; gpio6: gpio6@ff7d0000 { compatible = "rockchip,gpio-bank"; reg = <0x0 0xff7d0000 0x0 0x100>; interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>; clocks = <&cru PCLK_GPIO6>; gpio-controller; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; }; gpio7: gpio7@ff7e0000 { compatible = "rockchip,gpio-bank"; reg = <0x0 0xff7e0000 0x0 0x100>; interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>; clocks = <&cru PCLK_GPIO7>; gpio-controller; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; }; gpio8: gpio8@ff7f0000 { compatible = "rockchip,gpio-bank"; reg = <0x0 0xff7f0000 0x0 0x100>; interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>; clocks = <&cru PCLK_GPIO8>; gpio-controller; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; }; hdmi { hdmi_gpio: hdmi-gpio { rockchip,pins = <7 19 RK_FUNC_GPIO &pcfg_pull_none>, <7 20 RK_FUNC_GPIO &pcfg_pull_none>; }; hdmi_ddc: hdmi-ddc { rockchip,pins = <7 19 RK_FUNC_2 &pcfg_pull_none>, <7 20 RK_FUNC_2 &pcfg_pull_none>; }; }; pcfg_pull_up: pcfg-pull-up { bias-pull-up; }; pcfg_pull_down: pcfg-pull-down { bias-pull-down; }; pcfg_pull_none: pcfg-pull-none { bias-disable; }; pcfg_pull_none_12ma: pcfg-pull-none-12ma { bias-disable; drive-strength = <12>; }; sleep { global_pwroff: global-pwroff { rockchip,pins = <0 0 RK_FUNC_1 &pcfg_pull_none>; }; ddrio_pwroff: ddrio-pwroff { rockchip,pins = <0 1 RK_FUNC_1 &pcfg_pull_none>; }; ddr0_retention: ddr0-retention { rockchip,pins = <0 2 RK_FUNC_1 &pcfg_pull_up>; }; ddr1_retention: ddr1-retention { rockchip,pins = <0 3 RK_FUNC_1 &pcfg_pull_up>; }; }; edp { edp_hpd: edp-hpd { rockchip,pins = <7 11 RK_FUNC_2 &pcfg_pull_down>; }; }; i2c0 { i2c0_xfer: i2c0-xfer { rockchip,pins = <0 15 RK_FUNC_1 &pcfg_pull_none>, <0 16 RK_FUNC_1 &pcfg_pull_none>; }; }; i2c1 { i2c1_xfer: i2c1-xfer { rockchip,pins = <8 4 RK_FUNC_1 &pcfg_pull_none>, <8 5 RK_FUNC_1 &pcfg_pull_none>; }; }; i2c2 { i2c2_xfer: i2c2-xfer { rockchip,pins = <6 9 RK_FUNC_1 &pcfg_pull_none>, <6 10 RK_FUNC_1 &pcfg_pull_none>; }; }; i2c3 { i2c3_xfer: i2c3-xfer { rockchip,pins = <2 16 RK_FUNC_1 &pcfg_pull_none>, <2 17 RK_FUNC_1 &pcfg_pull_none>; }; }; i2c4 { i2c4_xfer: i2c4-xfer { rockchip,pins = <7 17 RK_FUNC_1 &pcfg_pull_none>, <7 18 RK_FUNC_1 &pcfg_pull_none>; }; }; i2c5 { i2c5_xfer: i2c5-xfer { rockchip,pins = <7 19 RK_FUNC_1 &pcfg_pull_none>, <7 20 RK_FUNC_1 &pcfg_pull_none>; }; }; i2s0 { i2s0_bus: i2s0-bus { rockchip,pins = <6 0 RK_FUNC_1 &pcfg_pull_none>, <6 1 RK_FUNC_1 &pcfg_pull_none>, <6 2 RK_FUNC_1 &pcfg_pull_none>, <6 3 RK_FUNC_1 &pcfg_pull_none>, <6 4 RK_FUNC_1 &pcfg_pull_none>; }; i2s0_mclk: i2s0-mclk { rockchip,pins = <6 8 RK_FUNC_1 &pcfg_pull_none>; }; }; lcdc { lcdc_ctl: lcdc-ctl { rockchip,pins = <1 24 RK_FUNC_1 &pcfg_pull_none>, <1 25 RK_FUNC_1 &pcfg_pull_none>, <1 26 RK_FUNC_1 &pcfg_pull_none>, <1 27 RK_FUNC_1 &pcfg_pull_none>; }; }; sdmmc { sdmmc_clk: sdmmc-clk { rockchip,pins = <6 20 RK_FUNC_1 &pcfg_pull_none>; }; sdmmc_cmd: sdmmc-cmd { rockchip,pins = <6 21 RK_FUNC_1 &pcfg_pull_up>; }; sdmmc_cd: sdmmc-cd { rockchip,pins = <6 22 RK_FUNC_1 &pcfg_pull_up>; }; sdmmc_bus1: sdmmc-bus1 { rockchip,pins = <6 16 RK_FUNC_1 &pcfg_pull_up>; }; sdmmc_bus4: sdmmc-bus4 { rockchip,pins = <6 16 RK_FUNC_1 &pcfg_pull_up>, <6 17 RK_FUNC_1 &pcfg_pull_up>, <6 18 RK_FUNC_1 &pcfg_pull_up>, <6 19 RK_FUNC_1 &pcfg_pull_up>; }; }; sdio0 { sdio0_bus1: sdio0-bus1 { rockchip,pins = <4 20 RK_FUNC_1 &pcfg_pull_up>; }; sdio0_bus4: sdio0-bus4 { rockchip,pins = <4 20 RK_FUNC_1 &pcfg_pull_up>, <4 21 RK_FUNC_1 &pcfg_pull_up>, <4 22 RK_FUNC_1 &pcfg_pull_up>, <4 23 RK_FUNC_1 &pcfg_pull_up>; }; sdio0_cmd: sdio0-cmd { rockchip,pins = <4 24 RK_FUNC_1 &pcfg_pull_up>; }; sdio0_clk: sdio0-clk { rockchip,pins = <4 25 RK_FUNC_1 &pcfg_pull_none>; }; sdio0_cd: sdio0-cd { rockchip,pins = <4 26 RK_FUNC_1 &pcfg_pull_up>; }; sdio0_wp: sdio0-wp { rockchip,pins = <4 27 RK_FUNC_1 &pcfg_pull_up>; }; sdio0_pwr: sdio0-pwr { rockchip,pins = <4 28 RK_FUNC_1 &pcfg_pull_up>; }; sdio0_bkpwr: sdio0-bkpwr { rockchip,pins = <4 29 RK_FUNC_1 &pcfg_pull_up>; }; sdio0_int: sdio0-int { rockchip,pins = <4 30 RK_FUNC_1 &pcfg_pull_up>; }; }; sdio1 { sdio1_bus1: sdio1-bus1 { rockchip,pins = <3 24 4 &pcfg_pull_up>; }; sdio1_bus4: sdio1-bus4 { rockchip,pins = <3 24 4 &pcfg_pull_up>, <3 25 4 &pcfg_pull_up>, <3 26 4 &pcfg_pull_up>, <3 27 4 &pcfg_pull_up>; }; sdio1_cd: sdio1-cd { rockchip,pins = <3 28 4 &pcfg_pull_up>; }; sdio1_wp: sdio1-wp { rockchip,pins = <3 29 4 &pcfg_pull_up>; }; sdio1_bkpwr: sdio1-bkpwr { rockchip,pins = <3 30 4 &pcfg_pull_up>; }; sdio1_int: sdio1-int { rockchip,pins = <3 31 4 &pcfg_pull_up>; }; sdio1_cmd: sdio1-cmd { rockchip,pins = <4 6 4 &pcfg_pull_up>; }; sdio1_clk: sdio1-clk { rockchip,pins = <4 7 4 &pcfg_pull_none>; }; sdio1_pwr: sdio1-pwr { rockchip,pins = <4 9 4 &pcfg_pull_up>; }; }; emmc { emmc_clk: emmc-clk { rockchip,pins = <3 18 RK_FUNC_2 &pcfg_pull_none>; }; emmc_cmd: emmc-cmd { rockchip,pins = <3 16 RK_FUNC_2 &pcfg_pull_up>; }; emmc_pwr: emmc-pwr { rockchip,pins = <3 9 RK_FUNC_2 &pcfg_pull_up>; }; emmc_bus1: emmc-bus1 { rockchip,pins = <3 0 RK_FUNC_2 &pcfg_pull_up>; }; emmc_bus4: emmc-bus4 { rockchip,pins = <3 0 RK_FUNC_2 &pcfg_pull_up>, <3 1 RK_FUNC_2 &pcfg_pull_up>, <3 2 RK_FUNC_2 &pcfg_pull_up>, <3 3 RK_FUNC_2 &pcfg_pull_up>; }; emmc_bus8: emmc-bus8 { rockchip,pins = <3 0 RK_FUNC_2 &pcfg_pull_up>, <3 1 RK_FUNC_2 &pcfg_pull_up>, <3 2 RK_FUNC_2 &pcfg_pull_up>, <3 3 RK_FUNC_2 &pcfg_pull_up>, <3 4 RK_FUNC_2 &pcfg_pull_up>, <3 5 RK_FUNC_2 &pcfg_pull_up>, <3 6 RK_FUNC_2 &pcfg_pull_up>, <3 7 RK_FUNC_2 &pcfg_pull_up>; }; }; spi0 { spi0_clk: spi0-clk { rockchip,pins = <5 12 RK_FUNC_1 &pcfg_pull_up>; }; spi0_cs0: spi0-cs0 { rockchip,pins = <5 13 RK_FUNC_1 &pcfg_pull_up>; }; spi0_tx: spi0-tx { rockchip,pins = <5 14 RK_FUNC_1 &pcfg_pull_up>; }; spi0_rx: spi0-rx { rockchip,pins = <5 15 RK_FUNC_1 &pcfg_pull_up>; }; spi0_cs1: spi0-cs1 { rockchip,pins = <5 16 RK_FUNC_1 &pcfg_pull_up>; }; }; spi1 { spi1_clk: spi1-clk { rockchip,pins = <7 12 RK_FUNC_2 &pcfg_pull_up>; }; spi1_cs0: spi1-cs0 { rockchip,pins = <7 13 RK_FUNC_2 &pcfg_pull_up>; }; spi1_rx: spi1-rx { rockchip,pins = <7 14 RK_FUNC_2 &pcfg_pull_up>; }; spi1_tx: spi1-tx { rockchip,pins = <7 15 RK_FUNC_2 &pcfg_pull_up>; }; }; spi2 { spi2_cs1: spi2-cs1 { rockchip,pins = <8 3 RK_FUNC_1 &pcfg_pull_up>; }; spi2_clk: spi2-clk { rockchip,pins = <8 6 RK_FUNC_1 &pcfg_pull_up>; }; spi2_cs0: spi2-cs0 { rockchip,pins = <8 7 RK_FUNC_1 &pcfg_pull_up>; }; spi2_rx: spi2-rx { rockchip,pins = <8 8 RK_FUNC_1 &pcfg_pull_up>; }; spi2_tx: spi2-tx { rockchip,pins = <8 9 RK_FUNC_1 &pcfg_pull_up>; }; }; uart0 { uart0_xfer: uart0-xfer { rockchip,pins = <4 16 RK_FUNC_1 &pcfg_pull_up>, <4 17 RK_FUNC_1 &pcfg_pull_none>; }; uart0_cts: uart0-cts { rockchip,pins = <4 18 RK_FUNC_1 &pcfg_pull_up>; }; uart0_rts: uart0-rts { rockchip,pins = <4 19 RK_FUNC_1 &pcfg_pull_none>; }; }; uart1 { uart1_xfer: uart1-xfer { rockchip,pins = <5 8 RK_FUNC_1 &pcfg_pull_up>, <5 9 RK_FUNC_1 &pcfg_pull_none>; }; uart1_cts: uart1-cts { rockchip,pins = <5 10 RK_FUNC_1 &pcfg_pull_up>; }; uart1_rts: uart1-rts { rockchip,pins = <5 11 RK_FUNC_1 &pcfg_pull_none>; }; }; uart2 { uart2_xfer: uart2-xfer { rockchip,pins = <7 22 RK_FUNC_1 &pcfg_pull_up>, <7 23 RK_FUNC_1 &pcfg_pull_none>; }; /* no rts / cts for uart2 */ }; uart3 { uart3_xfer: uart3-xfer { rockchip,pins = <7 7 RK_FUNC_1 &pcfg_pull_up>, <7 8 RK_FUNC_1 &pcfg_pull_none>; }; uart3_cts: uart3-cts { rockchip,pins = <7 9 RK_FUNC_1 &pcfg_pull_up>; }; uart3_rts: uart3-rts { rockchip,pins = <7 10 RK_FUNC_1 &pcfg_pull_none>; }; }; uart4 { uart4_xfer: uart4-xfer { rockchip,pins = <5 15 3 &pcfg_pull_up>, <5 14 3 &pcfg_pull_none>; }; uart4_cts: uart4-cts { rockchip,pins = <5 12 3 &pcfg_pull_up>; }; uart4_rts: uart4-rts { rockchip,pins = <5 13 3 &pcfg_pull_none>; }; }; tsadc { otp_gpio: otp-gpio { rockchip,pins = <0 10 RK_FUNC_GPIO &pcfg_pull_none>; }; otp_out: otp-out { rockchip,pins = <0 10 RK_FUNC_1 &pcfg_pull_none>; }; }; pwm0 { pwm0_pin: pwm0-pin { rockchip,pins = <7 0 RK_FUNC_1 &pcfg_pull_none>; }; pwm0_pin_pull_down: pwm0-pin-pull-down { rockchip,pins = <7 0 RK_FUNC_1 &pcfg_pull_down>; }; }; pwm1 { pwm1_pin: pwm1-pin { rockchip,pins = <7 1 RK_FUNC_1 &pcfg_pull_none>; }; pwm1_pin_pull_down: pwm1-pin-pull-down { rockchip,pins = <7 1 RK_FUNC_1 &pcfg_pull_down>; }; }; pwm2 { pwm2_pin: pwm2-pin { rockchip,pins = <7 22 3 &pcfg_pull_none>; }; pwm2_pin_pull_down: pwm2-pin-pull-down { rockchip,pins = <7 22 3 &pcfg_pull_down>; }; }; pwm3 { pwm3_pin: pwm3-pin { rockchip,pins = <7 23 3 &pcfg_pull_none>; }; pwm3_pin_pull_down: pwm3-pin-pull-down { rockchip,pins = <7 23 3 &pcfg_pull_down>; }; }; gmac { rgmii_pins: rgmii-pins { rockchip,pins = <3 30 3 &pcfg_pull_none>, <3 31 3 &pcfg_pull_none>, <3 26 3 &pcfg_pull_none>, <3 27 3 &pcfg_pull_none>, <3 28 3 &pcfg_pull_none_12ma>, <3 29 3 &pcfg_pull_none_12ma>, <3 24 3 &pcfg_pull_none_12ma>, <3 25 3 &pcfg_pull_none_12ma>, <4 0 3 &pcfg_pull_none>, <4 5 3 &pcfg_pull_none>, <4 6 3 &pcfg_pull_none>, <4 9 3 &pcfg_pull_none_12ma>, <4 4 3 &pcfg_pull_none_12ma>, <4 1 3 &pcfg_pull_none>, <4 3 3 &pcfg_pull_none>; }; rmii_pins: rmii-pins { rockchip,pins = <3 30 3 &pcfg_pull_none>, <3 31 3 &pcfg_pull_none>, <3 28 3 &pcfg_pull_none>, <3 29 3 &pcfg_pull_none>, <4 0 3 &pcfg_pull_none>, <4 5 3 &pcfg_pull_none>, <4 4 3 &pcfg_pull_none>, <4 1 3 &pcfg_pull_none>, <4 2 3 &pcfg_pull_none>, <4 3 3 &pcfg_pull_none>; }; }; spdif { spdif_tx: spdif-tx { rockchip,pins = <RK_GPIO6 11 RK_FUNC_1 &pcfg_pull_none>; }; }; cif { cif_dvp_d2d9: cif-dvp-d2d9 { rockchip,pins = <2 0 RK_FUNC_1 &pcfg_pull_none>, <2 1 RK_FUNC_1 &pcfg_pull_none>, <2 2 RK_FUNC_1 &pcfg_pull_none>, <2 3 RK_FUNC_1 &pcfg_pull_none>, <2 4 RK_FUNC_1 &pcfg_pull_none>, <2 5 RK_FUNC_1 &pcfg_pull_none>, <2 6 RK_FUNC_1 &pcfg_pull_none>, <2 7 RK_FUNC_1 &pcfg_pull_none>, <2 8 RK_FUNC_1 &pcfg_pull_none>, <2 9 RK_FUNC_1 &pcfg_pull_none>, <2 11 RK_FUNC_1 &pcfg_pull_none>; }; }; isp_pin { isp_mipi: isp-mipi { rockchip,pins = /* cif_clkout */ <2 11 RK_FUNC_1 &pcfg_pull_none>; }; isp_dvp_d2d9: isp-d2d9 { rockchip,pins = /* cif_data2 ... cif_data9 */ <2 0 RK_FUNC_1 &pcfg_pull_none>, <2 1 RK_FUNC_1 &pcfg_pull_none>, <2 2 RK_FUNC_1 &pcfg_pull_none>, <2 3 RK_FUNC_1 &pcfg_pull_none>, <2 4 RK_FUNC_1 &pcfg_pull_none>, <2 5 RK_FUNC_1 &pcfg_pull_none>, <2 6 RK_FUNC_1 &pcfg_pull_none>, <2 7 RK_FUNC_1 &pcfg_pull_none>, /* cif_sync, cif_href */ <2 8 RK_FUNC_1 &pcfg_pull_none>, <2 9 RK_FUNC_1 &pcfg_pull_none>, /* cif_clkin, cif_clkout */ <2 10 RK_FUNC_1 &pcfg_pull_none>, <2 11 RK_FUNC_1 &pcfg_pull_none>; }; isp_dvp_d0d1: isp-d0d1 { rockchip,pins = /* cif_data0, cif_data1 */ <2 12 RK_FUNC_1 &pcfg_pull_none>, <2 13 RK_FUNC_1 &pcfg_pull_none>; }; isp_dvp_d10d11: isp-d10d11 { rockchip,pins = /* cif_data10, cif_data11 */ <2 14 RK_FUNC_1 &pcfg_pull_none>, <2 15 RK_FUNC_1 &pcfg_pull_none>; }; isp_dvp_d0d7: isp-d0d7 { rockchip,pins = /* cif_data0 ... cif_data7 */ <2 12 RK_FUNC_1 &pcfg_pull_none>, <2 13 RK_FUNC_1 &pcfg_pull_none>, <2 0 RK_FUNC_1 &pcfg_pull_none>, <2 1 RK_FUNC_1 &pcfg_pull_none>, <2 2 RK_FUNC_1 &pcfg_pull_none>, <2 3 RK_FUNC_1 &pcfg_pull_none>, <2 4 RK_FUNC_1 &pcfg_pull_none>, <2 5 RK_FUNC_1 &pcfg_pull_none>; }; isp_shutter: isp-shutter { rockchip,pins = /* SHUTTEREN, SHUTTERTRIG */ <7 12 RK_FUNC_2 &pcfg_pull_none>, <7 15 RK_FUNC_2 &pcfg_pull_none>; }; isp_flash_trigger: isp-flash-trigger { rockchip,pins = /* ISP_FLASHTRIGOU */ <7 13 RK_FUNC_2 &pcfg_pull_none>; }; isp_prelight: isp-prelight { rockchip,pins = /* ISP_PRELIGHTTRIG */ <7 14 RK_FUNC_2 &pcfg_pull_none>; }; isp_flash_trigger_as_gpio: isp-flash-trigger-as-gpio { rockchip,pins = /* ISP_FLASHTRIGOU */ <7 13 RK_FUNC_2 &pcfg_pull_none>; }; }; }; rockchip_suspend: rockchip-suspend { compatible = "rockchip,pm-rk3288"; status = "disabled"; rockchip,sleep-mode-config = < (0 |RKPM_CTR_PWR_DMNS |RKPM_CTR_GTCLKS |RKPM_CTR_PLLS |RKPM_CTR_ARMOFF_LPMD |RKPM_CTR_SYSCLK_OSC_DIS ) >; rockchip,wakeup-config = < (0 | RKPM_GPIO_WKUP_EN ) >; rockchip,pwm-regulator-config = < (0 | PWM2_REGULATOR_EN ) >; }; };