Commit | Line | Data |
---|---|---|
adbd1ad1 MK |
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 |