diff options
author | Changhwan Youn <chaos.youn@samsung.com> | 2011-10-04 04:08:56 -0400 |
---|---|---|
committer | Kukjin Kim <kgene.kim@samsung.com> | 2011-10-04 05:35:01 -0400 |
commit | e6a275a8f92392f27e3accd6182d52627ef37258 (patch) | |
tree | 3d509a20f244648a439ab15d30abd2c743ed70d2 /arch/arm | |
parent | 3a062281129229b50e06547af3110f8eccd2f4e4 (diff) |
ARM: EXYNOS4: Add support new EXYNOS4412 SoC
This patch adds Samsung EXYNOS4412 SoC support.
The EXYNOS4412 integrates a ARM Cortex A9 quad-core.
Signed-off-by: Changhwan Youn <chaos.youn@samsung.com>
Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/mach-exynos4/Kconfig | 5 | ||||
-rw-r--r-- | arch/arm/mach-exynos4/cpu.c | 4 | ||||
-rw-r--r-- | arch/arm/plat-s5p/cpu.c | 9 | ||||
-rw-r--r-- | arch/arm/plat-samsung/include/plat/cpu.h | 8 |
4 files changed, 24 insertions, 2 deletions
diff --git a/arch/arm/mach-exynos4/Kconfig b/arch/arm/mach-exynos4/Kconfig index c595bb03f417..c255d6f7ec5f 100644 --- a/arch/arm/mach-exynos4/Kconfig +++ b/arch/arm/mach-exynos4/Kconfig | |||
@@ -20,6 +20,11 @@ config SOC_EXYNOS4212 | |||
20 | help | 20 | help |
21 | Enable EXYNOS4212 SoC support | 21 | Enable EXYNOS4212 SoC support |
22 | 22 | ||
23 | config SOC_EXYNOS4412 | ||
24 | bool | ||
25 | help | ||
26 | Enable EXYNOS4412 SoC support | ||
27 | |||
23 | config EXYNOS4_MCT | 28 | config EXYNOS4_MCT |
24 | bool | 29 | bool |
25 | default y | 30 | default y |
diff --git a/arch/arm/mach-exynos4/cpu.c b/arch/arm/mach-exynos4/cpu.c index 35fe8421bc34..940bc12f7547 100644 --- a/arch/arm/mach-exynos4/cpu.c +++ b/arch/arm/mach-exynos4/cpu.c | |||
@@ -191,7 +191,7 @@ void __init exynos4_init_clocks(int xtal) | |||
191 | 191 | ||
192 | if (soc_is_exynos4210()) | 192 | if (soc_is_exynos4210()) |
193 | exynos4210_register_clocks(); | 193 | exynos4210_register_clocks(); |
194 | else if (soc_is_exynos4212()) | 194 | else if (soc_is_exynos4212() || soc_is_exynos4412()) |
195 | exynos4212_register_clocks(); | 195 | exynos4212_register_clocks(); |
196 | 196 | ||
197 | exynos4_register_clocks(); | 197 | exynos4_register_clocks(); |
@@ -255,7 +255,7 @@ static int __init exynos4_l2x0_cache_init(void) | |||
255 | 255 | ||
256 | if (soc_is_exynos4210()) | 256 | if (soc_is_exynos4210()) |
257 | __raw_writel(0x110, S5P_VA_L2CC + L2X0_DATA_LATENCY_CTRL); | 257 | __raw_writel(0x110, S5P_VA_L2CC + L2X0_DATA_LATENCY_CTRL); |
258 | else if (soc_is_exynos4212()) | 258 | else if (soc_is_exynos4212() || soc_is_exynos4412()) |
259 | __raw_writel(0x120, S5P_VA_L2CC + L2X0_DATA_LATENCY_CTRL); | 259 | __raw_writel(0x120, S5P_VA_L2CC + L2X0_DATA_LATENCY_CTRL); |
260 | 260 | ||
261 | /* L2X0 Prefetch Control */ | 261 | /* L2X0 Prefetch Control */ |
diff --git a/arch/arm/plat-s5p/cpu.c b/arch/arm/plat-s5p/cpu.c index 909507bae2fa..7b0a28f73a68 100644 --- a/arch/arm/plat-s5p/cpu.c +++ b/arch/arm/plat-s5p/cpu.c | |||
@@ -34,6 +34,7 @@ static const char name_s5pc100[] = "S5PC100"; | |||
34 | static const char name_s5pv210[] = "S5PV210/S5PC110"; | 34 | static const char name_s5pv210[] = "S5PV210/S5PC110"; |
35 | static const char name_exynos4210[] = "EXYNOS4210"; | 35 | static const char name_exynos4210[] = "EXYNOS4210"; |
36 | static const char name_exynos4212[] = "EXYNOS4212"; | 36 | static const char name_exynos4212[] = "EXYNOS4212"; |
37 | static const char name_exynos4412[] = "EXYNOS4412"; | ||
37 | 38 | ||
38 | static struct cpu_table cpu_ids[] __initdata = { | 39 | static struct cpu_table cpu_ids[] __initdata = { |
39 | { | 40 | { |
@@ -84,6 +85,14 @@ static struct cpu_table cpu_ids[] __initdata = { | |||
84 | .init_uarts = exynos4_init_uarts, | 85 | .init_uarts = exynos4_init_uarts, |
85 | .init = exynos4_init, | 86 | .init = exynos4_init, |
86 | .name = name_exynos4212, | 87 | .name = name_exynos4212, |
88 | }, { | ||
89 | .idcode = EXYNOS4412_CPU_ID, | ||
90 | .idmask = EXYNOS4_CPU_MASK, | ||
91 | .map_io = exynos4_map_io, | ||
92 | .init_clocks = exynos4_init_clocks, | ||
93 | .init_uarts = exynos4_init_uarts, | ||
94 | .init = exynos4_init, | ||
95 | .name = name_exynos4412, | ||
87 | }, | 96 | }, |
88 | }; | 97 | }; |
89 | 98 | ||
diff --git a/arch/arm/plat-samsung/include/plat/cpu.h b/arch/arm/plat-samsung/include/plat/cpu.h index 1bbbbb420be7..54f370f0fc07 100644 --- a/arch/arm/plat-samsung/include/plat/cpu.h +++ b/arch/arm/plat-samsung/include/plat/cpu.h | |||
@@ -40,6 +40,7 @@ extern unsigned long samsung_cpu_id; | |||
40 | 40 | ||
41 | #define EXYNOS4210_CPU_ID 0x43210000 | 41 | #define EXYNOS4210_CPU_ID 0x43210000 |
42 | #define EXYNOS4212_CPU_ID 0x43220000 | 42 | #define EXYNOS4212_CPU_ID 0x43220000 |
43 | #define EXYNOS4412_CPU_ID 0xE4412200 | ||
43 | #define EXYNOS4_CPU_MASK 0xFFFE0000 | 44 | #define EXYNOS4_CPU_MASK 0xFFFE0000 |
44 | 45 | ||
45 | #define IS_SAMSUNG_CPU(name, id, mask) \ | 46 | #define IS_SAMSUNG_CPU(name, id, mask) \ |
@@ -56,6 +57,7 @@ IS_SAMSUNG_CPU(s5pc100, S5PC100_CPU_ID, S5PC100_CPU_MASK) | |||
56 | IS_SAMSUNG_CPU(s5pv210, S5PV210_CPU_ID, S5PV210_CPU_MASK) | 57 | IS_SAMSUNG_CPU(s5pv210, S5PV210_CPU_ID, S5PV210_CPU_MASK) |
57 | IS_SAMSUNG_CPU(exynos4210, EXYNOS4210_CPU_ID, EXYNOS4_CPU_MASK) | 58 | IS_SAMSUNG_CPU(exynos4210, EXYNOS4210_CPU_ID, EXYNOS4_CPU_MASK) |
58 | IS_SAMSUNG_CPU(exynos4212, EXYNOS4212_CPU_ID, EXYNOS4_CPU_MASK) | 59 | IS_SAMSUNG_CPU(exynos4212, EXYNOS4212_CPU_ID, EXYNOS4_CPU_MASK) |
60 | IS_SAMSUNG_CPU(exynos4412, EXYNOS4412_CPU_ID, EXYNOS4_CPU_MASK) | ||
59 | 61 | ||
60 | #if defined(CONFIG_CPU_S3C2410) || defined(CONFIG_CPU_S3C2412) || \ | 62 | #if defined(CONFIG_CPU_S3C2410) || defined(CONFIG_CPU_S3C2412) || \ |
61 | defined(CONFIG_CPU_S3C2416) || defined(CONFIG_CPU_S3C2440) || \ | 63 | defined(CONFIG_CPU_S3C2416) || defined(CONFIG_CPU_S3C2440) || \ |
@@ -108,6 +110,12 @@ IS_SAMSUNG_CPU(exynos4212, EXYNOS4212_CPU_ID, EXYNOS4_CPU_MASK) | |||
108 | # define soc_is_exynos4212() 0 | 110 | # define soc_is_exynos4212() 0 |
109 | #endif | 111 | #endif |
110 | 112 | ||
113 | #if defined(CONFIG_SOC_EXYNOS4412) | ||
114 | # define soc_is_exynos4412() is_samsung_exynos4412() | ||
115 | #else | ||
116 | # define soc_is_exynos4412() 0 | ||
117 | #endif | ||
118 | |||
111 | #define EXYNOS4210_REV_0 (0x0) | 119 | #define EXYNOS4210_REV_0 (0x0) |
112 | #define EXYNOS4210_REV_1_0 (0x10) | 120 | #define EXYNOS4210_REV_1_0 (0x10) |
113 | #define EXYNOS4210_REV_1_1 (0x11) | 121 | #define EXYNOS4210_REV_1_1 (0x11) |