Commit | Line | Data |
---|---|---|
a9434e96 | 1 | /* |
389ee0c2 | 2 | * (Hisilicon's SoC based) flattened device tree enabled machine |
2c7268c7 HZ |
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 | ||
2c7268c7 HZ |
14 | #include <linux/clocksource.h> |
15 | #include <linux/irqchip.h> | |
a9434e96 | 16 | |
2c7268c7 HZ |
17 | #include <asm/mach/arch.h> |
18 | #include <asm/mach/map.h> | |
19 | ||
a9434e96 KH |
20 | #define HI3620_SYSCTRL_PHYS_BASE 0xfc802000 |
21 | #define HI3620_SYSCTRL_VIRT_BASE 0xfe802000 | |
22 | ||
2c7268c7 HZ |
23 | /* |
24 | * This table is only for optimization. Since ioremap() could always share | |
25 | * the same mapping if it's defined as static IO mapping. | |
26 | * | |
27 | * Without this table, system could also work. The cost is some virtual address | |
28 | * spaces wasted since ioremap() may be called multi times for the same | |
29 | * IO space. | |
30 | */ | |
31 | static struct map_desc hi3620_io_desc[] __initdata = { | |
32 | { | |
a9434e96 KH |
33 | /* sysctrl */ |
34 | .pfn = __phys_to_pfn(HI3620_SYSCTRL_PHYS_BASE), | |
35 | .virtual = HI3620_SYSCTRL_VIRT_BASE, | |
2c7268c7 HZ |
36 | .length = 0x1000, |
37 | .type = MT_DEVICE, | |
38 | }, | |
39 | }; | |
40 | ||
41 | static void __init hi3620_map_io(void) | |
42 | { | |
43 | debug_ll_io_init(); | |
44 | iotable_init(hi3620_io_desc, ARRAY_SIZE(hi3620_io_desc)); | |
45 | } | |
46 | ||
543c5040 | 47 | static const char *const hi3xxx_compat[] __initconst = { |
2c7268c7 HZ |
48 | "hisilicon,hi3620-hi4511", |
49 | NULL, | |
50 | }; | |
51 | ||
52 | DT_MACHINE_START(HI3620, "Hisilicon Hi3620 (Flattened Device Tree)") | |
53 | .map_io = hi3620_map_io, | |
2c7268c7 HZ |
54 | .dt_compat = hi3xxx_compat, |
55 | MACHINE_END | |
06cc5c1d | 56 | |
543c5040 | 57 | static const char *const hix5hd2_compat[] __initconst = { |
06cc5c1d HY |
58 | "hisilicon,hix5hd2", |
59 | NULL, | |
60 | }; | |
61 | ||
62 | DT_MACHINE_START(HIX5HD2_DT, "Hisilicon HIX5HD2 (Flattened Device Tree)") | |
63 | .dt_compat = hix5hd2_compat, | |
06cc5c1d | 64 | MACHINE_END |
2d518eda | 65 | |
543c5040 | 66 | static const char *const hip04_compat[] __initconst = { |
2d518eda HZ |
67 | "hisilicon,hip04-d01", |
68 | NULL, | |
69 | }; | |
70 | ||
71 | DT_MACHINE_START(HIP04, "Hisilicon HiP04 (Flattened Device Tree)") | |
72 | .dt_compat = hip04_compat, | |
73 | MACHINE_END | |
82fd132c | 74 | |
543c5040 | 75 | static const char *const hip01_compat[] __initconst = { |
82fd132c WL |
76 | "hisilicon,hip01", |
77 | "hisilicon,hip01-ca9x2", | |
78 | NULL, | |
79 | }; | |
80 | ||
81 | DT_MACHINE_START(HIP01, "Hisilicon HIP01 (Flattened Device Tree)") | |
82 | .dt_compat = hip01_compat, | |
83 | MACHINE_END |