Commit 114c19b7 authored by Russell King's avatar Russell King

ARM: restart: ks8695: use new restart hook

Hook these platforms restart code into the new restart hook rather
than using arch_reset().
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent cb15dff4
...@@ -228,4 +228,5 @@ MACHINE_START(ACS5K, "Brivo Systems LLC ACS-5000 Master board") ...@@ -228,4 +228,5 @@ MACHINE_START(ACS5K, "Brivo Systems LLC ACS-5000 Master board")
.init_irq = ks8695_init_irq, .init_irq = ks8695_init_irq,
.init_machine = acs5k_init, .init_machine = acs5k_init,
.timer = &ks8695_timer, .timer = &ks8695_timer,
.restart = ks8695_restart,
MACHINE_END MACHINE_END
...@@ -126,4 +126,5 @@ MACHINE_START(DSM320, "D-Link DSM-320 Wireless Media Player") ...@@ -126,4 +126,5 @@ MACHINE_START(DSM320, "D-Link DSM-320 Wireless Media Player")
.init_irq = ks8695_init_irq, .init_irq = ks8695_init_irq,
.init_machine = dsm320_init, .init_machine = dsm320_init,
.timer = &ks8695_timer, .timer = &ks8695_timer,
.restart = ks8695_restart,
MACHINE_END MACHINE_END
...@@ -58,4 +58,5 @@ MACHINE_START(KS8695, "KS8695 Centaur Development Board") ...@@ -58,4 +58,5 @@ MACHINE_START(KS8695, "KS8695 Centaur Development Board")
.init_irq = ks8695_init_irq, .init_irq = ks8695_init_irq,
.init_machine = micrel_init, .init_machine = micrel_init,
.timer = &ks8695_timer, .timer = &ks8695_timer,
.restart = ks8695_restart,
MACHINE_END MACHINE_END
...@@ -12,4 +12,5 @@ ...@@ -12,4 +12,5 @@
extern __init void ks8695_map_io(void); extern __init void ks8695_map_io(void);
extern __init void ks8695_init_irq(void); extern __init void ks8695_init_irq(void);
extern void ks8695_restart(char, const char *);
extern struct sys_timer ks8695_timer; extern struct sys_timer ks8695_timer;
...@@ -14,9 +14,6 @@ ...@@ -14,9 +14,6 @@
#ifndef __ASM_ARCH_SYSTEM_H #ifndef __ASM_ARCH_SYSTEM_H
#define __ASM_ARCH_SYSTEM_H #define __ASM_ARCH_SYSTEM_H
#include <linux/io.h>
#include <mach/regs-timer.h>
static void arch_idle(void) static void arch_idle(void)
{ {
/* /*
...@@ -29,20 +26,6 @@ static void arch_idle(void) ...@@ -29,20 +26,6 @@ static void arch_idle(void)
static void arch_reset(char mode, const char *cmd) static void arch_reset(char mode, const char *cmd)
{ {
unsigned int reg;
if (mode == 's')
soft_restart(0);
/* disable timer0 */
reg = __raw_readl(KS8695_TMR_VA + KS8695_TMCON);
__raw_writel(reg & ~TMCON_T0EN, KS8695_TMR_VA + KS8695_TMCON);
/* enable watchdog mode */
__raw_writel((10 << 8) | T0TC_WATCHDOG, KS8695_TMR_VA + KS8695_T0TC);
/* re-enable timer0 */
__raw_writel(reg | TMCON_T0EN, KS8695_TMR_VA + KS8695_TMCON);
} }
#endif #endif
...@@ -109,3 +109,21 @@ struct sys_timer ks8695_timer = { ...@@ -109,3 +109,21 @@ struct sys_timer ks8695_timer = {
.offset = ks8695_gettimeoffset, .offset = ks8695_gettimeoffset,
.resume = ks8695_timer_setup, .resume = ks8695_timer_setup,
}; };
void ks8695_restart(char mode, const char *cmd)
{
unsigned int reg;
if (mode == 's')
soft_restart(0);
/* disable timer0 */
reg = __raw_readl(KS8695_TMR_VA + KS8695_TMCON);
__raw_writel(reg & ~TMCON_T0EN, KS8695_TMR_VA + KS8695_TMCON);
/* enable watchdog mode */
__raw_writel((10 << 8) | T0TC_WATCHDOG, KS8695_TMR_VA + KS8695_T0TC);
/* re-enable timer0 */
__raw_writel(reg | TMCON_T0EN, KS8695_TMR_VA + KS8695_TMCON);
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment