[PATCH 03/16] ARM: OMAP: select correct reset_cpu function at runtime

Sascha Hauer s.hauer at pengutronix.de
Fri Nov 22 09:54:30 EST 2013


Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
---
 arch/arm/mach-omap/am33xx_generic.c              |  2 +-
 arch/arm/mach-omap/include/mach/am33xx-generic.h |  2 ++
 arch/arm/mach-omap/include/mach/omap3-generic.h  |  2 ++
 arch/arm/mach-omap/include/mach/omap4-generic.h  |  2 ++
 arch/arm/mach-omap/omap3_generic.c               |  2 +-
 arch/arm/mach-omap/omap4_generic.c               |  2 +-
 arch/arm/mach-omap/omap_generic.c                | 14 ++++++++++++++
 7 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/arch/arm/mach-omap/am33xx_generic.c b/arch/arm/mach-omap/am33xx_generic.c
index 8a883e3..864f210 100644
--- a/arch/arm/mach-omap/am33xx_generic.c
+++ b/arch/arm/mach-omap/am33xx_generic.c
@@ -30,7 +30,7 @@
 #include <mach/am33xx-generic.h>
 #include <mach/gpmc.h>
 
-void __noreturn reset_cpu(unsigned long addr)
+void __noreturn am33xx_reset_cpu(unsigned long addr)
 {
 	writel(AM33XX_PRM_RSTCTRL_RESET, AM33XX_PRM_RSTCTRL);
 
diff --git a/arch/arm/mach-omap/include/mach/am33xx-generic.h b/arch/arm/mach-omap/include/mach/am33xx-generic.h
index 07c72e4..ed77b64 100644
--- a/arch/arm/mach-omap/include/mach/am33xx-generic.h
+++ b/arch/arm/mach-omap/include/mach/am33xx-generic.h
@@ -26,4 +26,6 @@ u32 am33xx_running_in_flash(void);
 u32 am33xx_running_in_sram(void);
 u32 am33xx_running_in_sdram(void);
 
+void __noreturn am33xx_reset_cpu(unsigned long addr);
+
 #endif /* __MACH_AM33XX_GENERIC_H */
diff --git a/arch/arm/mach-omap/include/mach/omap3-generic.h b/arch/arm/mach-omap/include/mach/omap3-generic.h
index a6af2ff..c847bfa 100644
--- a/arch/arm/mach-omap/include/mach/omap3-generic.h
+++ b/arch/arm/mach-omap/include/mach/omap3-generic.h
@@ -23,4 +23,6 @@ u32 omap3_running_in_flash(void);
 u32 omap3_running_in_sram(void);
 u32 omap3_running_in_sdram(void);
 
+void __noreturn omap3_reset_cpu(unsigned long addr);
+
 #endif /* __MACH_OMAP3_GENERIC_H */
diff --git a/arch/arm/mach-omap/include/mach/omap4-generic.h b/arch/arm/mach-omap/include/mach/omap4-generic.h
index 44f5a12..06bc031 100644
--- a/arch/arm/mach-omap/include/mach/omap4-generic.h
+++ b/arch/arm/mach-omap/include/mach/omap4-generic.h
@@ -18,4 +18,6 @@ static inline void omap4_save_bootinfo(uint32_t *info)
 	omap_save_bootinfo(info);
 }
 
+void __noreturn omap4_reset_cpu(unsigned long addr);
+
 #endif /* __MACH_OMAP4_GENERIC_H */
diff --git a/arch/arm/mach-omap/omap3_generic.c b/arch/arm/mach-omap/omap3_generic.c
index 1046417..e53b363 100644
--- a/arch/arm/mach-omap/omap3_generic.c
+++ b/arch/arm/mach-omap/omap3_generic.c
@@ -52,7 +52,7 @@
  *
  * @return void
  */
-void __noreturn reset_cpu(unsigned long addr)
+void __noreturn omap3_reset_cpu(unsigned long addr)
 {
 	writel(OMAP3_PRM_RSTCTRL_RESET, OMAP3_PRM_REG(RSTCTRL));
 
diff --git a/arch/arm/mach-omap/omap4_generic.c b/arch/arm/mach-omap/omap4_generic.c
index 64b0024..58051a3 100644
--- a/arch/arm/mach-omap/omap4_generic.c
+++ b/arch/arm/mach-omap/omap4_generic.c
@@ -34,7 +34,7 @@
 #define EMIF_L3_CONFIG_VAL_SYS_10_LL_0		0x0A0000FF
 #define EMIF_L3_CONFIG_VAL_SYS_10_MPU_3_LL_0	0x0A300000
 
-void __noreturn reset_cpu(unsigned long addr)
+void __noreturn omap4_reset_cpu(unsigned long addr)
 {
 	writel(OMAP44XX_PRM_RSTCTRL_RESET, OMAP44XX_PRM_RSTCTRL);
 
diff --git a/arch/arm/mach-omap/omap_generic.c b/arch/arm/mach-omap/omap_generic.c
index 79e37e2..2c12ad4 100644
--- a/arch/arm/mach-omap/omap_generic.c
+++ b/arch/arm/mach-omap/omap_generic.c
@@ -25,6 +25,9 @@
 #include <mach/am33xx-silicon.h>
 #include <mach/omap3-silicon.h>
 #include <mach/omap4-silicon.h>
+#include <mach/am33xx-generic.h>
+#include <mach/omap3-generic.h>
+#include <mach/omap4-generic.h>
 
 static void *omap_sram_start(void)
 {
@@ -130,3 +133,14 @@ static int omap_env_init(void)
 }
 late_initcall(omap_env_init);
 #endif
+
+void __noreturn reset_cpu(unsigned long addr)
+{
+	if (cpu_is_omap34xx())
+		omap3_reset_cpu(addr);
+	if (cpu_is_omap4xxx())
+		omap4_reset_cpu(addr);
+	if (cpu_is_am33xx())
+		am33xx_reset_cpu(addr);
+	while (1);
+}
-- 
1.8.4.2




More information about the barebox mailing list