[PATCH 10/12] ARM: restart: EXYNOS: use new restart hook
Kukjin Kim
kgene.kim at samsung.com
Tue Dec 20 20:42:14 EST 2011
Kukjin Kim wrote:
>
> From: Russell King <rmk+kernel at arm.linux.org.uk>
>
> Hook these platforms restart code into the new restart hook rather
> than using arch_reset().
>
> Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
> [kgene.kim at samsung.com: according to local header, updated]
> Signed-off-by: Kukjin Kim <kgene.kim at samsung.com>
> ---
> arch/arm/mach-exynos/common.c | 7 +----
> arch/arm/mach-exynos/common.h | 2 +
> arch/arm/mach-exynos/include/mach/system.h | 2 -
> arch/arm/mach-exynos/mach-armlex4210.c | 1 +
> arch/arm/mach-exynos/mach-nuri.c | 1 +
> arch/arm/mach-exynos/mach-origen.c | 1 +
> arch/arm/mach-exynos/mach-smdk4x12.c | 2 +
> arch/arm/mach-exynos/mach-smdkv310.c | 2 +
> arch/arm/mach-exynos/mach-universal_c210.c | 1 +
> arch/arm/plat-samsung/include/plat/reset.h | 16 -----------
> arch/arm/plat-samsung/include/plat/system-reset.h | 31 ---------------------
> 11 files changed, 11 insertions(+), 55 deletions(-)
> delete mode 100644 arch/arm/plat-samsung/include/plat/reset.h
> delete mode 100644 arch/arm/plat-samsung/include/plat/system-reset.h
>
> diff --git a/arch/arm/mach-exynos/common.c b/arch/arm/mach-exynos/common.c
> index 8eb2293..5de4214 100644
> --- a/arch/arm/mach-exynos/common.c
> +++ b/arch/arm/mach-exynos/common.c
> @@ -33,7 +33,6 @@
> #include <plat/clock.h>
> #include <plat/devs.h>
> #include <plat/pm.h>
> -#include <plat/reset.h>
> #include <plat/sdhci.h>
> #include <plat/gpio-cfg.h>
> #include <plat/adc-core.h>
> @@ -213,7 +212,7 @@ static void exynos_idle(void)
> local_irq_enable();
> }
>
> -static void exynos4_sw_reset(void)
> +void exynos4_restart(char mode, const char *cmd)
> {
> __raw_writel(0x1, S5P_SWRESET);
> }
> @@ -462,10 +461,6 @@ int __init exynos_init(void)
> /* set idle function */
> pm_idle = exynos_idle;
>
> - /* set sw_reset function */
> - if (soc_is_exynos4210() || soc_is_exynos4212() || soc_is_exynos4412())
> - s5p_reset_hook = exynos4_sw_reset;
> -
> return sysdev_register(&exynos4_sysdev);
> }
>
> diff --git a/arch/arm/mach-exynos/common.h b/arch/arm/mach-exynos/common.h
> index 0476c5f..1ac49de 100644
> --- a/arch/arm/mach-exynos/common.h
> +++ b/arch/arm/mach-exynos/common.h
> @@ -21,6 +21,8 @@ void exynos4_setup_clocks(void);
> void exynos4210_register_clocks(void);
> void exynos4212_register_clocks(void);
>
> +void exynos4_restart(char mode, const char *cmd);
> +
> extern struct sys_timer exynos4_timer;
>
> #ifdef CONFIG_ARCH_EXYNOS
> diff --git a/arch/arm/mach-exynos/include/mach/system.h b/arch/arm/mach-exynos/include/mach/system.h
> index 5e3220c..0063a6d 100644
> --- a/arch/arm/mach-exynos/include/mach/system.h
> +++ b/arch/arm/mach-exynos/include/mach/system.h
> @@ -13,8 +13,6 @@
> #ifndef __ASM_ARCH_SYSTEM_H
> #define __ASM_ARCH_SYSTEM_H __FILE__
>
> -#include <plat/system-reset.h>
> -
> static void arch_idle(void)
> {
> /* nothing here yet */
> diff --git a/arch/arm/mach-exynos/mach-armlex4210.c b/arch/arm/mach-exynos/mach-armlex4210.c
> index b1807c4..d726fcd 100644
> --- a/arch/arm/mach-exynos/mach-armlex4210.c
> +++ b/arch/arm/mach-exynos/mach-armlex4210.c
> @@ -215,4 +215,5 @@ MACHINE_START(ARMLEX4210, "ARMLEX4210")
> .handle_irq = gic_handle_irq,
> .init_machine = armlex4210_machine_init,
> .timer = &exynos4_timer,
> + .restart = exynos4_restart,
> MACHINE_END
> diff --git a/arch/arm/mach-exynos/mach-nuri.c b/arch/arm/mach-exynos/mach-nuri.c
> index a6ecdbc..635fb97 100644
> --- a/arch/arm/mach-exynos/mach-nuri.c
> +++ b/arch/arm/mach-exynos/mach-nuri.c
> @@ -1339,4 +1339,5 @@ MACHINE_START(NURI, "NURI")
> .init_machine = nuri_machine_init,
> .timer = &exynos4_timer,
> .reserve = &nuri_reserve,
> + .restart = exynos4_restart,
> MACHINE_END
> diff --git a/arch/arm/mach-exynos/mach-origen.c b/arch/arm/mach-exynos/mach-origen.c
> index ea35806..586eb99 100644
> --- a/arch/arm/mach-exynos/mach-origen.c
> +++ b/arch/arm/mach-exynos/mach-origen.c
> @@ -700,4 +700,5 @@ MACHINE_START(ORIGEN, "ORIGEN")
> .init_machine = origen_machine_init,
> .timer = &exynos4_timer,
> .reserve = &origen_reserve,
> + .restart = exynos4_restart,
> MACHINE_END
> diff --git a/arch/arm/mach-exynos/mach-smdk4x12.c b/arch/arm/mach-exynos/mach-smdk4x12.c
> index 3b1a9f0..d00e4f0 100644
> --- a/arch/arm/mach-exynos/mach-smdk4x12.c
> +++ b/arch/arm/mach-exynos/mach-smdk4x12.c
> @@ -292,6 +292,7 @@ MACHINE_START(SMDK4212, "SMDK4212")
> .handle_irq = gic_handle_irq,
> .init_machine = smdk4x12_machine_init,
> .timer = &exynos4_timer,
> + .restart = exynos4_restart,
> MACHINE_END
>
> MACHINE_START(SMDK4412, "SMDK4412")
> @@ -303,4 +304,5 @@ MACHINE_START(SMDK4412, "SMDK4412")
> .handle_irq = gic_handle_irq,
> .init_machine = smdk4x12_machine_init,
> .timer = &exynos4_timer,
> + .restart = exynos4_restart,
> MACHINE_END
> diff --git a/arch/arm/mach-exynos/mach-smdkv310.c b/arch/arm/mach-exynos/mach-smdkv310.c
> index c9e331e..5b36561 100644
> --- a/arch/arm/mach-exynos/mach-smdkv310.c
> +++ b/arch/arm/mach-exynos/mach-smdkv310.c
> @@ -381,6 +381,7 @@ MACHINE_START(SMDKV310, "SMDKV310")
> .init_machine = smdkv310_machine_init,
> .timer = &exynos4_timer,
> .reserve = &smdkv310_reserve,
> + .restart = exynos4_restart,
> MACHINE_END
>
> MACHINE_START(SMDKC210, "SMDKC210")
> @@ -391,4 +392,5 @@ MACHINE_START(SMDKC210, "SMDKC210")
> .handle_irq = gic_handle_irq,
> .init_machine = smdkv310_machine_init,
> .timer = &exynos4_timer,
> + .restart = exynos4_restart,
> MACHINE_END
> diff --git a/arch/arm/mach-exynos/mach-universal_c210.c b/arch/arm/mach-exynos/mach-universal_c210.c
> index 7066f12..52aea97 100644
> --- a/arch/arm/mach-exynos/mach-universal_c210.c
> +++ b/arch/arm/mach-exynos/mach-universal_c210.c
> @@ -1064,4 +1064,5 @@ MACHINE_START(UNIVERSAL_C210, "UNIVERSAL_C210")
> .init_machine = universal_machine_init,
> .timer = &exynos4_timer,
> .reserve = &universal_reserve,
> + .restart = exynos4_restart,
> MACHINE_END
> diff --git a/arch/arm/plat-samsung/include/plat/reset.h b/arch/arm/plat-samsung/include/plat/reset.h
> deleted file mode 100644
> index 32ca517..0000000
> --- a/arch/arm/plat-samsung/include/plat/reset.h
> +++ /dev/null
> @@ -1,16 +0,0 @@
> -/* linux/arch/arm/plat-samsung/include/plat/reset.h
> - *
> - * Copyright (c) 2010 Samsung Electronics Co., Ltd.
> - * http://www.samsung.com/
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License version 2 as
> - * published by the Free Software Foundation.
> -*/
> -
> -#ifndef __PLAT_SAMSUNG_RESET_H
> -#define __PLAT_SAMSUNG_RESET_H __FILE__
> -
> -extern void (*s5p_reset_hook)(void);
> -
> -#endif /* __PLAT_SAMSUNG_RESET_H */
> diff --git a/arch/arm/plat-samsung/include/plat/system-reset.h b/arch/arm/plat-
> samsung/include/plat/system-reset.h
> deleted file mode 100644
> index a448e99..0000000
> --- a/arch/arm/plat-samsung/include/plat/system-reset.h
> +++ /dev/null
> @@ -1,31 +0,0 @@
> -/* linux/arch/arm/plat-samsung/include/plat/system-reset.h
> - *
> - * Copyright (c) 2010 Samsung Electronics Co., Ltd.
> - * http://www.samsung.com
> - *
> - * Based on arch/arm/mach-s3c2410/include/mach/system-reset.h
> - *
> - * S5P - System define for arch_reset()
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License version 2 as
> - * published by the Free Software Foundation.
> -*/
> -
> -#include <plat/watchdog-reset.h>
> -
> -void (*s5p_reset_hook)(void);
> -
> -static void arch_reset(char mode, const char *cmd)
> -{
> - /* SWRESET support in s5p_reset_hook() */
> -
> - if (s5p_reset_hook)
> - s5p_reset_hook();
> -
> - /* Perform reset using Watchdog reset
> - * if there is no s5p_reset_hook()
> - */
> -
> - arch_wdt_reset();
> -}
> --
> 1.7.4.4
From: Russell King <rmk+kernel at arm.linux.org.uk>
Subject: [PATCH V2 09/12] ARM: restart: EXYNOS: use new restart hook
Hook these platforms restart code into the new restart hook rather
than using arch_reset().
Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
[kgene.kim at samsung.com: according to local header, updated]
Signed-off-by: Kukjin Kim <kgene.kim at samsung.com>
---
Changes since v1:
- fixed the mis-deleting inclusion of <plat/system-reset.h>
which includes arch_reset().
arch/arm/mach-exynos/common.c | 7 +------
arch/arm/mach-exynos/common.h | 2 ++
arch/arm/mach-exynos/mach-armlex4210.c | 1 +
arch/arm/mach-exynos/mach-nuri.c | 1 +
arch/arm/mach-exynos/mach-origen.c | 1 +
arch/arm/mach-exynos/mach-smdk4x12.c | 2 ++
arch/arm/mach-exynos/mach-smdkv310.c | 2 ++
arch/arm/mach-exynos/mach-universal_c210.c | 1 +
arch/arm/plat-samsung/include/plat/reset.h | 16 ----------------
arch/arm/plat-samsung/include/plat/system-reset.h | 16 ++++------------
10 files changed, 15 insertions(+), 34 deletions(-)
delete mode 100644 arch/arm/plat-samsung/include/plat/reset.h
diff --git a/arch/arm/mach-exynos/common.c b/arch/arm/mach-exynos/common.c
index 8eb2293..5de4214 100644
--- a/arch/arm/mach-exynos/common.c
+++ b/arch/arm/mach-exynos/common.c
@@ -33,7 +33,6 @@
#include <plat/clock.h>
#include <plat/devs.h>
#include <plat/pm.h>
-#include <plat/reset.h>
#include <plat/sdhci.h>
#include <plat/gpio-cfg.h>
#include <plat/adc-core.h>
@@ -213,7 +212,7 @@ static void exynos_idle(void)
local_irq_enable();
}
-static void exynos4_sw_reset(void)
+void exynos4_restart(char mode, const char *cmd)
{
__raw_writel(0x1, S5P_SWRESET);
}
@@ -462,10 +461,6 @@ int __init exynos_init(void)
/* set idle function */
pm_idle = exynos_idle;
- /* set sw_reset function */
- if (soc_is_exynos4210() || soc_is_exynos4212() || soc_is_exynos4412())
- s5p_reset_hook = exynos4_sw_reset;
-
return sysdev_register(&exynos4_sysdev);
}
diff --git a/arch/arm/mach-exynos/common.h b/arch/arm/mach-exynos/common.h
index 0476c5f..1ac49de 100644
--- a/arch/arm/mach-exynos/common.h
+++ b/arch/arm/mach-exynos/common.h
@@ -21,6 +21,8 @@ void exynos4_setup_clocks(void);
void exynos4210_register_clocks(void);
void exynos4212_register_clocks(void);
+void exynos4_restart(char mode, const char *cmd);
+
extern struct sys_timer exynos4_timer;
#ifdef CONFIG_ARCH_EXYNOS
diff --git a/arch/arm/mach-exynos/mach-armlex4210.c b/arch/arm/mach-exynos/mach-armlex4210.c
index b1807c4..d726fcd 100644
--- a/arch/arm/mach-exynos/mach-armlex4210.c
+++ b/arch/arm/mach-exynos/mach-armlex4210.c
@@ -215,4 +215,5 @@ MACHINE_START(ARMLEX4210, "ARMLEX4210")
.handle_irq = gic_handle_irq,
.init_machine = armlex4210_machine_init,
.timer = &exynos4_timer,
+ .restart = exynos4_restart,
MACHINE_END
diff --git a/arch/arm/mach-exynos/mach-nuri.c b/arch/arm/mach-exynos/mach-nuri.c
index a6ecdbc..635fb97 100644
--- a/arch/arm/mach-exynos/mach-nuri.c
+++ b/arch/arm/mach-exynos/mach-nuri.c
@@ -1339,4 +1339,5 @@ MACHINE_START(NURI, "NURI")
.init_machine = nuri_machine_init,
.timer = &exynos4_timer,
.reserve = &nuri_reserve,
+ .restart = exynos4_restart,
MACHINE_END
diff --git a/arch/arm/mach-exynos/mach-origen.c b/arch/arm/mach-exynos/mach-origen.c
index ea35806..586eb99 100644
--- a/arch/arm/mach-exynos/mach-origen.c
+++ b/arch/arm/mach-exynos/mach-origen.c
@@ -700,4 +700,5 @@ MACHINE_START(ORIGEN, "ORIGEN")
.init_machine = origen_machine_init,
.timer = &exynos4_timer,
.reserve = &origen_reserve,
+ .restart = exynos4_restart,
MACHINE_END
diff --git a/arch/arm/mach-exynos/mach-smdk4x12.c b/arch/arm/mach-exynos/mach-smdk4x12.c
index 3b1a9f0..d00e4f0 100644
--- a/arch/arm/mach-exynos/mach-smdk4x12.c
+++ b/arch/arm/mach-exynos/mach-smdk4x12.c
@@ -292,6 +292,7 @@ MACHINE_START(SMDK4212, "SMDK4212")
.handle_irq = gic_handle_irq,
.init_machine = smdk4x12_machine_init,
.timer = &exynos4_timer,
+ .restart = exynos4_restart,
MACHINE_END
MACHINE_START(SMDK4412, "SMDK4412")
@@ -303,4 +304,5 @@ MACHINE_START(SMDK4412, "SMDK4412")
.handle_irq = gic_handle_irq,
.init_machine = smdk4x12_machine_init,
.timer = &exynos4_timer,
+ .restart = exynos4_restart,
MACHINE_END
diff --git a/arch/arm/mach-exynos/mach-smdkv310.c b/arch/arm/mach-exynos/mach-smdkv310.c
index c9e331e..5b36561 100644
--- a/arch/arm/mach-exynos/mach-smdkv310.c
+++ b/arch/arm/mach-exynos/mach-smdkv310.c
@@ -381,6 +381,7 @@ MACHINE_START(SMDKV310, "SMDKV310")
.init_machine = smdkv310_machine_init,
.timer = &exynos4_timer,
.reserve = &smdkv310_reserve,
+ .restart = exynos4_restart,
MACHINE_END
MACHINE_START(SMDKC210, "SMDKC210")
@@ -391,4 +392,5 @@ MACHINE_START(SMDKC210, "SMDKC210")
.handle_irq = gic_handle_irq,
.init_machine = smdkv310_machine_init,
.timer = &exynos4_timer,
+ .restart = exynos4_restart,
MACHINE_END
diff --git a/arch/arm/mach-exynos/mach-universal_c210.c b/arch/arm/mach-exynos/mach-universal_c210.c
index 7066f12..52aea97 100644
--- a/arch/arm/mach-exynos/mach-universal_c210.c
+++ b/arch/arm/mach-exynos/mach-universal_c210.c
@@ -1064,4 +1064,5 @@ MACHINE_START(UNIVERSAL_C210, "UNIVERSAL_C210")
.init_machine = universal_machine_init,
.timer = &exynos4_timer,
.reserve = &universal_reserve,
+ .restart = exynos4_restart,
MACHINE_END
diff --git a/arch/arm/plat-samsung/include/plat/reset.h b/arch/arm/plat-samsung/include/plat/reset.h
deleted file mode 100644
index 32ca517..0000000
--- a/arch/arm/plat-samsung/include/plat/reset.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/* linux/arch/arm/plat-samsung/include/plat/reset.h
- *
- * Copyright (c) 2010 Samsung Electronics Co., Ltd.
- * http://www.samsung.com/
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
-*/
-
-#ifndef __PLAT_SAMSUNG_RESET_H
-#define __PLAT_SAMSUNG_RESET_H __FILE__
-
-extern void (*s5p_reset_hook)(void);
-
-#endif /* __PLAT_SAMSUNG_RESET_H */
diff --git a/arch/arm/plat-samsung/include/plat/system-reset.h b/arch/arm/plat-samsung/include/plat/system-reset.h
index a448e99..1d14d6f 100644
--- a/arch/arm/plat-samsung/include/plat/system-reset.h
+++ b/arch/arm/plat-samsung/include/plat/system-reset.h
@@ -1,6 +1,6 @@
/* linux/arch/arm/plat-samsung/include/plat/system-reset.h
*
- * Copyright (c) 2010 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd.
* http://www.samsung.com
*
* Based on arch/arm/mach-s3c2410/include/mach/system-reset.h
@@ -14,18 +14,10 @@
#include <plat/watchdog-reset.h>
-void (*s5p_reset_hook)(void);
-
static void arch_reset(char mode, const char *cmd)
{
- /* SWRESET support in s5p_reset_hook() */
-
- if (s5p_reset_hook)
- s5p_reset_hook();
-
- /* Perform reset using Watchdog reset
- * if there is no s5p_reset_hook()
- */
+ if (mode != 's')
+ arch_wdt_reset();
- arch_wdt_reset();
+ soft_restart(0);
}
--
Thanks.
Best regards,
Kgene.
--
Kukjin Kim <kgene.kim at samsung.com>, Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.
More information about the linux-arm-kernel
mailing list