blob: 5eea43c055f5b8a29628719528a4fbd88d4194b2 [file] [log] [blame]
/*
* Copyright (c) 2013 Linaro Ltd.
* Copyright (c) 2013 Hisilicon Limited.
*
* 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;
};
gic: interrupt-controller@fc001000 {
compatible = "arm,cortex-a9-gic";
#interrupt-cells = <3>;
#address-cells = <0>;
interrupt-controller;
/* gic dist base, gic cpu base */
reg = <0xf8a01000 0x1000>, <0xf8a00100 0x100>;
};
soc {
#address-cells = <1>;
#size-cells = <1>;
compatible = "simple-bus";
device_type = "soc";
interrupt-parent = <&gic>;
ranges;
amba {
#address-cells = <1>;
#size-cells = <1>;
compatible = "arm,amba-bus";
ranges;
timer0: timer@f8002000 {
compatible = "arm,sp804", "arm,primecell";
reg = <0xf8002000 0x1000>;
/* timer00 & timer01 */
interrupts = <0 24 4>;
clocks = <&osc24m>;
status = "disabled";
};
timer1: timer@f8a29000 {
/*
* Only used in NORMAL state, not available ins
* SLOW or DOZE state.
* The rate is fixed in 24MHz.
*/
compatible = "arm,sp804", "arm,primecell";
reg = <0xf8a29000 0x1000>;
/* timer10 & timer11 */
interrupts = <0 25 4>;
clocks = <&osc24m>;
status = "disabled";
};
timer2: timer@f8a2a000 {
compatible = "arm,sp804", "arm,primecell";
reg = <0xf8a2a000 0x1000>;
/* timer20 & timer21 */
interrupts = <0 26 4>;
clocks = <&osc24m>;
status = "disabled";
};
timer3: timer@f8a2b000 {
compatible = "arm,sp804", "arm,primecell";
reg = <0xf8a2b000 0x1000>;
/* timer30 & timer31 */
interrupts = <0 27 4>;
clocks = <&osc24m>;
status = "disabled";
};
timer4: timer@f8a81000 {
compatible = "arm,sp804", "arm,primecell";
reg = <0xf8a81000 0x1000>;
/* timer30 & timer31 */
interrupts = <0 28 4>;
clocks = <&osc24m>;
status = "disabled";
};
uart0: uart@f8b00000 {
compatible = "arm,pl011", "arm,primecell";
reg = <0xf8b00000 0x1000>;
interrupts = <0 49 4>;
clocks = <&bpll_fout0_div 1>;
clock-names = "apb_pclk";
status = "disabled";
};
uart1: uart@f8006000 {
compatible = "arm,pl011", "arm,primecell";
reg = <0xf8006000 0x1000>;
interrupts = <0 50 4>;
clocks = <&bpll_fout0_div 1>;
clock-names = "apb_pclk";
status = "disabled";
};
uart2: uart@f8b02000 {
compatible = "arm,pl011", "arm,primecell";
reg = <0xf8b02000 0x1000>;
interrupts = <0 51 4>;
clocks = <&bpll_fout0_div 1>;
clock-names = "apb_pclk";
status = "disabled";
};
uart3: uart@f8b03000 {
compatible = "arm,pl011", "arm,primecell";
reg = <0xf8b03000 0x1000>;
interrupts = <0 52 4>;
clocks = <&bpll_fout0_div 1>;
clock-names = "apb_pclk";
status = "disabled";
};
uart4: uart@f8b04000 {
compatible = "arm,pl011", "arm,primecell";
reg = <0xf8b04000 0x1000>;
interrupts = <0 53 4>;
clocks = <&bpll_fout0_div 1>;
clock-names = "apb_pclk";
status = "disabled";
};
};
clocks {
#address-cells = <1>;
#size-cells = <0>;
osc24m: osc {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <24000000>;
clock-output-names = "osc24mhz";
};
bpll: bpll {
compatible = "hisilicon,hi3716-fixed-pll";
#clock-cells = <1>;
clocks = <&osc24m>;
clock-frequency = <1200000000>,
<600000000>,
<300000000>,
<200000000>,
<150000000>;
clock-output-names = "bpll_fout0",
"bpll_fout1",
"bpll_fout2",
"bpll_fout3",
"bpll_fout4";
};
bpll_fout0_div: bpll_fout0_div {/* 1200Mhz */
compatible = "hisilicon,hi3716-fixed-divider";
#clock-cells = <1>;
clocks = <&bpll 0>;
div-table = <3 14 25 50>;
clock-output-names = "fout0_400m", "fout0_86m",
"fout0_48m", "fout0_24m";
};
bpll_fout1_div: bpll_fout1_div {
compatible = "hisilicon,hi3716-fixed-divider";
#clock-cells = <0>;
clocks = <&bpll 1>;
div-table = <10>;
clock-output-names = "fout1_60m";
};
bpll_fout2_div: bpll_fout2_div {
compatible = "hisilicon,hi3716-fixed-divider";
#clock-cells = <0>;
clocks = <&bpll 2>;
div-table = <4>;
clock-output-names = "fout2_75m";
};
bpll_fout3_div: bpll_fout3_div {
compatible = "hisilicon,hi3716-fixed-divider";
#clock-cells = <1>;
clocks = <&bpll 3>;
div-table = <2 4 5 8>;
clock-output-names = "fout3_100m", "fout3_50m",
"fout3_40m", "fout3_25m";
};
clk_sfc_mux: clk_sfc_mux {
compatible = "hisilicon,hi3716-clk-mux";
#clock-cells = <0>;
/* clks: 24M 75M 100M 150M 200M */
clocks = <&osc24m>, <&bpll_fout2_div>,
<&bpll_fout3_div 0>, <&bpll 4>, <&bpll 3>;
/* offset mux_shift mux_width */
mux-reg = <0x5c 8 3>;
/* mux reg value to choose clks */
mux-table = <0 7 6 4 5>;
clock-output-names = "sfc_mux";
};
clk_sfc: clk_sfc {
compatible = "hisilicon,hi3716-clk-gate";
#clock-cells = <0>;
clocks = <&clk_sfc_mux>;
/* offset, enable, reset */
gate-reg = <0x5c 0 4>;
clock-output-names = "sfc";
};
};
local_timer@f8a00600 {
compatible = "arm,cortex-a9-twd-timer";
reg = <0xf8a00600 0x20>;
interrupts = <1 13 0xf01>;
};
l2: l2-cache {
compatible = "arm,pl310-cache";
reg = <0xf8a10000 0x100000>;
interrupts = <0 15 4>;
cache-unified;
cache-level = <2>;
hisilicon,l2cache-aux = <0x00050000 0xfff0ffff>;
};
sctrl@f8000000 {
compatible = "hisilicon,sctrl";
reg = <0xf8000000 0x1000>;
smp_reg = <0xc0>;
reboot_reg = <0x4>;
};
clkbase@f8a22000 {
compatible = "hisilicon,clkbase";
reg = <0xf8a22000 0x1000>;
};
cpuctrl@f8a22000 {
compatible = "hisilicon,cpuctrl";
reg = <0xf8a22000 0x2000>;
};
};
};