[U-Boot] [PATCH v2 7/9] arm: exynos: realign the code to allow support for newer 64-bit platforms

Thomas Abraham
2016-04-18T16:58:37Z

From: Thomas Abraham <thomas.ab@samsung.com>

The existing Exynos 32-bit platform support needs to be realigned in
order to support newer 64-bit Exynos platforms. The driver model will
be utlized for drivers on the 64-bit Exynos platforms and so some of
the older platform support code would not be required for the newer
64-bit Exynos platforms.

Cc: Minkyu Kang <mk7.kang@samsung.com>
Signed-off-by: Thomas Abraham <thomas.ab@samsung.com>
---
arch/arm/Kconfig | 1 -
arch/arm/mach-exynos/Kconfig | 14 ++++++++++++++
arch/arm/mach-exynos/Makefile | 5 +++--
arch/arm/mach-exynos/include/mach/cpu.h | 2 +-
arch/arm/mach-exynos/include/mach/gpio.h | 2 +-
arch/arm/mach-exynos/soc.c | 2 ++
6 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index b82ec18..ee22a3c 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -426,7 +426,6 @@ config TARGET_BCMNSP

config ARCH_EXYNOS
bool "Samsung EXYNOS"
- select CPU_V7
select DM
select DM_SPI_FLASH
select DM_SERIAL
diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
index a6a7597..acab947 100644
--- a/arch/arm/mach-exynos/Kconfig
+++ b/arch/arm/mach-exynos/Kconfig
@@ -7,30 +7,38 @@ choice
config TARGET_SMDKV310
select SUPPORT_SPL
bool "Exynos4210 SMDKV310 board"
+ select CPU_V7
select OF_CONTROL

config TARGET_TRATS
bool "Exynos4210 Trats board"
+ select CPU_V7

config TARGET_S5PC210_UNIVERSAL
bool "EXYNOS4210 Universal C210 board"
+ select CPU_V7

config TARGET_ORIGEN
bool "Exynos4412 Origen board"
+ select CPU_V7
select SUPPORT_SPL

config TARGET_TRATS2
bool "Exynos4412 Trat2 board"
+ select CPU_V7

config TARGET_ODROID
bool "Exynos4412 Odroid board"
+ select CPU_V7

config TARGET_ODROID_XU3
bool "Exynos5422 Odroid board"
+ select CPU_V7
select OF_CONTROL

config TARGET_ARNDALE
bool "Exynos5250 Arndale board"
+ select CPU_V7
select CPU_V7_HAS_NONSEC
select CPU_V7_HAS_VIRT
select SUPPORT_SPL
@@ -38,32 +46,38 @@ config TARGET_ARNDALE

config TARGET_SMDK5250
bool "SMDK5250 board"
+ select CPU_V7
select SUPPORT_SPL
select OF_CONTROL

config TARGET_SNOW
bool "Snow board"
+ select CPU_V7
select SUPPORT_SPL
select OF_CONTROL

config TARGET_SPRING
bool "Spring board"
+ select CPU_V7
select SUPPORT_SPL
select OF_CONTROL
select SPL_DISABLE_OF_CONTROL

config TARGET_SMDK5420
bool "SMDK5420 board"
+ select CPU_V7
select SUPPORT_SPL
select OF_CONTROL

config TARGET_PEACH_PI
bool "Peach Pi board"
+ select CPU_V7
select SUPPORT_SPL
select OF_CONTROL

config TARGET_PEACH_PIT
bool "Peach Pit board"
+ select CPU_V7
select SUPPORT_SPL
select OF_CONTROL

diff --git a/arch/arm/mach-exynos/Makefile b/arch/arm/mach-exynos/Makefile
index 8542f89..f3c07b7 100644
--- a/arch/arm/mach-exynos/Makefile
+++ b/arch/arm/mach-exynos/Makefile
@@ -5,7 +5,8 @@
# SPDX-License-Identifier: GPL-2.0+
#

-obj-y += clock.o power.o soc.o system.o pinmux.o tzpc.o
+obj-y += soc.o
+obj-$(CONFIG_CPU_V7) += clock.o pinmux.o power.o system.o

obj-$(CONFIG_EXYNOS5420) += sec_boot.o

@@ -13,6 +14,6 @@ ifdef CONFIG_SPL_BUILD
obj-$(CONFIG_EXYNOS5) += clock_init_exynos5.o
obj-$(CONFIG_EXYNOS5) += dmc_common.o dmc_init_ddr3.o
obj-$(CONFIG_EXYNOS4210)+= dmc_init_exynos4.o clock_init_exynos4.o
-obj-y += spl_boot.o
+obj-y += spl_boot.o tzpc.o
obj-y += lowlevel_init.o
endif
diff --git a/arch/arm/mach-exynos/include/mach/cpu.h b/arch/arm/mach-exynos/include/mach/cpu.h
index 14a1692..f12e3d6 100644
--- a/arch/arm/mach-exynos/include/mach/cpu.h
+++ b/arch/arm/mach-exynos/include/mach/cpu.h
@@ -270,7 +270,7 @@ IS_EXYNOS_TYPE(exynos5420, 0x5420)
IS_EXYNOS_TYPE(exynos5422, 0x5422)

#define SAMSUNG_BASE(device, base) \
-static inline unsigned int __attribute__((no_instrument_function)) \
+static inline unsigned long __attribute__((no_instrument_function)) \
samsung_get_base_##device(void) \
{ \
if (cpu_is_exynos4()) { \
diff --git a/arch/arm/mach-exynos/include/mach/gpio.h b/arch/arm/mach-exynos/include/mach/gpio.h
index 7fc8e61..81363bd 100644
--- a/arch/arm/mach-exynos/include/mach/gpio.h
+++ b/arch/arm/mach-exynos/include/mach/gpio.h
@@ -1349,7 +1349,7 @@ enum exynos5420_gpio_pin {
};

struct gpio_info {
- unsigned int reg_addr; /* Address of register for this part */
+ unsigned long reg_addr; /* Address of register for this part */
unsigned int max_gpio; /* Maximum GPIO in this part */
};

diff --git a/arch/arm/mach-exynos/soc.c b/arch/arm/mach-exynos/soc.c
index 0f116b1..737a8dd 100644
--- a/arch/arm/mach-exynos/soc.c
+++ b/arch/arm/mach-exynos/soc.c
@@ -11,7 +11,9 @@

void reset_cpu(ulong addr)
{
+#ifdef CONFIG_CPU_V7
writel(0x1, samsung_get_base_swreset());
+#endif
}

#ifndef CONFIG_SYS_DCACHE_OFF
--
1.6.6.rc2