2013-12-18 08:23:49 +08:00
|
|
|
/*
|
2013-12-20 10:52:56 +08:00
|
|
|
* (Hisilicon's SoC based) flattened device tree enabled machine
|
2013-12-11 15:54:50 +08:00
|
|
|
*
|
|
|
|
* Copyright (c) 2012-2013 Hisilicon Ltd.
|
|
|
|
* 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
|
|
|
|
* published by the Free Software Foundation.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <linux/clocksource.h>
|
|
|
|
#include <linux/irqchip.h>
|
2013-12-18 08:23:49 +08:00
|
|
|
|
2013-12-11 15:54:50 +08:00
|
|
|
#include <asm/mach/arch.h>
|
|
|
|
#include <asm/mach/map.h>
|
|
|
|
|
2013-12-18 08:23:49 +08:00
|
|
|
#define HI3620_SYSCTRL_PHYS_BASE 0xfc802000
|
|
|
|
#define HI3620_SYSCTRL_VIRT_BASE 0xfe802000
|
|
|
|
|
2013-12-11 15:54:50 +08:00
|
|
|
/*
|
|
|
|
* This table is only for optimization. Since ioremap() could always share
|
|
|
|
* the same mapping if it's defined as static IO mapping.
|
|
|
|
*
|
|
|
|
* Without this table, system could also work. The cost is some virtual address
|
|
|
|
* spaces wasted since ioremap() may be called multi times for the same
|
|
|
|
* IO space.
|
|
|
|
*/
|
|
|
|
static struct map_desc hi3620_io_desc[] __initdata = {
|
|
|
|
{
|
2013-12-18 08:23:49 +08:00
|
|
|
/* sysctrl */
|
|
|
|
.pfn = __phys_to_pfn(HI3620_SYSCTRL_PHYS_BASE),
|
|
|
|
.virtual = HI3620_SYSCTRL_VIRT_BASE,
|
2013-12-11 15:54:50 +08:00
|
|
|
.length = 0x1000,
|
|
|
|
.type = MT_DEVICE,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
static void __init hi3620_map_io(void)
|
|
|
|
{
|
|
|
|
debug_ll_io_init();
|
|
|
|
iotable_init(hi3620_io_desc, ARRAY_SIZE(hi3620_io_desc));
|
|
|
|
}
|
|
|
|
|
2015-02-19 04:01:45 +08:00
|
|
|
static const char *const hi3xxx_compat[] __initconst = {
|
2013-12-11 15:54:50 +08:00
|
|
|
"hisilicon,hi3620-hi4511",
|
|
|
|
NULL,
|
|
|
|
};
|
|
|
|
|
|
|
|
DT_MACHINE_START(HI3620, "Hisilicon Hi3620 (Flattened Device Tree)")
|
|
|
|
.map_io = hi3620_map_io,
|
|
|
|
.dt_compat = hi3xxx_compat,
|
|
|
|
MACHINE_END
|
2014-04-11 11:54:11 +08:00
|
|
|
|
2015-02-19 04:01:45 +08:00
|
|
|
static const char *const hix5hd2_compat[] __initconst = {
|
2014-04-11 11:54:11 +08:00
|
|
|
"hisilicon,hix5hd2",
|
|
|
|
NULL,
|
|
|
|
};
|
|
|
|
|
|
|
|
DT_MACHINE_START(HIX5HD2_DT, "Hisilicon HIX5HD2 (Flattened Device Tree)")
|
|
|
|
.dt_compat = hix5hd2_compat,
|
|
|
|
MACHINE_END
|
2014-05-09 16:58:04 +08:00
|
|
|
|
2015-02-19 04:01:45 +08:00
|
|
|
static const char *const hip04_compat[] __initconst = {
|
2014-05-09 16:58:04 +08:00
|
|
|
"hisilicon,hip04-d01",
|
|
|
|
NULL,
|
|
|
|
};
|
|
|
|
|
|
|
|
DT_MACHINE_START(HIP04, "Hisilicon HiP04 (Flattened Device Tree)")
|
|
|
|
.dt_compat = hip04_compat,
|
|
|
|
MACHINE_END
|
2014-12-24 11:09:57 +08:00
|
|
|
|
2015-02-19 04:01:45 +08:00
|
|
|
static const char *const hip01_compat[] __initconst = {
|
2014-12-24 11:09:57 +08:00
|
|
|
"hisilicon,hip01",
|
|
|
|
"hisilicon,hip01-ca9x2",
|
|
|
|
NULL,
|
|
|
|
};
|
|
|
|
|
|
|
|
DT_MACHINE_START(HIP01, "Hisilicon HIP01 (Flattened Device Tree)")
|
|
|
|
.dt_compat = hip01_compat,
|
|
|
|
MACHINE_END
|