Thomas Abraham | 6b5ab4f | 2011-11-06 21:54:27 +0530 | [diff] [blame] | 1 | /* |
Tomasz Figa | 3579a58 | 2012-09-21 10:13:29 +0900 | [diff] [blame] | 2 | * Samsung's EXYNOS4 flattened device tree enabled machine |
Thomas Abraham | 6b5ab4f | 2011-11-06 21:54:27 +0530 | [diff] [blame] | 3 | * |
| 4 | * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd. |
| 5 | * http://www.samsung.com |
| 6 | * Copyright (c) 2010-2011 Linaro Ltd. |
| 7 | * www.linaro.org |
| 8 | * |
| 9 | * This program is free software; you can redistribute it and/or modify |
| 10 | * it under the terms of the GNU General Public License version 2 as |
| 11 | * published by the Free Software Foundation. |
| 12 | */ |
| 13 | |
Thomas Abraham | ee6c713 | 2013-03-09 17:10:23 +0900 | [diff] [blame^] | 14 | #include <linux/kernel.h> |
Thomas Abraham | 6b5ab4f | 2011-11-06 21:54:27 +0530 | [diff] [blame] | 15 | #include <linux/of_platform.h> |
Sachin Kamat | 20901f7 | 2013-02-08 13:58:17 -0800 | [diff] [blame] | 16 | #include <linux/of_fdt.h> |
Thomas Abraham | 6b5ab4f | 2011-11-06 21:54:27 +0530 | [diff] [blame] | 17 | #include <linux/serial_core.h> |
Sachin Kamat | 20901f7 | 2013-02-08 13:58:17 -0800 | [diff] [blame] | 18 | #include <linux/memblock.h> |
Thomas Abraham | 9fbf0c8 | 2013-03-09 16:10:03 +0900 | [diff] [blame] | 19 | #include <linux/clocksource.h> |
Thomas Abraham | 6b5ab4f | 2011-11-06 21:54:27 +0530 | [diff] [blame] | 20 | |
| 21 | #include <asm/mach/arch.h> |
Sachin Kamat | 20901f7 | 2013-02-08 13:58:17 -0800 | [diff] [blame] | 22 | #include <plat/mfc.h> |
Karol Lewandowski | 35bded8 | 2012-02-08 11:42:39 +0900 | [diff] [blame] | 23 | |
| 24 | #include "common.h" |
Thomas Abraham | 6b5ab4f | 2011-11-06 21:54:27 +0530 | [diff] [blame] | 25 | |
Tomasz Figa | 3579a58 | 2012-09-21 10:13:29 +0900 | [diff] [blame] | 26 | static void __init exynos4_dt_map_io(void) |
Thomas Abraham | 6b5ab4f | 2011-11-06 21:54:27 +0530 | [diff] [blame] | 27 | { |
Karol Lewandowski | 35bded8 | 2012-02-08 11:42:39 +0900 | [diff] [blame] | 28 | exynos_init_io(NULL, 0); |
Thomas Abraham | 6b5ab4f | 2011-11-06 21:54:27 +0530 | [diff] [blame] | 29 | } |
| 30 | |
Tomasz Figa | 3579a58 | 2012-09-21 10:13:29 +0900 | [diff] [blame] | 31 | static void __init exynos4_dt_machine_init(void) |
Thomas Abraham | 6b5ab4f | 2011-11-06 21:54:27 +0530 | [diff] [blame] | 32 | { |
Thomas Abraham | ee6c713 | 2013-03-09 17:10:23 +0900 | [diff] [blame^] | 33 | of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); |
Thomas Abraham | 6b5ab4f | 2011-11-06 21:54:27 +0530 | [diff] [blame] | 34 | } |
| 35 | |
Tomasz Figa | 3579a58 | 2012-09-21 10:13:29 +0900 | [diff] [blame] | 36 | static char const *exynos4_dt_compat[] __initdata = { |
Thomas Abraham | 6b5ab4f | 2011-11-06 21:54:27 +0530 | [diff] [blame] | 37 | "samsung,exynos4210", |
Tomasz Figa | 0f7238a | 2012-11-06 15:09:04 +0900 | [diff] [blame] | 38 | "samsung,exynos4212", |
| 39 | "samsung,exynos4412", |
Thomas Abraham | 6b5ab4f | 2011-11-06 21:54:27 +0530 | [diff] [blame] | 40 | NULL |
| 41 | }; |
| 42 | |
Sachin Kamat | 20901f7 | 2013-02-08 13:58:17 -0800 | [diff] [blame] | 43 | static void __init exynos4_reserve(void) |
| 44 | { |
| 45 | #ifdef CONFIG_S5P_DEV_MFC |
| 46 | struct s5p_mfc_dt_meminfo mfc_mem; |
| 47 | |
| 48 | /* Reserve memory for MFC only if it's available */ |
| 49 | mfc_mem.compatible = "samsung,mfc-v5"; |
| 50 | if (of_scan_flat_dt(s5p_fdt_find_mfc_mem, &mfc_mem)) |
| 51 | s5p_mfc_reserve_mem(mfc_mem.roff, mfc_mem.rsize, mfc_mem.loff, |
| 52 | mfc_mem.lsize); |
| 53 | #endif |
| 54 | } |
Thomas Abraham | 6b5ab4f | 2011-11-06 21:54:27 +0530 | [diff] [blame] | 55 | DT_MACHINE_START(EXYNOS4210_DT, "Samsung Exynos4 (Flattened Device Tree)") |
| 56 | /* Maintainer: Thomas Abraham <thomas.abraham@linaro.org> */ |
Tomasz Figa | 61ef3c0 | 2012-10-22 08:16:44 +0900 | [diff] [blame] | 57 | .smp = smp_ops(exynos_smp_ops), |
Thomas Abraham | 6b5ab4f | 2011-11-06 21:54:27 +0530 | [diff] [blame] | 58 | .init_irq = exynos4_init_irq, |
Tomasz Figa | 3579a58 | 2012-09-21 10:13:29 +0900 | [diff] [blame] | 59 | .map_io = exynos4_dt_map_io, |
Tomasz Figa | 3579a58 | 2012-09-21 10:13:29 +0900 | [diff] [blame] | 60 | .init_machine = exynos4_dt_machine_init, |
Shawn Guo | bb13fab | 2012-04-26 10:35:40 +0800 | [diff] [blame] | 61 | .init_late = exynos_init_late, |
Thomas Abraham | 6923ae4 | 2013-03-09 17:03:29 +0900 | [diff] [blame] | 62 | .init_time = exynos_init_time, |
Tomasz Figa | 3579a58 | 2012-09-21 10:13:29 +0900 | [diff] [blame] | 63 | .dt_compat = exynos4_dt_compat, |
Karol Lewandowski | 35bded8 | 2012-02-08 11:42:39 +0900 | [diff] [blame] | 64 | .restart = exynos4_restart, |
Sachin Kamat | 20901f7 | 2013-02-08 13:58:17 -0800 | [diff] [blame] | 65 | .reserve = exynos4_reserve, |
Thomas Abraham | 6b5ab4f | 2011-11-06 21:54:27 +0530 | [diff] [blame] | 66 | MACHINE_END |