1 /* 2 * Samsung's S5PC110/S5PV210 flattened device tree enabled machine. 3 * 4 * Copyright (c) 2013-2014 Samsung Electronics Co., Ltd. 5 * Mateusz Krawczuk <m.krawczuk@partner.samsung.com> 6 * Tomasz Figa <t.figa@samsung.com> 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License version 2 as 10 * published by the Free Software Foundation. 11 */ 12 13 #include <linux/of_fdt.h> 14 #include <linux/of_platform.h> 15 16 #include <asm/mach/arch.h> 17 #include <asm/mach/map.h> 18 #include <asm/system_misc.h> 19 20 #include <plat/map-base.h> 21 #include <mach/regs-clock.h> 22 23 static int __init s5pv210_fdt_map_sys(unsigned long node, const char *uname, 24 int depth, void *data) 25 { 26 struct map_desc iodesc; 27 const __be32 *reg; 28 int len; 29 30 if (!of_flat_dt_is_compatible(node, "samsung,s5pv210-clock")) 31 return 0; 32 33 reg = of_get_flat_dt_prop(node, "reg", &len); 34 if (reg == NULL || len != (sizeof(unsigned long) * 2)) 35 return 0; 36 37 iodesc.pfn = __phys_to_pfn(be32_to_cpu(reg[0])); 38 iodesc.length = be32_to_cpu(reg[1]) - 1; 39 iodesc.virtual = (unsigned long)S3C_VA_SYS; 40 iodesc.type = MT_DEVICE; 41 iotable_init(&iodesc, 1); 42 43 return 1; 44 } 45 46 static void __init s5pv210_dt_map_io(void) 47 { 48 debug_ll_io_init(); 49 50 of_scan_flat_dt(s5pv210_fdt_map_sys, NULL); 51 } 52 53 static void s5pv210_dt_restart(enum reboot_mode mode, const char *cmd) 54 { 55 __raw_writel(0x1, S5P_SWRESET); 56 } 57 58 static char const *s5pv210_dt_compat[] __initconst = { 59 "samsung,s5pc110", 60 "samsung,s5pv210", 61 NULL 62 }; 63 64 DT_MACHINE_START(S5PV210_DT, "Samsung S5PC110/S5PV210-based board") 65 .dt_compat = s5pv210_dt_compat, 66 .map_io = s5pv210_dt_map_io, 67 .restart = s5pv210_dt_restart, 68 MACHINE_END 69