diff mbox

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

Message ID 1460998717-10052-1-git-send-email-ta.omasab@gmail.com
State Changes Requested
Delegated to: Minkyu Kang
Headers show

Commit Message

Thomas Abraham April 18, 2016, 4:58 p.m. UTC
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(-)

Comments

Simon Glass April 20, 2016, 2:41 p.m. UTC | #1
On 18 April 2016 at 10:58, Thomas Abraham <ta.omasab@gmail.com> wrote:
> 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
>


Reviewed-by: Simon Glass <sjg@chromium.org>
diff mbox

Patch

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