summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-omap')
-rw-r--r--arch/arm/mach-omap/am33xx_generic.c7
-rw-r--r--arch/arm/mach-omap/include/mach/am33xx-generic.h2
-rw-r--r--arch/arm/mach-omap/include/mach/omap3-generic.h2
-rw-r--r--arch/arm/mach-omap/include/mach/omap4-generic.h2
-rw-r--r--arch/arm/mach-omap/omap3_generic.c8
-rw-r--r--arch/arm/mach-omap/omap4_generic.c7
-rw-r--r--arch/arm/mach-omap/omap_generic.c11
7 files changed, 15 insertions, 24 deletions
diff --git a/arch/arm/mach-omap/am33xx_generic.c b/arch/arm/mach-omap/am33xx_generic.c
index 7ce32f01e1..ae0ee585a8 100644
--- a/arch/arm/mach-omap/am33xx_generic.c
+++ b/arch/arm/mach-omap/am33xx_generic.c
@@ -19,6 +19,7 @@
#include <init.h>
#include <io.h>
#include <net.h>
+#include <restart.h>
#include <asm/barebox-arm.h>
#include <mach/am33xx-silicon.h>
#include <mach/am33xx-clock.h>
@@ -28,11 +29,11 @@
#include <mach/gpmc.h>
#include <reset_source.h>
-void __noreturn am33xx_reset_cpu(unsigned long addr)
+static void __noreturn am33xx_restart_soc(struct restart_handler *rst)
{
writel(AM33XX_PRM_RSTCTRL_RESET, AM33XX_PRM_RSTCTRL);
- while (1);
+ hang();
}
/**
@@ -243,6 +244,8 @@ int am33xx_init(void)
{
omap_gpmc_base = (void *)AM33XX_GPMC_BASE;
+ restart_handler_register_fn(am33xx_restart_soc);
+
am33xx_enable_per_clocks();
if (IS_ENABLED(CONFIG_RESET_SOURCE))
diff --git a/arch/arm/mach-omap/include/mach/am33xx-generic.h b/arch/arm/mach-omap/include/mach/am33xx-generic.h
index 03418b053b..7e64e74d5c 100644
--- a/arch/arm/mach-omap/include/mach/am33xx-generic.h
+++ b/arch/arm/mach-omap/include/mach/am33xx-generic.h
@@ -28,8 +28,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);
-
void am33xx_enable_per_clocks(void);
int am33xx_init(void);
int am33xx_devices_init(void);
diff --git a/arch/arm/mach-omap/include/mach/omap3-generic.h b/arch/arm/mach-omap/include/mach/omap3-generic.h
index ab53b98971..177862e4b1 100644
--- a/arch/arm/mach-omap/include/mach/omap3-generic.h
+++ b/arch/arm/mach-omap/include/mach/omap3-generic.h
@@ -24,8 +24,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);
-
int omap3_init(void);
int omap3_devices_init(void);
diff --git a/arch/arm/mach-omap/include/mach/omap4-generic.h b/arch/arm/mach-omap/include/mach/omap4-generic.h
index e246e360e5..7ec41d880b 100644
--- a/arch/arm/mach-omap/include/mach/omap4-generic.h
+++ b/arch/arm/mach-omap/include/mach/omap4-generic.h
@@ -18,8 +18,6 @@ static inline void omap4_save_bootinfo(uint32_t *info)
memcpy((void *)OMAP44XX_SRAM_SCRATCH_SPACE, info, 3 * sizeof(uint32_t));
}
-void __noreturn omap4_reset_cpu(unsigned long addr);
-
int omap4_init(void);
int omap4_devices_init(void);
diff --git a/arch/arm/mach-omap/omap3_generic.c b/arch/arm/mach-omap/omap3_generic.c
index 0f2e9ce6b7..5c29feaeb4 100644
--- a/arch/arm/mach-omap/omap3_generic.c
+++ b/arch/arm/mach-omap/omap3_generic.c
@@ -31,6 +31,7 @@
#include <bootsource.h>
#include <init.h>
#include <io.h>
+#include <restart.h>
#include <mach/omap3-silicon.h>
#include <mach/gpmc.h>
#include <mach/generic.h>
@@ -52,13 +53,12 @@
*
* @return void
*/
-void __noreturn omap3_reset_cpu(unsigned long addr)
+static void __noreturn omap3_restart_soc(struct restart_handler *rst)
{
writel(OMAP3_PRM_RSTCTRL_RESET, OMAP3_PRM_REG(RSTCTRL));
- while (1);
+ hang();
}
-EXPORT_SYMBOL(reset_cpu);
/**
* @brief Low level CPU type
@@ -490,6 +490,8 @@ int omap3_init(void)
{
omap_gpmc_base = (void *)OMAP3_GPMC_BASE;
+ restart_handler_register_fn(omap3_restart_soc);
+
return omap3_bootsource();
}
diff --git a/arch/arm/mach-omap/omap4_generic.c b/arch/arm/mach-omap/omap4_generic.c
index 0b683da181..a3f370df8f 100644
--- a/arch/arm/mach-omap/omap4_generic.c
+++ b/arch/arm/mach-omap/omap4_generic.c
@@ -1,6 +1,7 @@
#include <common.h>
#include <bootsource.h>
#include <init.h>
+#include <restart.h>
#include <io.h>
#include <mach/omap4-clock.h>
#include <mach/omap4-silicon.h>
@@ -34,11 +35,11 @@
#define EMIF_L3_CONFIG_VAL_SYS_10_LL_0 0x0A0000FF
#define EMIF_L3_CONFIG_VAL_SYS_10_MPU_3_LL_0 0x0A300000
-void __noreturn omap4_reset_cpu(unsigned long addr)
+static void __noreturn omap4_restart_soc(struct restart_handler *rst)
{
writel(OMAP44XX_PRM_RSTCTRL_RESET, OMAP44XX_PRM_RSTCTRL);
- while (1);
+ hang();
}
void omap4_set_warmboot_order(u32 *device_list)
@@ -533,6 +534,8 @@ int omap4_init(void)
{
omap_gpmc_base = (void *)OMAP44XX_GPMC_BASE;
+ restart_handler_register_fn(omap4_restart_soc);
+
return omap4_bootsource();
}
diff --git a/arch/arm/mach-omap/omap_generic.c b/arch/arm/mach-omap/omap_generic.c
index 334cf8db56..165487c645 100644
--- a/arch/arm/mach-omap/omap_generic.c
+++ b/arch/arm/mach-omap/omap_generic.c
@@ -150,17 +150,6 @@ static int omap_env_init(void)
late_initcall(omap_env_init);
#endif
-void __noreturn reset_cpu(unsigned long addr)
-{
- if (cpu_is_omap3())
- omap3_reset_cpu(addr);
- if (cpu_is_omap4())
- omap4_reset_cpu(addr);
- if (cpu_is_am33xx())
- am33xx_reset_cpu(addr);
- while (1);
-}
-
static int omap_soc_from_dt(void)
{
if (of_machine_is_compatible("ti,am33xx"))