Thomas Gleixner | d2912cb | 2019-06-04 10:11:33 +0200 | [diff] [blame] | 1 | // SPDX-License-Identifier: GPL-2.0-only |
Kevin Hilman | a9434e9 | 2013-12-17 16:23:49 -0800 | [diff] [blame] | 2 | /* |
Hao Fang | c1ce9d8 | 2021-03-30 14:51:40 +0800 | [diff] [blame] | 3 | * (HiSilicon's SoC based) flattened device tree enabled machine |
Haojian Zhuang | 2c7268c | 2013-12-11 15:54:50 +0800 | [diff] [blame] | 4 | * |
Hao Fang | c1ce9d8 | 2021-03-30 14:51:40 +0800 | [diff] [blame] | 5 | * Copyright (c) 2012-2013 HiSilicon Ltd. |
Haojian Zhuang | 2c7268c | 2013-12-11 15:54:50 +0800 | [diff] [blame] | 6 | * Copyright (c) 2012-2013 Linaro Ltd. |
| 7 | * |
| 8 | * Author: Haojian Zhuang <haojian.zhuang@linaro.org> |
Haojian Zhuang | 2c7268c | 2013-12-11 15:54:50 +0800 | [diff] [blame] | 9 | */ |
| 10 | |
Haojian Zhuang | 2c7268c | 2013-12-11 15:54:50 +0800 | [diff] [blame] | 11 | #include <linux/clocksource.h> |
| 12 | #include <linux/irqchip.h> |
Kevin Hilman | a9434e9 | 2013-12-17 16:23:49 -0800 | [diff] [blame] | 13 | |
Haojian Zhuang | 2c7268c | 2013-12-11 15:54:50 +0800 | [diff] [blame] | 14 | #include <asm/mach/arch.h> |
| 15 | #include <asm/mach/map.h> |
| 16 | |
Kevin Hilman | a9434e9 | 2013-12-17 16:23:49 -0800 | [diff] [blame] | 17 | #define HI3620_SYSCTRL_PHYS_BASE 0xfc802000 |
| 18 | #define HI3620_SYSCTRL_VIRT_BASE 0xfe802000 |
| 19 | |
Haojian Zhuang | 2c7268c | 2013-12-11 15:54:50 +0800 | [diff] [blame] | 20 | /* |
| 21 | * This table is only for optimization. Since ioremap() could always share |
| 22 | * the same mapping if it's defined as static IO mapping. |
| 23 | * |
| 24 | * Without this table, system could also work. The cost is some virtual address |
| 25 | * spaces wasted since ioremap() may be called multi times for the same |
| 26 | * IO space. |
| 27 | */ |
| 28 | static struct map_desc hi3620_io_desc[] __initdata = { |
| 29 | { |
Kevin Hilman | a9434e9 | 2013-12-17 16:23:49 -0800 | [diff] [blame] | 30 | /* sysctrl */ |
| 31 | .pfn = __phys_to_pfn(HI3620_SYSCTRL_PHYS_BASE), |
| 32 | .virtual = HI3620_SYSCTRL_VIRT_BASE, |
Haojian Zhuang | 2c7268c | 2013-12-11 15:54:50 +0800 | [diff] [blame] | 33 | .length = 0x1000, |
| 34 | .type = MT_DEVICE, |
| 35 | }, |
| 36 | }; |
| 37 | |
| 38 | static void __init hi3620_map_io(void) |
| 39 | { |
| 40 | debug_ll_io_init(); |
| 41 | iotable_init(hi3620_io_desc, ARRAY_SIZE(hi3620_io_desc)); |
| 42 | } |
| 43 | |
Uwe Kleine-König | 543c504 | 2015-02-18 21:01:45 +0100 | [diff] [blame] | 44 | static const char *const hi3xxx_compat[] __initconst = { |
Haojian Zhuang | 2c7268c | 2013-12-11 15:54:50 +0800 | [diff] [blame] | 45 | "hisilicon,hi3620-hi4511", |
| 46 | NULL, |
| 47 | }; |
| 48 | |
| 49 | DT_MACHINE_START(HI3620, "Hisilicon Hi3620 (Flattened Device Tree)") |
| 50 | .map_io = hi3620_map_io, |
Haojian Zhuang | 2c7268c | 2013-12-11 15:54:50 +0800 | [diff] [blame] | 51 | .dt_compat = hi3xxx_compat, |
Haojian Zhuang | 2c7268c | 2013-12-11 15:54:50 +0800 | [diff] [blame] | 52 | MACHINE_END |