blob: 789a6f60c47d4604d8226b19786a1ef853d725a1 [file] [log] [blame]
/*
* Hisilicon Ltd. Hi3620 SoC
*
* Copyright (C) 2012-2013 Linaro Ltd.
* Author: Haojian Zhuang <haojian.zhuang@linaro.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* publishhed by the Free Software Foundation.
*/
/include/ "skeleton.dtsi"
/ {
aliases {
serial0 = &uart0;
serial1 = &uart1;
mshc0 = &dwmmc_0;
mshc1 = &dwmmc_1;
mshc2 = &dwmmc_2;
mshc3 = &dwmmc_3;
};
osc32k: osc@0 {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <32768>;
clock-output-names = "osc32khz";
};
osc26m: osc@1 {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <26000000>;
clock-output-names = "osc26mhz";
};
pclk: clk@0 {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <26000000>;
clock-output-names = "apb_pclk";
};
pll_arm0: clk@1 {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <1600000000>;
clock-output-names = "armpll0";
};
pll_arm1: clk@2 {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <1600000000>;
clock-output-names = "armpll1";
};
pll_peri: clk@3 {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <1440000000>;
clock-output-names = "armpll2";
};
pll_usb: clk@4 {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <1440000000>;
clock-output-names = "armpll3";
};
pll_hdmi: clk@5 {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <1188000000>;
clock-output-names = "armpll4";
};
pll_gpu: clk@6 {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <1300000000>;
clock-output-names = "armpll5";
};
amba {
#address-cells = <1>;
#size-cells = <1>;
compatible = "arm,amba-bus";
interrupt-parent = <&intc>;
ranges;
pmctrl: pmctrl@fca08000 {
compatible = "hisilicon,pmctrl";
reg = <0xfca08000 0x1000>;
};
pctrl: pctrl@fca09000 {
compatible = "hisilicon,pctrl";
reg = <0xfca09000 0x1000>;
};
secram: secram@f8000000 {
compatible = "hisilicon,secram";
reg = <0xf8000000 0x14000>;
};
ddrcfg: ddrcfg@fcd00000 {
compatible = "hisilicon,ddrcfg";
reg = <0xfcd00000 0x2000>;
};
sctrl: sctrl@fc802000 {
compatible = "hisilicon,sctrl";
reg = <0xfc802000 0x1000>;
smp_reg = <0x31c>;
resume_reg = <0x308>;
reboot_reg = <0x4>;
refclk_uart0: refclk@0 {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
clocks = <&osc26m &pclk>;
hiword;
clock-output-names = "rclk_uart0";
/* reg_offset, enable_bits */
hisilicon,clkmux-reg = <0x100 0x80>;
hisilicon,clkmux-table = <0 1>;
};
refclk_uart1: refclk@1 {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
clocks = <&osc26m &pclk>;
hiword;
clock-output-names = "rclk_uart1";
hisilicon,clkmux-reg = <0x100 0x100>;
hisilicon,clkmux-table = <0 1>;
};
refclk_uart2: refclk@2 {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
clocks = <&osc26m &pclk>;
hiword;
clock-output-names = "rclk_uart2";
hisilicon,clkmux-reg = <0x100 0x200>;
hisilicon,clkmux-table = <0 1>;
};
refclk_uart3: refclk@3 {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
clocks = <&osc26m &pclk>;
hiword;
clock-output-names = "rclk_uart3";
hisilicon,clkmux-reg = <0x100 0x400>;
hisilicon,clkmux-table = <0 1>;
};
refclk_uart4: refclk@4 {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
clocks = <&osc26m &pclk>;
hiword;
clock-output-names = "rclk_uart4";
hisilicon,clkmux-reg = <0x100 0x800>;
hisilicon,clkmux-table = <0 1>;
};
refclk_hsic: hsic {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
clocks = <&pll_usb &pll_peri>;
hiword;
clock-output-names = "rclk_hsic";
hisilicon,clkmux-reg = <0x130 0x4>;
hisilicon,clkmux-table = <0 1>;
};
clk_osc480m: clk_osc480m {
compatible = "hisilicon,hi3620-clk-div";
#clock-cells = <0>;
clocks = <&refclk_hsic>;
clock-output-names = "clk_osc480m";
hisilicon,clkdiv-table = <4 1>;
/* divider register offset, mask */
hisilicon,clkdiv = <0x130 0xf>;
};
refclk_cfgaxi: refclk@5 {
compatible = "hisilicon,clk-fixed-factor";
#clock-cells = <0>;
clocks = <&pll_peri>;
clock-output-names = "rclk_cfgaxi";
/*mult, div*/
hisilicon,fixed-factor = <1 30>;
};
refclk_spi0: refclk@6 {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
clocks = <&osc26m &refclk_cfgaxi>;
hiword;
clock-output-names = "rclk_spi0";
hisilicon,clkmux-reg = <0x100 0x1000>;
hisilicon,clkmux-table = <0 1>;
};
refclk_spi1: refclk@7 {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
clocks = <&osc26m &refclk_cfgaxi>;
hiword;
clock-output-names = "rclk_spi1";
hisilicon,clkmux-reg = <0x100 0x2000>;
hisilicon,clkmux-table = <0 1>;
};
refclk_spi2: refclk@8 {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
clocks = <&osc26m &refclk_cfgaxi>;
hiword;
clock-output-names = "rclk_spi2";
hisilicon,clkmux-reg = <0x100 0x4000>;
hisilicon,clkmux-table = <0 1>;
};
refclk_tcxo: refclk@11 {
compatible = "hisilicon,clk-fixed-factor";
#clock-cells = <0>;
clocks = <&osc26m>;
clock-output-names = "rclk_tcxo";
hisilicon,fixed-factor = <1 4>;
};
timer0_mux: timer0_mux {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
clocks = <&osc32k &timerclk01>;
clock-output-names = "timer0_mux";
hisilicon,clkmux-reg = <0 0x18000>;
hisilicon,clkmux-table = <0 1>;
};
timer1_mux: timer1_mux {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
clocks = <&osc32k &timerclk01>;
clock-output-names = "timer1_mux";
hisilicon,clkmux-reg = <0 0x60000>;
hisilicon,clkmux-table = <0 1>;
};
timer2_mux: timer2_mux {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
clocks = <&osc32k &timerclk23>;
clock-output-names = "timer2_mux";
hisilicon,clkmux-reg = <0 0x180000>;
hisilicon,clkmux-table = <0 1>;
};
timer3_mux: timer3_mux {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
clocks = <&osc32k &timerclk23>;
clock-output-names = "timer3_mux";
hisilicon,clkmux-reg = <0 0x600000>;
hisilicon,clkmux-table = <0 1>;
};
timer4_mux: timer4_mux {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
clocks = <&osc32k &timerclk45>;
clock-output-names = "timer4_mux";
hisilicon,clkmux-reg = <0x18 0x3>;
hisilicon,clkmux-table = <0 1>;
};
timer5_mux: timer5_mux {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
clocks = <&osc32k &timerclk45>;
clock-output-names = "timer5_mux";
hisilicon,clkmux-reg = <0x18 0xc>;
hisilicon,clkmux-table = <0 1>;
};
timer6_mux: timer6_mux {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
clocks = <&osc32k &timerclk67>;
clock-output-names = "timer6_mux";
hisilicon,clkmux-reg = <0x18 0x30>;
hisilicon,clkmux-table = <0 1>;
};
timer7_mux: timer7_mux {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
clocks = <&osc32k &timerclk67>;
clock-output-names = "timer7_mux";
hisilicon,clkmux-reg = <0x18 0xc0>;
hisilicon,clkmux-table = <0 1>;
};
refclk_shareAXI: refclk@22 {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
clocks = <&pll_usb &pll_peri>;
hiword;
clock-output-names = "rclk_shareAXI";
hisilicon,clkmux-reg = <0x24 0x8000>;
hisilicon,clkmux-table = <0 1>;
};
refclk_mmc1: refclk@23 {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
clocks = <&pll_peri &pll_usb>;
hiword;
clock-output-names = "rclk_mmc1";
hisilicon,clkmux-reg = <0x108 0x200>;
hisilicon,clkmux-table = <0 1>;
};
refclk_mmc2: refclk@24 {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
clocks = <&pll_peri &pll_usb>;
hiword;
clock-output-names = "rclk_mmc2";
hisilicon,clkmux-reg = <0x140 0x10>;
hisilicon,clkmux-table = <0 1>;
};
refclk_mmc3: refclk@25 {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
clocks = <&pll_peri &pll_usb>;
hiword;
clock-output-names = "rclk_mmc3";
hisilicon,clkmux-reg = <0x140 0x200>;
hisilicon,clkmux-table = <0 1>;
};
refclk_sd: refclk@26 {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
clocks = <&pll_peri &pll_usb>;
hiword;
clock-output-names = "rclk_sd";
hisilicon,clkmux-reg = <0x108 0x10>;
hisilicon,clkmux-table = <0 1>;
};
refclk_mmc1_parent: refclk@27 {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
hiword;
clocks = <&osc26m &div_mmc1>;
clock-output-names = "rclk_mmc1_parent";
hisilicon,clkmux-reg = <0x108 0x400>;
hisilicon,clkmux-table = <0 1>;
};
refclk_venc: refclk@28 {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
hiword;
clocks = <&pll_peri &pll_usb>;
clock-output-names = "rclk_venc";
hisilicon,clkmux-reg = <0x10c 0x800>;
hisilicon,clkmux-table = <0 1>;
};
refclk_g2d: refclk@29 {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
hiword;
clocks = <&pll_peri &pll_usb>;
clock-output-names = "rclk_g2d";
hisilicon,clkmux-reg = <0x10c 0x20>;
hisilicon,clkmux-table = <0 1>;
};
refclk_vdec: refclk@30 {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
hiword;
clocks = <&pll_peri &pll_usb>;
clock-output-names = "rclk_vdec";
hisilicon,clkmux-reg = <0x110 0x20>;
hisilicon,clkmux-table = <0 1>;
};
refclk_vpp: refclk@31 {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
hiword;
clocks = <&pll_peri &pll_usb>;
clock-output-names = "rclk_vpp";
hisilicon,clkmux-reg = <0x110 0x800>;
hisilicon,clkmux-table = <0 1>;
};
refclk_ldi0: refclk@32 {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
hiword;
clocks = <&pll_peri &pll_hdmi &pll_usb>;
clock-output-names = "rclk_ldi0";
hisilicon,clkmux-reg = <0x114 0x6000>;
hisilicon,clkmux-table = <0 1 2>;
};
refclk_ldi1: refclk@33 {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
hiword;
clocks = <&pll_peri &pll_hdmi &pll_usb>;
clock-output-names = "rclk_ldi1";
hisilicon,clkmux-reg = <0x118 0xc000>;
hisilicon,clkmux-table = <0 1 2>;
};
clk_osc480mdiv40: osc480mdiv40 {
compatible = "hisilicon,clk-fixed-factor";
#clock-cells = <0>;
clocks = <&clk_osc480m>;
/*mult, div*/
hisilicon,fixed-factor = <1 40>;
clock-output-names = "clk_osc480mdiv40";
};
clk_usbpicophy: usbpicophy {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&clk_osc480mdiv40>;
clock-output-names = "clk_usbpicophy";
hisilicon,hi3620-clkreset = <0x8c 0x1000000>;
hisilicon,hi3620-clkgate = <0x30 0x1000000>;
};
clk_usb2dvc: usb2dvc {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&refclk_cfgaxi>;
clock-output-names = "clk_usb2dvc";
hisilicon,hi3620-clkreset = <0xa4 0x20000>;
hisilicon,hi3620-clkgate = <0x50 0x20000>;
};
uartclk0: clkgate@0 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&refclk_uart0>;
clock-output-names = "uartclk0";
hisilicon,hi3620-clkreset = <0x98 0x10000>;
hisilicon,hi3620-clkgate = <0x40 0x10000>;
};
uartclk1: clkgate@1 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&refclk_uart1>;
clock-output-names = "uartclk1";
hisilicon,hi3620-clkreset = <0x98 0x20000>;
hisilicon,hi3620-clkgate = <0x40 0x20000>;
};
uartclk2: clkgate@2 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&refclk_uart2>;
clock-output-names = "uartclk2";
hisilicon,hi3620-clkreset = <0x98 0x40000>;
hisilicon,hi3620-clkgate = <0x40 0x40000>;
};
uartclk3: clkgate@3 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&refclk_uart3>;
clock-output-names = "uartclk3";
hisilicon,hi3620-clkreset = <0x98 0x80000>;
hisilicon,hi3620-clkgate = <0x40 0x80000>;
};
uartclk4: clkgate@4 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&refclk_uart4>;
clock-output-names = "uartclk4";
hisilicon,hi3620-clkreset = <0x98 0x100000>;
hisilicon,hi3620-clkgate = <0x40 0x100000>;
};
gpioclk0: clkgate@5 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pclk>;
clock-output-names = "gpioclk0";
hisilicon,hi3620-clkreset = <0x80 0x100>;
hisilicon,hi3620-clkgate = <0x20 0x100>;
};
gpioclk1: clkgate@6 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pclk>;
clock-output-names = "gpioclk1";
hisilicon,hi3620-clkreset = <0x80 0x200>;
hisilicon,hi3620-clkgate = <0x20 0x200>;
};
gpioclk2: clkgate@7 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pclk>;
clock-output-names = "gpioclk2";
hisilicon,hi3620-clkreset = <0x80 0x400>;
hisilicon,hi3620-clkgate = <0x20 0x400>;
};
gpioclk3: clkgate@8 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pclk>;
clock-output-names = "gpioclk3";
hisilicon,hi3620-clkreset = <0x80 0x800>;
hisilicon,hi3620-clkgate = <0x20 0x800>;
};
gpioclk4: clkgate@9 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pclk>;
clock-output-names = "gpioclk4";
hisilicon,hi3620-clkreset = <0x80 0x1000>;
hisilicon,hi3620-clkgate = <0x20 0x1000>;
};
gpioclk5: clkgate@10 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pclk>;
clock-output-names = "gpioclk5";
hisilicon,hi3620-clkreset = <0x80 0x2000>;
hisilicon,hi3620-clkgate = <0x20 0x2000>;
};
gpioclk6: clkgate@11 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pclk>;
clock-output-names = "gpioclk6";
hisilicon,hi3620-clkreset = <0x80 0x4000>;
hisilicon,hi3620-clkgate = <0x20 0x4000>;
};
gpioclk7: clkgate@12 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pclk>;
clock-output-names = "gpioclk7";
hisilicon,hi3620-clkreset = <0x80 0x8000>;
hisilicon,hi3620-clkgate = <0x20 0x8000>;
};
gpioclk8: clkgate@13 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pclk>;
clock-output-names = "gpioclk8";
hisilicon,hi3620-clkreset = <0x80 0x10000>;
hisilicon,hi3620-clkgate = <0x20 0x10000>;
};
gpioclk9: clkgate@14 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pclk>;
clock-output-names = "gpioclk9";
hisilicon,hi3620-clkreset = <0x80 0x20000>;
hisilicon,hi3620-clkgate = <0x20 0x20000>;
};
gpioclk10: clkgate@15 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pclk>;
clock-output-names = "gpioclk10";
hisilicon,hi3620-clkreset = <0x80 0x40000>;
hisilicon,hi3620-clkgate = <0x20 0x40000>;
};
gpioclk11: clkgate@16 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pclk>;
clock-output-names = "gpioclk11";
hisilicon,hi3620-clkreset = <0x80 0x80000>;
hisilicon,hi3620-clkgate = <0x20 0x80000>;
};
gpioclk12: clkgate@17 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pclk>;
clock-output-names = "gpioclk12";
hisilicon,hi3620-clkreset = <0x80 0x100000>;
hisilicon,hi3620-clkgate = <0x20 0x100000>;
};
gpioclk13: clkgate@18 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pclk>;
clock-output-names = "gpioclk13";
hisilicon,hi3620-clkreset = <0x80 0x200000>;
hisilicon,hi3620-clkgate = <0x20 0x200000>;
};
gpioclk14: clkgate@19 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pclk>;
clock-output-names = "gpioclk14";
hisilicon,hi3620-clkreset = <0x80 0x400000>;
hisilicon,hi3620-clkgate = <0x20 0x400000>;
};
gpioclk15: clkgate@20 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pclk>;
clock-output-names = "gpioclk15";
hisilicon,hi3620-clkreset = <0x80 0x800000>;
hisilicon,hi3620-clkgate = <0x20 0x800000>;
};
gpioclk16: clkgate@21 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pclk>;
clock-output-names = "gpioclk16";
hisilicon,hi3620-clkreset = <0x80 0x1000000>;
hisilicon,hi3620-clkgate = <0x20 0x1000000>;
};
gpioclk17: clkgate@22 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pclk>;
clock-output-names = "gpioclk17";
hisilicon,hi3620-clkreset = <0x80 0x2000000>;
hisilicon,hi3620-clkgate = <0x20 0x2000000>;
};
gpioclk18: clkgate@23 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pclk>;
clock-output-names = "gpioclk18";
hisilicon,hi3620-clkreset = <0x80 0x4000000>;
hisilicon,hi3620-clkgate = <0x20 0x4000000>;
};
gpioclk19: clkgate@24 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pclk>;
clock-output-names = "gpioclk19";
hisilicon,hi3620-clkreset = <0x80 0x8000000>;
hisilicon,hi3620-clkgate = <0x20 0x8000000>;
};
gpioclk20: clkgate@25 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pclk>;
clock-output-names = "gpioclk20";
hisilicon,hi3620-clkreset = <0x80 0x10000000>;
hisilicon,hi3620-clkgate = <0x20 0x10000000>;
};
gpioclk21: clkgate@26 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pclk>;
clock-output-names = "gpioclk21";
hisilicon,hi3620-clkreset = <0x80 0x20000000>;
hisilicon,hi3620-clkgate = <0x20 0x20000000>;
};
spiclk0: clkgate@27 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&refclk_spi0>;
clock-output-names = "spiclk0";
hisilicon,hi3620-clkreset = <0x98 0x200000>;
hisilicon,hi3620-clkgate = <0x40 0x200000>;
};
spiclk1: clkgate@28 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&refclk_spi1>;
clock-output-names = "spiclk1";
hisilicon,hi3620-clkreset = <0x98 0x400000>;
hisilicon,hi3620-clkgate = <0x40 0x400000>;
};
spiclk2: clkgate@29 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&refclk_spi2>;
clock-output-names = "spiclk2";
hisilicon,hi3620-clkreset = <0x98 0x800000>;
hisilicon,hi3620-clkgate = <0x40 0x800000>;
};
pwm0_mux: pwm0_mux {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
clocks = <&osc32k &pwm_divider>;
hiword;
clock-output-names = "pwm0_mux";
hisilicon,clkmux-reg = <0x104 0x400>;
hisilicon,clkmux-table = <0 1>;
};
pwm1_mux: pwm1_mux {
compatible = "hisilicon,hi3620-clk-mux";
#clock-cells = <0>;
clocks = <&osc32k &pwm_divider>;
hiword;
clock-output-names = "pwm1_mux";
hisilicon,clkmux-reg = <0x104 0x800>;
hisilicon,clkmux-table = <0 1>;
};
pwmclk0: clkgate@30 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pwm0_mux>;
clock-output-names = "pwmclk0";
hisilicon,hi3620-clkreset = <0x98 0x80>;
hisilicon,hi3620-clkgate = <0x40 0x80>;
};
pwmclk1: clkgate@31 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pwm1_mux>;
clock-output-names = "pwmclk1";
hisilicon,hi3620-clkreset = <0x98 0x100>;
hisilicon,hi3620-clkgate = <0x40 0x100>;
};
timerclk01: clkgate@32 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&refclk_tcxo>;
clock-output-names = "timerclk01";
hisilicon,hi3620-clkreset = <0x80 0x1>;
hisilicon,hi3620-clkgate = <0x20 0x3>;
};
timerclk23: clkgate@33 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&refclk_tcxo>;
clock-output-names = "timerclk23";
hisilicon,hi3620-clkreset = <0x80 0x2>;
hisilicon,hi3620-clkgate = <0x20 0xc>;
};
timerclk45: clkgate@34 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&refclk_tcxo>;
clock-output-names = "timerclk45";
hisilicon,hi3620-clkreset = <0x98 0x8>;
hisilicon,hi3620-clkgate = <0x40 0x8>;
};
timerclk67: clkgate@35 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&refclk_tcxo>;
clock-output-names = "timerclk67";
hisilicon,hi3620-clkreset = <0x98 0x10>;
hisilicon,hi3620-clkgate = <0x40 0x10>;
};
timerclk89: clkgate@36 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&refclk_tcxo>;
clock-output-names = "timerclk89";
hisilicon,hi3620-clkreset = <0x98 0x20>;
hisilicon,hi3620-clkgate = <0x40 0x20>;
};
rtcclk: clkgate@47 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pclk>;
clock-output-names = "clk_rtc";
hisilicon,hi3620-clkgate = <0x20 0x20>;
};
i2cclk0: clkgate@48 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pclk>;
clock-output-names = "clk_i2c0";
hisilicon,hi3620-clkgate = <0x40 0x1000000>;
};
i2cclk1: clkgate@49 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pclk>;
clock-output-names = "clk_i2c1";
hisilicon,hi3620-clkgate = <0x40 0x2000000>;
};
i2cclk2: clkgate@50 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pclk>;
clock-output-names = "clk_i2c2";
hisilicon,hi3620-clkgate = <0x40 0x10000000>;
};
i2cclk3: clkgate@51 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pclk>;
clock-output-names = "clk_i2c3";
hisilicon,hi3620-clkgate = <0x40 0x20000000>;
};
dmaclk: clkgate@52 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&acpclk>;
clock-output-names = "clk_dmac";
hisilicon,hi3620-clkgate = <0x50 0x400>;
};
mcuclk: clkgate@53 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&refclk_cfgaxi>;
clock-output-names = "clk_mcu";
hisilicon,hi3620-clkgate = <0x50 0x1000000>;
};
ddrcperclk: clkgate@54 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&refclk_cfgaxi>;
clock-output-names = "clk_ddrc_per";
hisilicon,hi3620-clkgate = <0x50 0x200>;
};
acpclk: clkgate@55 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&refclk_cfgaxi>;
clock-output-names = "clk_apc";
hisilicon,hi3620-clkgate = <0x30 0x10000000>;
};
mmcclk1: clkgate@56 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&refclk_mmc1_parent>;
clock-output-names = "clk_mmc1";
hisilicon,hi3620-clkgate = <0x50 0x200000>;
};
mmcclk2: clkgate@57 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&div_mmc2>;
clock-output-names = "clk_mmc2";
hisilicon,hi3620-clkgate = <0x50 0x400000>;
};
mmcclk3: clkgate@58 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&div_mmc3>;
clock-output-names = "clk_mmc3";
hisilicon,hi3620-clkgate = <0x50 0x800000>;
};
sdclk: clkgate@59 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&div_sd>;
clock-output-names = "clk_sd";
hisilicon,hi3620-clkgate = <0x50 0x100000>;
};
kpcclk: clkgate@60 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&osc32k>;
clock-output-names = "clk_kpc";
hisilicon,hi3620-clkgate = <0x20 0x40>;
};
sciclk: clkgate@61 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&osc26m>;
clock-output-names = "clk_sci";
hisilicon,hi3620-clkgate = <0x40 0x4000000>;
};
dphyclk0: clkgate@62 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&osc26m>;
clock-output-names = "clk_dphy0";
hisilicon,hi3620-clkgate = <0x30 0x8000>;
};
dphyclk1: clkgate@63 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&osc26m>;
clock-output-names = "clk_dphy1";
hisilicon,hi3620-clkgate = <0x30 0x10000>;
};
dphyclk2: clkgate@64 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&osc26m>;
clock-output-names = "clk_dphy2";
hisilicon,hi3620-clkgate = <0x30 0x20000>;
};
ldiclk0: clkgate@65 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&refclk_ldi0>;
clock-output-names = "clk_ldi0";
hisilicon,hi3620-clkgate = <0x30 0x200>;
};
ldiclk1: clkgate@66 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&refclk_ldi1>;
clock-output-names = "clk_ldi1";
hisilicon,hi3620-clkgate = <0x30 0x800>;
};
edcclk0: clkgate@67 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pclk>;
clock-output-names = "clk_edc0";
hisilicon,hi3620-clkgate = <0x30 0x100>;
};
edcclk1: clkgate@68 {
compatible = "hisilicon,hi3620-clk-gate";
#clock-cells = <0>;
clocks = <&pclk>;
clock-output-names = "clk_edc1";
hisilicon,hi3620-clkgate = <0x30 0x400>;
};
dtable: clkdiv@0 {
#hisilicon,clkdiv-table-cells = <2>;
};
div_shareaxi: clkdiv@1 {
compatible = "hisilicon,hi3620-clk-div";
#clock-cells = <0>;
clocks = <&refclk_shareAXI>;
clock-output-names = "shareAXI_div";
hisilicon,clkdiv-table = <32 1>;
/* divider register offset, mask */
hisilicon,clkdiv = <0x100 0x1f>;
};
div_cfgaxi: clkdiv@2 {
compatible = "hisilicon,hi3620-clk-div";
#clock-cells = <0>;
clocks = <&div_shareaxi>;
clock-output-names = "cfgAXI_div";
hisilicon,clkdiv-table = <2 2>;
hisilicon,clkdiv = <0x100 0x60>;
};
div_mmc1: clkdiv@3 {
compatible = "hisilicon,hi3620-clk-div";
#clock-cells = <0>;
clocks = <&refclk_mmc1>;
clock-output-names = "div_mmc1";
hisilicon,clkdiv-table = <16 1>;
hisilicon,clkdiv = <0x108 0x1e0>;
};
div_mmc2: clkdiv@4 {
compatible = "hisilicon,hi3620-clk-div";
#clock-cells = <0>;
clocks = <&refclk_mmc2>;
clock-output-names = "div_mmc2";
hisilicon,clkdiv-table = <16 1>;
hisilicon,clkdiv = <0x140 0xf>;
};
div_mmc3: clkdiv@5 {
compatible = "hisilicon,hi3620-clk-div";
#clock-cells = <0>;
clocks = <&refclk_mmc3>;
clock-output-names = "div_mmc3";
hisilicon,clkdiv-table = <16 1>;
hisilicon,clkdiv = <0x140 0x1e0>;
};
div_sd: clkdiv@6 {
compatible = "hisilicon,hi3620-clk-div";
#clock-cells = <0>;
clocks = <&refclk_sd>;
clock-output-names = "div_sd";
hisilicon,clkdiv-table = <16 1>;
hisilicon,clkdiv = <0x108 0xf>;
};
pwm_divider: pwm_divider {
compatible = "hisilicon,hi3620-clk-div";
#clock-cells = <0>;
clocks = <&osc26m>;
clock-output-names = "pwm_divider";
hisilicon,clkdiv-table = <31 1>;
hisilicon,clkdiv = <0x104 0x3e0>;
};
};
rtc0: rtc@fc804000 {
compatible = "arm,rtc-pl031", "arm,primecell";
reg = <0xfc804000 0x1000>;
interrupts = <0 9 0x4>;
clocks = <&rtcclk>;
clock-names = "apb_pclk";
status = "disabled";
};
l2: l2-cache {
compatible = "arm,pl310-cache";
reg = <0xfc100000 0x100000>;
interrupts = <0 15 4>;
cache-unified;
cache-level = <2>;
};
intc: interrupt-controller@fc001000 {
compatible = "arm,cortex-a9-gic";
#interrupt-cells = <3>;
#address-cells = <0>;
interrupt-controller;
/* gic dist base, gic cpu base */
reg = <0xfc001000 0x1000>, <0xfc000100 0x100>;
};
dual_timer0: dual_timer@fc800000 {
compatible = "arm,sp804", "arm,primecell";
reg = <0xfc800000 0x1000>;
/* timer00 & timer01 */
interrupts = <0 0 4>, <0 1 4>;
clocks = <&timer0_mux &timer1_mux>;
clock-names = "apb_pclk";
status = "disabled";
};
dual_timer1: dual_timer@fc801000 {
/*
* Only used in NORMAL state, not available ins
* SLOW or DOZE state.
* The rate is fixed in 24MHz.
*/
compatible = "arm,sp804", "arm,primecell";
reg = <0xfc801000 0x1000>;
/* timer10 & timer11 */
interrupts = <0 2 4>, <0 3 4>;
clocks = <&timer2_mux &timer3_mux>;
clock-names = "apb_pclk";
status = "disabled";
};
dual_timer2: dual_timer@fca01000 {
compatible = "arm,sp804", "arm,primecell";
reg = <0xfca01000 0x1000>;
/* timer20 & timer21 */
interrupts = <0 4 4>, <0 5 4>;
clocks = <&timer4_mux &timer5_mux>;
clock-names = "apb_pclk";
status = "disabled";
};
dual_timer3: dual_timer@fca02000 {
compatible = "arm,sp804", "arm,primecell";
reg = <0xfca02000 0x1000>;
/* timer30 & timer31 */
interrupts = <0 6 4>, <0 7 4>;
clocks = <&timer6_mux &timer7_mux>;
clock-names = "apb_pclk";
status = "disabled";
};
timer5: timer@fc000600 {
compatible = "arm,cortex-a9-twd-timer";
reg = <0xfc000600 0x20>;
interrupts = <1 13 0xf01>;
};
uart0: uart@fcb00000 {
compatible = "arm,pl011", "arm,primecell";
reg = <0xfcb00000 0x1000>;
interrupts = <0 20 4>;
clocks = <&uartclk0>;
clock-names = "apb_pclk";
status = "disabled";
};
uart1: uart@fcb01000 {
compatible = "arm,pl011", "arm,primecell";
reg = <0xfcb01000 0x1000>;
interrupts = <0 21 4>;
clocks = <&uartclk1>;
clock-names = "apb_pclk";
status = "disabled";
};
uart2: uart@fcb02000 {
compatible = "arm,pl011", "arm,primecell";
reg = <0xfcb02000 0x1000>;
interrupts = <0 22 4>;
clocks = <&uartclk2>;
clock-names = "apb_pclk";
status = "disabled";
};
uart3: uart@fcb03000 {
compatible = "arm,pl011", "arm,primecell";
reg = <0xfcb03000 0x1000>;
interrupts = <0 23 4>;
clocks = <&uartclk3>;
clock-names = "apb_pclk";
status = "disabled";
};
uart4: uart@fcb04000 {
compatible = "arm,pl011", "arm,primecell";
reg = <0xfcb04000 0x1000>;
interrupts = <0 24 4>;
clocks = <&uartclk4>;
clock-names = "apb_pclk";
status = "disabled";
};
gpio0: gpio@fc806000 {
compatible = "arm,pl061", "arm,primecell";
reg = <0xfc806000 0x1000>;
interrupts = <0 64 0x4>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = < &pmx0 2 0 1 &pmx0 3 0 1 &pmx0 4 0 1
&pmx0 5 0 1 &pmx0 6 1 1 &pmx0 7 2 1>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&gpioclk0>;
clock-names = "apb_pclk";
linux,gpio-base = <0>;
status = "disable";
};
gpio1: gpio@fc807000 {
compatible = "arm,pl061", "arm,primecell";
reg = <0xfc807000 0x1000>;
interrupts = <0 65 0x4>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = < &pmx0 0 3 1 &pmx0 1 3 1 &pmx0 2 3 1
&pmx0 3 3 1 &pmx0 4 3 1 &pmx0 5 4 1
&pmx0 6 5 1 &pmx0 7 6 1>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&gpioclk1>;
clock-names = "apb_pclk";
linux,gpio-base = <8>;
status = "disable";
};
gpio2: gpio@fc808000 {
compatible = "arm,pl061", "arm,primecell";
reg = <0xfc808000 0x1000>;
interrupts = <0 66 0x4>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = < &pmx0 0 7 1 &pmx0 1 8 1 &pmx0 2 9 1
&pmx0 3 10 1 &pmx0 4 3 1 &pmx0 5 3 1
&pmx0 6 3 1 &pmx0 7 3 1>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&gpioclk2>;
clock-names = "apb_pclk";
linux,gpio-base = <16>;
status = "disable";
};
gpio3: gpio@fc809000 {
compatible = "arm,pl061", "arm,primecell";
reg = <0xfc809000 0x1000>;
interrupts = <0 67 0x4>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = < &pmx0 0 3 1 &pmx0 1 3 1 &pmx0 2 3 1
&pmx0 3 3 1 &pmx0 4 11 1 &pmx0 5 11 1
&pmx0 6 11 1 &pmx0 7 11 1>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&gpioclk3>;
clock-names = "apb_pclk";
linux,gpio-base = <24>;
status = "disable";
};
gpio4: gpio@fc80a000 {
compatible = "arm,pl061", "arm,primecell";
reg = <0xfc80a000 0x1000>;
interrupts = <0 68 0x4>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = < &pmx0 0 11 1 &pmx0 1 11 1 &pmx0 2 11 1
&pmx0 3 11 1 &pmx0 4 12 1 &pmx0 5 12 1
&pmx0 6 13 1 &pmx0 7 13 1>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&gpioclk4>;
clock-names = "apb_pclk";
linux,gpio-base = <32>;
status = "disable";
};
gpio5: gpio@fc80b000 {
compatible = "arm,pl061", "arm,primecell";
reg = <0xfc80b000 0x1000>;
interrupts = <0 69 0x4>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = < &pmx0 0 14 1 &pmx0 1 15 1 &pmx0 2 16 1
&pmx0 3 16 1 &pmx0 4 16 1 &pmx0 5 16 1
&pmx0 6 16 1 &pmx0 7 16 1>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&gpioclk5>;
clock-names = "apb_pclk";
linux,gpio-base = <40>;
status = "disable";
};
gpio6: gpio@fc80c000 {
compatible = "arm,pl061", "arm,primecell";
reg = <0xfc80c000 0x1000>;
interrupts = <0 70 0x4>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = < &pmx0 0 16 1 &pmx0 1 16 1 &pmx0 2 17 1
&pmx0 3 17 1 &pmx0 4 18 1 &pmx0 5 18 1
&pmx0 6 18 1 &pmx0 7 19 1>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&gpioclk6>;
clock-names = "apb_pclk";
linux,gpio-base = <48>;
status = "disable";
};
gpio7: gpio@fc80d000 {
compatible = "arm,pl061", "arm,primecell";
reg = <0xfc80d000 0x1000>;
interrupts = <0 71 0x4>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = < &pmx0 0 19 1 &pmx0 1 20 1 &pmx0 2 21 1
&pmx0 3 22 1 &pmx0 4 23 1 &pmx0 5 24 1
&pmx0 6 25 1 &pmx0 7 26 1>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&gpioclk7>;
clock-names = "apb_pclk";
linux,gpio-base = <56>;
status = "disable";
};
gpio8: gpio@fc80e000 {
compatible = "arm,pl061", "arm,primecell";
reg = <0xfc80e000 0x1000>;
interrupts = <0 72 0x4>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = < &pmx0 0 27 1 &pmx0 1 28 1 &pmx0 2 29 1
&pmx0 3 30 1 &pmx0 4 31 1 &pmx0 5 32 1
&pmx0 6 33 1 &pmx0 7 34 1>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&gpioclk8>;
clock-names = "apb_pclk";
linux,gpio-base = <64>;
status = "disable";
};
gpio9: gpio@fc80f000 {
compatible = "arm,pl061", "arm,primecell";
reg = <0xfc80f000 0x1000>;
interrupts = <0 73 0x4>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = < &pmx0 0 35 1 &pmx0 1 36 1 &pmx0 2 37 1
&pmx0 3 38 1 &pmx0 4 39 1 &pmx0 5 40 1
&pmx0 6 41 1>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&gpioclk9>;
clock-names = "apb_pclk";
linux,gpio-base = <72>;
status = "disable";
};
gpio10: gpio@fc810000 {
compatible = "arm,pl061", "arm,primecell";
reg = <0xfc810000 0x1000>;
interrupts = <0 74 0x4>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = < &pmx0 2 43 1 &pmx0 3 44 1 &pmx0 4 45 1
&pmx0 5 45 1 &pmx0 6 46 1 &pmx0 7 46 1>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&gpioclk10>;
clock-names = "apb_pclk";
linux,gpio-base = <80>;
status = "disable";
};
gpio11: gpio@fc811000 {
compatible = "arm,pl061", "arm,primecell";
reg = <0xfc811000 0x1000>;
interrupts = <0 75 0x4>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = < &pmx0 0 47 1 &pmx0 1 47 1 &pmx0 2 47 1
&pmx0 3 47 1 &pmx0 4 47 1 &pmx0 5 48 1
&pmx0 6 49 1 &pmx0 7 49 1>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&gpioclk11>;
clock-names = "apb_pclk";
linux,gpio-base = <88>;
status = "disable";
};
gpio12: gpio@fc812000 {
compatible = "arm,pl061", "arm,primecell";
reg = <0xfc812000 0x1000>;
interrupts = <0 76 0x4>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = < &pmx0 0 49 1 &pmx0 1 50 1 &pmx0 2 49 1
&pmx0 3 49 1 &pmx0 4 51 1 &pmx0 5 51 1
&pmx0 6 51 1 &pmx0 7 52 1>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&gpioclk12>;
clock-names = "apb_pclk";
linux,gpio-base = <96>;
status = "disable";
};
gpio13: gpio@fc813000 {
compatible = "arm,pl061", "arm,primecell";
reg = <0xfc813000 0x1000>;
interrupts = <0 77 0x4>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = < &pmx0 0 51 1 &pmx0 1 51 1 &pmx0 2 53 1
&pmx0 3 53 1 &pmx0 4 53 1 &pmx0 5 54 1
&pmx0 6 55 1 &pmx0 7 56 1>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&gpioclk13>;
clock-names = "apb_pclk";
linux,gpio-base = <104>;
status = "disable";
};
gpio14: gpio@fc814000 {
compatible = "arm,pl061", "arm,primecell";
reg = <0xfc814000 0x1000>;
interrupts = <0 78 0x4>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = < &pmx0 0 57 1 &pmx0 1 97 1 &pmx0 2 97 1
&pmx0 3 58 1 &pmx0 4 59 1 &pmx0 5 60 1
&pmx0 6 60 1 &pmx0 7 61 1>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&gpioclk14>;
clock-names = "apb_pclk";
linux,gpio-base = <112>;
status = "disable";
};
gpio15: gpio@fc815000 {
compatible = "arm,pl061", "arm,primecell";
reg = <0xfc815000 0x1000>;
interrupts = <0 79 0x4>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = < &pmx0 0 61 1 &pmx0 1 62 1 &pmx0 2 62 1
&pmx0 3 63 1 &pmx0 4 63 1 &pmx0 5 64 1
&pmx0 6 64 1 &pmx0 7 65 1>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&gpioclk15>;
clock-names = "apb_pclk";
linux,gpio-base = <120>;
status = "disable";
};
gpio16: gpio@fc816000 {
compatible = "arm,pl061", "arm,primecell";
reg = <0xfc816000 0x1000>;
interrupts = <0 80 0x4>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = < &pmx0 0 66 1 &pmx0 1 67 1 &pmx0 2 68 1
&pmx0 3 69 1 &pmx0 4 70 1 &pmx0 5 71 1
&pmx0 6 72 1 &pmx0 7 73 1>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&gpioclk16>;
clock-names = "apb_pclk";
linux,gpio-base = <128>;
status = "disable";
};
gpio17: gpio@fc817000 {
compatible = "arm,pl061", "arm,primecell";
reg = <0xfc817000 0x1000>;
interrupts = <0 81 0x4>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = < &pmx0 0 74 1 &pmx0 1 75 1 &pmx0 2 76 1
&pmx0 3 77 1 &pmx0 4 78 1 &pmx0 5 79 1
&pmx0 6 80 1 &pmx0 7 81 1>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&gpioclk17>;
clock-names = "apb_pclk";
linux,gpio-base = <136>;
status = "disable";
};
gpio18: gpio@fc818000 {
compatible = "arm,pl061", "arm,primecell";
reg = <0xfc818000 0x1000>;
interrupts = <0 82 0x4>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = < &pmx0 0 82 1 &pmx0 1 83 1 &pmx0 2 83 1
&pmx0 3 84 1 &pmx0 4 84 1 &pmx0 5 85 1
&pmx0 6 86 1 &pmx0 7 87 1>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&gpioclk18>;
clock-names = "apb_pclk";
linux,gpio-base = <144>;
status = "disable";
};
gpio19: gpio@fc819000 {
compatible = "arm,pl061", "arm,primecell";
reg = <0xfc819000 0x1000>;
interrupts = <0 83 0x4>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = < &pmx0 0 87 1 &pmx0 1 87 1 &pmx0 2 88 1
&pmx0 3 88 1>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&gpioclk19>;
clock-names = "apb_pclk";
linux,gpio-base = <152>;
status = "disable";
};
gpio20: gpio@fc81a000 {
compatible = "arm,pl061", "arm,primecell";
reg = <0xfc81a000 0x1000>;
interrupts = <0 84 0x4>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = < &pmx0 0 89 1 &pmx0 1 89 1 &pmx0 2 90 1
&pmx0 3 90 1 &pmx0 4 91 1 &pmx0 5 92 1>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&gpioclk20>;
clock-names = "apb_pclk";
linux,gpio-base = <160>;
status = "disable";
};
gpio21: gpio@fc81b000 {
compatible = "arm,pl061", "arm,primecell";
reg = <0xfc81b000 0x1000>;
interrupts = <0 85 0x4>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = < &pmx0 3 94 1 &pmx0 7 96 1>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&gpioclk21>;
clock-names = "apb_pclk";
linux,gpio-base = <168>;
status = "disable";
};
pmx0: pinmux@fc803000 {
compatible = "pinctrl-single";
reg = <0xfc803000 0x188>;
#address-cells = <1>;
#size-cells = <1>;
#gpio-range-cells = <3>;
ranges;
pinctrl-single,register-width = <32>;
pinctrl-single,function-mask = <7>;
/* pin base, nr pins & gpio function */
pinctrl-single,gpio-range = <&range 0 3 0 &range 3 9 1
&range 12 1 0 &range 13 29 1
&range 43 1 0 &range 44 49 1
&range 94 1 1 &range 96 2 1>;
range: gpio-range {
#pinctrl-single,gpio-range-cells = <3>;
};
};
pmx1: pinmux@fc803800 {
compatible = "pinconf-single";
reg = <0xfc803800 0x2dc>;
#address-cells = <1>;
#size-cells = <1>;
ranges;
pinctrl-single,register-width = <32>;
};
i2c0: i2c@fcb08000 {
compatible = "snps,designware-i2c";
#address-cells = <1>;
#size-cells = <0>;
reg = <0xfcb08000 0x1000>;
interrupts = <0 28 4>;
clocks = <&i2cclk0>;
status = "disabled";
};
i2c1: i2c@fcb09000 {
compatible = "snps,designware-i2c";
#address-cells = <1>;
#size-cells = <0>;
reg = <0xfcb09000 0x1000>;
interrupts = <0 29 4>;
clocks = <&i2cclk1>;
status = "disabled";
};
i2c2: i2c@fcb0c000 {
compatible = "snps,designware-i2c";
reg = <0xfcb0c000 0x1000>;
interrupts = <0 62 4>;
clocks = <&i2cclk2>;
status = "disabled";
};
i2c3: i2c@fcb0d000 {
compatible = "snps,designware-i2c";
reg = <0xfcb0d000 0x1000>;
interrupts = <0 63 4>;
clocks = <&i2cclk3>;
status = "disabled";
};
/* unremovable emmc as mmcblk0 */
dwmmc_1: dwmmc1@fcd04000 {
compatible = "hisilicon,hi4511-dw-mshc";
reg = <0xfcd04000 0x1000>;
interrupts = <0 17 4>;
#address-cells = <1>;
#size-cells = <0>;
clocks = <&mmcclk1>, <&ddrcperclk>;
clock-names = "ciu", "biu";
clken-reg = <0x1f8 12>;
drv-sel-reg = <0x1f8 16>;
sam-sel-reg = <0x1f8 20>;
div-reg = <0x1f8 13>;
};
/* sd as mmcblk1 */
dwmmc_0: dwmmc0@fcd03000 {
compatible = "hisilicon,hi4511-dw-mshc";
reg = <0xfcd03000 0x1000>;
interrupts = <0 16 4>;
#address-cells = <1>;
#size-cells = <0>;
clocks = <&sdclk>, <&ddrcperclk>;
clock-names = "ciu", "biu";
clken-reg = <0x1f8 0>;
drv-sel-reg = <0x1f8 4>;
sam-sel-reg = <0x1f8 8>;
div-reg = <0x1f8 1>;
};
dwmmc_2: dwmmc2@fcd05000 {
compatible = "hisilicon,hi4511-dw-mshc";
reg = <0xfcd05000 0x1000>;
interrupts = <0 18 4>;
#address-cells = <1>;
#size-cells = <0>;
clocks = <&mmcclk2>;
clken-reg = <0x1f8 24>;
drv-sel-reg = <0x1f8 28>;
sam-sel-reg = <0x1fc 0>;
div-reg = <0x1f8 25>;
};
dwmmc_3: dwmmc3@fcd06000 {
compatible = "hisilicon,hi4511-dw-mshc";
reg = <0xfcd06000 0x1000>;
interrupts = <0 19 4>;
#address-cells = <1>;
#size-cells = <0>;
clocks = <&mmcclk3>;
clken-reg = <0x1fc 4>;
drv-sel-reg = <0x1fc 8>;
sam-sel-reg = <0x1fc 12>;
div-reg = <0x1f8 5>;
};
dma0: dma@fcd02000 {
compatible = "hisilicon,k3-dma-1.0";
reg = <0xfcd02000 0x1000>;
#dma-cells = <1>;
dma-channels = <16>;
dma-requests = <27>;
interrupts = <0 12 4>;
clocks = <&dmaclk>;
status = "disable";
};
edc0: edc@fa202000 {
compatible = "hisilicon,hi3620-fb";
reg = <0xfa202000 0x1000>;
clocks = <&ldiclk0 &edcclk0 &dsiclk0 &lanebyteclk0>;
clock-names = "ldi", "edc", "dsi", "lane";
interrupts = <0 38 0x4>, <0 39 0x4>, <0 40 0x4>;
interrupt-names = "edc", "ldi", "dsi";
status = "disabled";
dsi2xclk0: clkdsi@0 {
compatible = "hisilicon,hi3620-phy";
#clock-cells = <0>;
clocks = <&osc26m>;
clock-output-names = "clk_dsi2x0";
};
dsiclk0: clkdsi@1 {
compatible = "hisilicon,clk-fixed-factor";
#clock-cells = <0>;
clocks = <&dsi2xclk0>;
clock-output-names = "clk_dsi0";
/*mult, div*/
hisilicon,fixed-factor = <1 2>;
};
lanebyteclk0: clkdsi@2 {
compatible = "hisilicon,clk-fixed-factor";
#clock-cells = <0>;
clocks = <&dsi2xclk0>;
clock-output-names = "clk_lanebyte0";
/*mult, div*/
hisilicon,fixed-factor = <1 8>;
};
escclk0: clkdsi@3 {
compatible = "hisilicon,hi3620-phy-esc";
#clock-cells = <0>;
clocks = <&lanebyteclk0>;
clock-output-names = "clk_dsi_phy_esc0";
};
};
edc1: edc@fa206900 {
compatible = "hisilicon,hi3620-fb";
clocks = <&ldiclk1 &edcclk1>;
clock-names = "ldi", "edc";
status = "disabled";
};
};
};