1*d2912cb1SThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only 2a9434e96SKevin Hilman /* 3389ee0c2SHaojian Zhuang * (Hisilicon's SoC based) flattened device tree enabled machine 42c7268c7SHaojian Zhuang * 52c7268c7SHaojian Zhuang * Copyright (c) 2012-2013 Hisilicon Ltd. 62c7268c7SHaojian Zhuang * Copyright (c) 2012-2013 Linaro Ltd. 72c7268c7SHaojian Zhuang * 82c7268c7SHaojian Zhuang * Author: Haojian Zhuang <haojian.zhuang@linaro.org> 92c7268c7SHaojian Zhuang */ 102c7268c7SHaojian Zhuang 112c7268c7SHaojian Zhuang #include <linux/clocksource.h> 122c7268c7SHaojian Zhuang #include <linux/irqchip.h> 13a9434e96SKevin Hilman 142c7268c7SHaojian Zhuang #include <asm/mach/arch.h> 152c7268c7SHaojian Zhuang #include <asm/mach/map.h> 162c7268c7SHaojian Zhuang 17a9434e96SKevin Hilman #define HI3620_SYSCTRL_PHYS_BASE 0xfc802000 18a9434e96SKevin Hilman #define HI3620_SYSCTRL_VIRT_BASE 0xfe802000 19a9434e96SKevin Hilman 202c7268c7SHaojian Zhuang /* 212c7268c7SHaojian Zhuang * This table is only for optimization. Since ioremap() could always share 222c7268c7SHaojian Zhuang * the same mapping if it's defined as static IO mapping. 232c7268c7SHaojian Zhuang * 242c7268c7SHaojian Zhuang * Without this table, system could also work. The cost is some virtual address 252c7268c7SHaojian Zhuang * spaces wasted since ioremap() may be called multi times for the same 262c7268c7SHaojian Zhuang * IO space. 272c7268c7SHaojian Zhuang */ 282c7268c7SHaojian Zhuang static struct map_desc hi3620_io_desc[] __initdata = { 292c7268c7SHaojian Zhuang { 30a9434e96SKevin Hilman /* sysctrl */ 31a9434e96SKevin Hilman .pfn = __phys_to_pfn(HI3620_SYSCTRL_PHYS_BASE), 32a9434e96SKevin Hilman .virtual = HI3620_SYSCTRL_VIRT_BASE, 332c7268c7SHaojian Zhuang .length = 0x1000, 342c7268c7SHaojian Zhuang .type = MT_DEVICE, 352c7268c7SHaojian Zhuang }, 362c7268c7SHaojian Zhuang }; 372c7268c7SHaojian Zhuang 382c7268c7SHaojian Zhuang static void __init hi3620_map_io(void) 392c7268c7SHaojian Zhuang { 402c7268c7SHaojian Zhuang debug_ll_io_init(); 412c7268c7SHaojian Zhuang iotable_init(hi3620_io_desc, ARRAY_SIZE(hi3620_io_desc)); 422c7268c7SHaojian Zhuang } 432c7268c7SHaojian Zhuang 44543c5040SUwe Kleine-König static const char *const hi3xxx_compat[] __initconst = { 452c7268c7SHaojian Zhuang "hisilicon,hi3620-hi4511", 462c7268c7SHaojian Zhuang NULL, 472c7268c7SHaojian Zhuang }; 482c7268c7SHaojian Zhuang 492c7268c7SHaojian Zhuang DT_MACHINE_START(HI3620, "Hisilicon Hi3620 (Flattened Device Tree)") 502c7268c7SHaojian Zhuang .map_io = hi3620_map_io, 512c7268c7SHaojian Zhuang .dt_compat = hi3xxx_compat, 522c7268c7SHaojian Zhuang MACHINE_END 53