aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt6
-rw-r--r--arch/arm/Kconfig2
-rw-r--r--arch/arm/Makefile1
-rw-r--r--arch/arm/mach-hi3xxx/Kconfig13
-rw-r--r--arch/arm/mach-hi3xxx/Makefile5
-rw-r--r--arch/arm/mach-hi3xxx/hi3xxx.c60
6 files changed, 87 insertions, 0 deletions
diff --git a/Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt b/Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt
new file mode 100644
index 000000000000..21a73363e019
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt
@@ -0,0 +1,6 @@
1Hisilicon Platforms Device Tree Bindings
2----------------------------------------------------
3
4Hi4511 Board
5Required root node properties:
6 - compatible = "hisilicon,hi3620-hi4511";
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index c1f1a7eee953..75eb5323fedd 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -925,6 +925,8 @@ source "arch/arm/mach-footbridge/Kconfig"
925 925
926source "arch/arm/mach-gemini/Kconfig" 926source "arch/arm/mach-gemini/Kconfig"
927 927
928source "arch/arm/mach-hi3xxx/Kconfig"
929
928source "arch/arm/mach-highbank/Kconfig" 930source "arch/arm/mach-highbank/Kconfig"
929 931
930source "arch/arm/mach-integrator/Kconfig" 932source "arch/arm/mach-integrator/Kconfig"
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index c99b1086d83d..dfbafa38b4cd 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -156,6 +156,7 @@ machine-$(CONFIG_ARCH_EBSA110) += ebsa110
156machine-$(CONFIG_ARCH_EP93XX) += ep93xx 156machine-$(CONFIG_ARCH_EP93XX) += ep93xx
157machine-$(CONFIG_ARCH_EXYNOS) += exynos 157machine-$(CONFIG_ARCH_EXYNOS) += exynos
158machine-$(CONFIG_ARCH_GEMINI) += gemini 158machine-$(CONFIG_ARCH_GEMINI) += gemini
159machine-$(CONFIG_ARCH_HI3xxx) += hi3xxx
159machine-$(CONFIG_ARCH_HIGHBANK) += highbank 160machine-$(CONFIG_ARCH_HIGHBANK) += highbank
160machine-$(CONFIG_ARCH_INTEGRATOR) += integrator 161machine-$(CONFIG_ARCH_INTEGRATOR) += integrator
161machine-$(CONFIG_ARCH_IOP13XX) += iop13xx 162machine-$(CONFIG_ARCH_IOP13XX) += iop13xx
diff --git a/arch/arm/mach-hi3xxx/Kconfig b/arch/arm/mach-hi3xxx/Kconfig
new file mode 100644
index 000000000000..8a502d1e9542
--- /dev/null
+++ b/arch/arm/mach-hi3xxx/Kconfig
@@ -0,0 +1,13 @@
1config ARCH_HI3xxx
2 bool "Hisilicon Hi36xx/Hi37xx family" if ARCH_MULTI_V7
3 select ARM_AMBA
4 select ARM_GIC
5 select ARM_TIMER_SP804
6 select ARCH_WANT_OPTIONAL_GPIOLIB
7 select CACHE_L2X0
8 select CLKSRC_OF
9 select GENERIC_CLOCKEVENTS
10 select PINCTRL
11 select PINCTRL_SINGLE
12 help
13 Support for Hisilicon Hi36xx/Hi37xx processor family
diff --git a/arch/arm/mach-hi3xxx/Makefile b/arch/arm/mach-hi3xxx/Makefile
new file mode 100644
index 000000000000..d68ebb3d10bb
--- /dev/null
+++ b/arch/arm/mach-hi3xxx/Makefile
@@ -0,0 +1,5 @@
1#
2# Makefile for Hisilicon Hi36xx/Hi37xx processors line
3#
4
5obj-y += hi3xxx.o
diff --git a/arch/arm/mach-hi3xxx/hi3xxx.c b/arch/arm/mach-hi3xxx/hi3xxx.c
new file mode 100644
index 000000000000..fe56daf84b1a
--- /dev/null
+++ b/arch/arm/mach-hi3xxx/hi3xxx.c
@@ -0,0 +1,60 @@
15/*
2 * (Hisilicon's Hi36xx/Hi37xx SoC based) flattened device tree enabled machine
3 *
4 * Copyright (c) 2012-2013 Hisilicon Ltd.
5 * Copyright (c) 2012-2013 Linaro Ltd.
6 *
7 * Author: Haojian Zhuang <haojian.zhuang@linaro.org>
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License version 2 as
11 * published by the Free Software Foundation.
12*/
13
14#include <linux/clk-provider.h>
15#include <linux/clocksource.h>
16#include <linux/irqchip.h>
17#include <linux/of_platform.h>
18
19#include <asm/mach/arch.h>
20#include <asm/mach/map.h>
21
22/*
23 * This table is only for optimization. Since ioremap() could always share
24 * the same mapping if it's defined as static IO mapping.
25 *
26 * Without this table, system could also work. The cost is some virtual address
27 * spaces wasted since ioremap() may be called multi times for the same
28 * IO space.
29 */
30static struct map_desc hi3620_io_desc[] __initdata = {
31 {
32 .pfn = __phys_to_pfn(0xfc802000),
33 .virtual = 0xfe802000,
34 .length = 0x1000,
35 .type = MT_DEVICE,
36 },
37};
38
39static void __init hi3620_map_io(void)
40{
41 debug_ll_io_init();
42 iotable_init(hi3620_io_desc, ARRAY_SIZE(hi3620_io_desc));
43}
44
45static void __init hi3xxx_timer_init(void)
46{
47 of_clk_init(NULL);
48 clocksource_of_init();
49}
50
51static const char *hi3xxx_compat[] __initconst = {
52 "hisilicon,hi3620-hi4511",
53 NULL,
54};
55
56DT_MACHINE_START(HI3620, "Hisilicon Hi3620 (Flattened Device Tree)")
57 .map_io = hi3620_map_io,
58 .init_time = hi3xxx_timer_init,
59 .dt_compat = hi3xxx_compat,
60MACHINE_END