aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-exynos
diff options
context:
space:
mode:
authorKukjin Kim <kgene.kim@samsung.com>2012-02-09 23:13:15 -0500
committerKukjin Kim <kgene.kim@samsung.com>2012-03-15 01:22:06 -0400
commitb3e68fb17a25ffa73610a21bf3974b7297026a0f (patch)
treece69b752ea08d03bef50bec4c831266afadc9a1c /arch/arm/mach-exynos
parent23f16c7b7cb6a5d086254cbf997c13a56c05031e (diff)
ARM: EXYNOS: add support device tree enabled board file for EXYNOS5
This patch adds a new EXYNOS5 compatible device tree enabled board When using this, a corresponding device tree blob which describes the board's properties should be supplied at boot time to the kernel. Cc: Thomas Abraham <thomas.abraham@linaro.org> Cc: Grant Likely <grant.likely@secretlab.ca> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
Diffstat (limited to 'arch/arm/mach-exynos')
-rw-r--r--arch/arm/mach-exynos/Kconfig11
-rw-r--r--arch/arm/mach-exynos/Makefile1
-rw-r--r--arch/arm/mach-exynos/mach-exynos5-dt.c78
3 files changed, 89 insertions, 1 deletions
diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
index a2ed05c4eb46..42f072db1145 100644
--- a/arch/arm/mach-exynos/Kconfig
+++ b/arch/arm/mach-exynos/Kconfig
@@ -362,7 +362,7 @@ config MACH_SMDK4412
362 Machine support for Samsung SMDK4412 362 Machine support for Samsung SMDK4412
363endif 363endif
364 364
365comment "Flattened Device Tree based board for Exynos4 based SoC" 365comment "Flattened Device Tree based board for EXYNOS SoCs"
366 366
367config MACH_EXYNOS4_DT 367config MACH_EXYNOS4_DT
368 bool "Samsung Exynos4 Machine using device tree" 368 bool "Samsung Exynos4 Machine using device tree"
@@ -376,6 +376,15 @@ config MACH_EXYNOS4_DT
376 Note: This is under development and not all peripherals can be supported 376 Note: This is under development and not all peripherals can be supported
377 with this machine file. 377 with this machine file.
378 378
379config MACH_EXYNOS5_DT
380 bool "SAMSUNG EXYNOS5 Machine using device tree"
381 select SOC_EXYNOS5250
382 select USE_OF
383 select ARM_AMBA
384 help
385 Machine support for Samsung Exynos4 machine with device tree enabled.
386 Select this if a fdt blob is available for the EXYNOS4 SoC based board.
387
379if ARCH_EXYNOS4 388if ARCH_EXYNOS4
380 389
381comment "Configuration for HSMMC 8-bit bus width" 390comment "Configuration for HSMMC 8-bit bus width"
diff --git a/arch/arm/mach-exynos/Makefile b/arch/arm/mach-exynos/Makefile
index 7214092b5196..29967efd262a 100644
--- a/arch/arm/mach-exynos/Makefile
+++ b/arch/arm/mach-exynos/Makefile
@@ -42,6 +42,7 @@ obj-$(CONFIG_MACH_SMDK4212) += mach-smdk4x12.o
42obj-$(CONFIG_MACH_SMDK4412) += mach-smdk4x12.o 42obj-$(CONFIG_MACH_SMDK4412) += mach-smdk4x12.o
43 43
44obj-$(CONFIG_MACH_EXYNOS4_DT) += mach-exynos4-dt.o 44obj-$(CONFIG_MACH_EXYNOS4_DT) += mach-exynos4-dt.o
45obj-$(CONFIG_MACH_EXYNOS5_DT) += mach-exynos5-dt.o
45 46
46# device support 47# device support
47 48
diff --git a/arch/arm/mach-exynos/mach-exynos5-dt.c b/arch/arm/mach-exynos/mach-exynos5-dt.c
new file mode 100644
index 000000000000..0d26f50081ad
--- /dev/null
+++ b/arch/arm/mach-exynos/mach-exynos5-dt.c
@@ -0,0 +1,78 @@
1/*
2 * SAMSUNG EXYNOS5250 Flattened Device Tree enabled machine
3 *
4 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * http://www.samsung.com
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10*/
11
12#include <linux/of_platform.h>
13#include <linux/serial_core.h>
14
15#include <asm/mach/arch.h>
16#include <asm/hardware/gic.h>
17#include <mach/map.h>
18
19#include <plat/cpu.h>
20#include <plat/regs-serial.h>
21
22#include "common.h"
23
24/*
25 * The following lookup table is used to override device names when devices
26 * are registered from device tree. This is temporarily added to enable
27 * device tree support addition for the EXYNOS5 architecture.
28 *
29 * For drivers that require platform data to be provided from the machine
30 * file, a platform data pointer can also be supplied along with the
31 * devices names. Usually, the platform data elements that cannot be parsed
32 * from the device tree by the drivers (example: function pointers) are
33 * supplied. But it should be noted that this is a temporary mechanism and
34 * at some point, the drivers should be capable of parsing all the platform
35 * data from the device tree.
36 */
37static const struct of_dev_auxdata exynos5250_auxdata_lookup[] __initconst = {
38 OF_DEV_AUXDATA("samsung,exynos4210-uart", EXYNOS5_PA_UART0,
39 "exynos4210-uart.0", NULL),
40 OF_DEV_AUXDATA("samsung,exynos4210-uart", EXYNOS5_PA_UART1,
41 "exynos4210-uart.1", NULL),
42 OF_DEV_AUXDATA("samsung,exynos4210-uart", EXYNOS5_PA_UART2,
43 "exynos4210-uart.2", NULL),
44 OF_DEV_AUXDATA("samsung,exynos4210-uart", EXYNOS5_PA_UART3,
45 "exynos4210-uart.3", NULL),
46 OF_DEV_AUXDATA("arm,pl330", EXYNOS5_PA_PDMA0, "dma-pl330.0", NULL),
47 OF_DEV_AUXDATA("arm,pl330", EXYNOS5_PA_PDMA1, "dma-pl330.1", NULL),
48 OF_DEV_AUXDATA("arm,pl330", EXYNOS5_PA_PDMA1, "dma-pl330.2", NULL),
49 {},
50};
51
52static void __init exynos5250_dt_map_io(void)
53{
54 exynos_init_io(NULL, 0);
55 s3c24xx_init_clocks(24000000);
56}
57
58static void __init exynos5250_dt_machine_init(void)
59{
60 of_platform_populate(NULL, of_default_bus_match_table,
61 exynos5250_auxdata_lookup, NULL);
62}
63
64static char const *exynos5250_dt_compat[] __initdata = {
65 "samsung,exynos5250",
66 NULL
67};
68
69DT_MACHINE_START(EXYNOS5_DT, "SAMSUNG EXYNOS5 (Flattened Device Tree)")
70 /* Maintainer: Kukjin Kim <kgene.kim@samsung.com> */
71 .init_irq = exynos5_init_irq,
72 .map_io = exynos5250_dt_map_io,
73 .handle_irq = gic_handle_irq,
74 .init_machine = exynos5250_dt_machine_init,
75 .timer = &exynos4_timer,
76 .dt_compat = exynos5250_dt_compat,
77 .restart = exynos5_restart,
78MACHINE_END