mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-15 23:25:07 +00:00
ARM: 7254/1: restart: S3C24XX: move SWRST based S3C platforms to
S3C2412/S3C2416/S3C2443 use a special register to signal the reset to the processor and used therefore the s3c24xx_reset_hook mechanism in the s3c24xx-specific arch reset. This patch introduces restart functions for these architectures, moves the board files to them and removes the s3c24xx_reset_hook infrastructure, as all users are gone. Signed-off-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
e11e909df5
commit
5753897591
14 changed files with 27 additions and 42 deletions
|
@ -1,22 +0,0 @@
|
||||||
/* arch/arm/mach-s3c2410/include/mach/reset.h
|
|
||||||
*
|
|
||||||
* Copyright (c) 2007 Simtec Electronics
|
|
||||||
* Ben Dooks <ben@simtec.co.uk>
|
|
||||||
* http://armlinux.simtec.co.uk/
|
|
||||||
*
|
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* S3C2410 CPU reset controls
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __ASM_ARCH_RESET_H
|
|
||||||
#define __ASM_ARCH_RESET_H __FILE__
|
|
||||||
|
|
||||||
/* This allows the over-ride of the default reset code
|
|
||||||
*/
|
|
||||||
|
|
||||||
extern void (*s3c24xx_reset_hook)(void);
|
|
||||||
|
|
||||||
#endif /* __ASM_ARCH_RESET_H */
|
|
|
@ -13,8 +13,6 @@
|
||||||
#include <mach/hardware.h>
|
#include <mach/hardware.h>
|
||||||
#include <plat/watchdog-reset.h>
|
#include <plat/watchdog-reset.h>
|
||||||
|
|
||||||
extern void (*s3c24xx_reset_hook)(void);
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
arch_reset(char mode, const char *cmd)
|
arch_reset(char mode, const char *cmd)
|
||||||
{
|
{
|
||||||
|
@ -22,9 +20,6 @@ arch_reset(char mode, const char *cmd)
|
||||||
soft_restart(0);
|
soft_restart(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (s3c24xx_reset_hook)
|
|
||||||
s3c24xx_reset_hook();
|
|
||||||
|
|
||||||
arch_wdt_reset();
|
arch_wdt_reset();
|
||||||
|
|
||||||
/* we'll take a jump through zero as a poor second */
|
/* we'll take a jump through zero as a poor second */
|
||||||
|
|
|
@ -15,12 +15,10 @@
|
||||||
|
|
||||||
#include <mach/map.h>
|
#include <mach/map.h>
|
||||||
#include <mach/idle.h>
|
#include <mach/idle.h>
|
||||||
#include <mach/reset.h>
|
|
||||||
|
|
||||||
#include <mach/regs-clock.h>
|
#include <mach/regs-clock.h>
|
||||||
|
|
||||||
void (*s3c24xx_idle)(void);
|
void (*s3c24xx_idle)(void);
|
||||||
void (*s3c24xx_reset_hook)(void);
|
|
||||||
|
|
||||||
void s3c24xx_default_idle(void)
|
void s3c24xx_default_idle(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -48,6 +48,7 @@
|
||||||
#include <linux/mtd/nand_ecc.h>
|
#include <linux/mtd/nand_ecc.h>
|
||||||
#include <linux/mtd/partitions.h>
|
#include <linux/mtd/partitions.h>
|
||||||
|
|
||||||
|
#include <plat/s3c2412.h>
|
||||||
#include <plat/gpio-cfg.h>
|
#include <plat/gpio-cfg.h>
|
||||||
#include <plat/clock.h>
|
#include <plat/clock.h>
|
||||||
#include <plat/devs.h>
|
#include <plat/devs.h>
|
||||||
|
@ -661,4 +662,5 @@ MACHINE_START(JIVE, "JIVE")
|
||||||
.map_io = jive_map_io,
|
.map_io = jive_map_io,
|
||||||
.init_machine = jive_machine_init,
|
.init_machine = jive_machine_init,
|
||||||
.timer = &s3c24xx_timer,
|
.timer = &s3c24xx_timer,
|
||||||
|
.restart = s3c2412_restart,
|
||||||
MACHINE_END
|
MACHINE_END
|
||||||
|
|
|
@ -134,6 +134,7 @@ MACHINE_START(S3C2413, "S3C2413")
|
||||||
.map_io = smdk2413_map_io,
|
.map_io = smdk2413_map_io,
|
||||||
.init_machine = smdk2413_machine_init,
|
.init_machine = smdk2413_machine_init,
|
||||||
.timer = &s3c24xx_timer,
|
.timer = &s3c24xx_timer,
|
||||||
|
.restart = s3c2412_restart,
|
||||||
MACHINE_END
|
MACHINE_END
|
||||||
|
|
||||||
MACHINE_START(SMDK2412, "SMDK2412")
|
MACHINE_START(SMDK2412, "SMDK2412")
|
||||||
|
@ -145,6 +146,7 @@ MACHINE_START(SMDK2412, "SMDK2412")
|
||||||
.map_io = smdk2413_map_io,
|
.map_io = smdk2413_map_io,
|
||||||
.init_machine = smdk2413_machine_init,
|
.init_machine = smdk2413_machine_init,
|
||||||
.timer = &s3c24xx_timer,
|
.timer = &s3c24xx_timer,
|
||||||
|
.restart = s3c2412_restart,
|
||||||
MACHINE_END
|
MACHINE_END
|
||||||
|
|
||||||
MACHINE_START(SMDK2413, "SMDK2413")
|
MACHINE_START(SMDK2413, "SMDK2413")
|
||||||
|
@ -156,4 +158,5 @@ MACHINE_START(SMDK2413, "SMDK2413")
|
||||||
.map_io = smdk2413_map_io,
|
.map_io = smdk2413_map_io,
|
||||||
.init_machine = smdk2413_machine_init,
|
.init_machine = smdk2413_machine_init,
|
||||||
.timer = &s3c24xx_timer,
|
.timer = &s3c24xx_timer,
|
||||||
|
.restart = s3c2412_restart,
|
||||||
MACHINE_END
|
MACHINE_END
|
||||||
|
|
|
@ -162,4 +162,5 @@ MACHINE_START(VSTMS, "VSTMS")
|
||||||
.init_machine = vstms_init,
|
.init_machine = vstms_init,
|
||||||
.map_io = vstms_map_io,
|
.map_io = vstms_map_io,
|
||||||
.timer = &s3c24xx_timer,
|
.timer = &s3c24xx_timer,
|
||||||
|
.restart = s3c2412_restart,
|
||||||
MACHINE_END
|
MACHINE_END
|
||||||
|
|
|
@ -32,7 +32,6 @@
|
||||||
#include <asm/proc-fns.h>
|
#include <asm/proc-fns.h>
|
||||||
#include <asm/irq.h>
|
#include <asm/irq.h>
|
||||||
|
|
||||||
#include <mach/reset.h>
|
|
||||||
#include <mach/idle.h>
|
#include <mach/idle.h>
|
||||||
|
|
||||||
#include <plat/cpu-freq.h>
|
#include <plat/cpu-freq.h>
|
||||||
|
@ -131,8 +130,11 @@ static void s3c2412_idle(void)
|
||||||
cpu_do_idle();
|
cpu_do_idle();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void s3c2412_hard_reset(void)
|
void s3c2412_restart(char mode, const char *cmd)
|
||||||
{
|
{
|
||||||
|
if (mode == 's')
|
||||||
|
soft_restart(0);
|
||||||
|
|
||||||
/* errata "Watch-dog/Software Reset Problem" specifies that
|
/* errata "Watch-dog/Software Reset Problem" specifies that
|
||||||
* this reset must be done with the SYSCLK sourced from
|
* this reset must be done with the SYSCLK sourced from
|
||||||
* EXTCLK instead of FOUT to avoid a glitch in the reset
|
* EXTCLK instead of FOUT to avoid a glitch in the reset
|
||||||
|
@ -164,10 +166,6 @@ void __init s3c2412_map_io(void)
|
||||||
|
|
||||||
s3c24xx_idle = s3c2412_idle;
|
s3c24xx_idle = s3c2412_idle;
|
||||||
|
|
||||||
/* set custom reset hook */
|
|
||||||
|
|
||||||
s3c24xx_reset_hook = s3c2412_hard_reset;
|
|
||||||
|
|
||||||
/* register our io-tables */
|
/* register our io-tables */
|
||||||
|
|
||||||
iotable_init(s3c2412_iodesc, ARRAY_SIZE(s3c2412_iodesc));
|
iotable_init(s3c2412_iodesc, ARRAY_SIZE(s3c2412_iodesc));
|
||||||
|
|
|
@ -251,4 +251,5 @@ MACHINE_START(SMDK2416, "SMDK2416")
|
||||||
.map_io = smdk2416_map_io,
|
.map_io = smdk2416_map_io,
|
||||||
.init_machine = smdk2416_machine_init,
|
.init_machine = smdk2416_machine_init,
|
||||||
.timer = &s3c24xx_timer,
|
.timer = &s3c24xx_timer,
|
||||||
|
.restart = s3c2416_restart,
|
||||||
MACHINE_END
|
MACHINE_END
|
||||||
|
|
|
@ -44,7 +44,6 @@
|
||||||
#include <asm/proc-fns.h>
|
#include <asm/proc-fns.h>
|
||||||
#include <asm/irq.h>
|
#include <asm/irq.h>
|
||||||
|
|
||||||
#include <mach/reset.h>
|
|
||||||
#include <mach/idle.h>
|
#include <mach/idle.h>
|
||||||
#include <mach/regs-s3c2443-clock.h>
|
#include <mach/regs-s3c2443-clock.h>
|
||||||
|
|
||||||
|
@ -76,8 +75,11 @@ static struct sys_device s3c2416_sysdev = {
|
||||||
.cls = &s3c2416_sysclass,
|
.cls = &s3c2416_sysclass,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void s3c2416_hard_reset(void)
|
void s3c2416_restart(char mode, const char *cmd)
|
||||||
{
|
{
|
||||||
|
if (mode == 's')
|
||||||
|
soft_restart(0);
|
||||||
|
|
||||||
__raw_writel(S3C2443_SWRST_RESET, S3C2443_SWRST);
|
__raw_writel(S3C2443_SWRST_RESET, S3C2443_SWRST);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,7 +87,6 @@ int __init s3c2416_init(void)
|
||||||
{
|
{
|
||||||
printk(KERN_INFO "S3C2416: Initializing architecture\n");
|
printk(KERN_INFO "S3C2416: Initializing architecture\n");
|
||||||
|
|
||||||
s3c24xx_reset_hook = s3c2416_hard_reset;
|
|
||||||
/* s3c24xx_idle = s3c2416_idle; */
|
/* s3c24xx_idle = s3c2416_idle; */
|
||||||
|
|
||||||
/* change WDT IRQ number */
|
/* change WDT IRQ number */
|
||||||
|
|
|
@ -145,4 +145,5 @@ MACHINE_START(SMDK2443, "SMDK2443")
|
||||||
.map_io = smdk2443_map_io,
|
.map_io = smdk2443_map_io,
|
||||||
.init_machine = smdk2443_machine_init,
|
.init_machine = smdk2443_machine_init,
|
||||||
.timer = &s3c24xx_timer,
|
.timer = &s3c24xx_timer,
|
||||||
|
.restart = s3c2443_restart,
|
||||||
MACHINE_END
|
MACHINE_END
|
||||||
|
|
|
@ -31,7 +31,6 @@
|
||||||
#include <asm/irq.h>
|
#include <asm/irq.h>
|
||||||
|
|
||||||
#include <mach/regs-s3c2443-clock.h>
|
#include <mach/regs-s3c2443-clock.h>
|
||||||
#include <mach/reset.h>
|
|
||||||
|
|
||||||
#include <plat/gpio-core.h>
|
#include <plat/gpio-core.h>
|
||||||
#include <plat/gpio-cfg.h>
|
#include <plat/gpio-cfg.h>
|
||||||
|
@ -57,8 +56,11 @@ static struct sys_device s3c2443_sysdev = {
|
||||||
.cls = &s3c2443_sysclass,
|
.cls = &s3c2443_sysclass,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void s3c2443_hard_reset(void)
|
void s3c2443_restart(char mode, const char *cmd)
|
||||||
{
|
{
|
||||||
|
if (mode == 's')
|
||||||
|
soft_restart(0);
|
||||||
|
|
||||||
__raw_writel(S3C2443_SWRST_RESET, S3C2443_SWRST);
|
__raw_writel(S3C2443_SWRST_RESET, S3C2443_SWRST);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,8 +68,6 @@ int __init s3c2443_init(void)
|
||||||
{
|
{
|
||||||
printk("S3C2443: Initialising architecture\n");
|
printk("S3C2443: Initialising architecture\n");
|
||||||
|
|
||||||
s3c24xx_reset_hook = s3c2443_hard_reset;
|
|
||||||
|
|
||||||
s3c_nand_setname("s3c2412-nand");
|
s3c_nand_setname("s3c2412-nand");
|
||||||
s3c_fb_setname("s3c2443-fb");
|
s3c_fb_setname("s3c2443-fb");
|
||||||
|
|
||||||
|
|
|
@ -21,9 +21,12 @@ extern void s3c2412_init_uarts(struct s3c2410_uartcfg *cfg, int no);
|
||||||
extern void s3c2412_init_clocks(int xtal);
|
extern void s3c2412_init_clocks(int xtal);
|
||||||
|
|
||||||
extern int s3c2412_baseclk_add(void);
|
extern int s3c2412_baseclk_add(void);
|
||||||
|
|
||||||
|
extern void s3c2412_restart(char mode, const char *cmd);
|
||||||
#else
|
#else
|
||||||
#define s3c2412_init_clocks NULL
|
#define s3c2412_init_clocks NULL
|
||||||
#define s3c2412_init_uarts NULL
|
#define s3c2412_init_uarts NULL
|
||||||
#define s3c2412_map_io NULL
|
#define s3c2412_map_io NULL
|
||||||
#define s3c2412_init NULL
|
#define s3c2412_init NULL
|
||||||
|
#define s3c2412_restart NULL
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -23,9 +23,11 @@ extern void s3c2416_init_clocks(int xtal);
|
||||||
|
|
||||||
extern int s3c2416_baseclk_add(void);
|
extern int s3c2416_baseclk_add(void);
|
||||||
|
|
||||||
|
extern void s3c2416_restart(char mode, const char *cmd);
|
||||||
#else
|
#else
|
||||||
#define s3c2416_init_clocks NULL
|
#define s3c2416_init_clocks NULL
|
||||||
#define s3c2416_init_uarts NULL
|
#define s3c2416_init_uarts NULL
|
||||||
#define s3c2416_map_io NULL
|
#define s3c2416_map_io NULL
|
||||||
#define s3c2416_init NULL
|
#define s3c2416_init NULL
|
||||||
|
#define s3c2416_restart NULL
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -24,11 +24,13 @@ extern void s3c2443_init_clocks(int xtal);
|
||||||
|
|
||||||
extern int s3c2443_baseclk_add(void);
|
extern int s3c2443_baseclk_add(void);
|
||||||
|
|
||||||
|
extern void s3c2443_restart(char mode, const char *cmd);
|
||||||
#else
|
#else
|
||||||
#define s3c2443_init_clocks NULL
|
#define s3c2443_init_clocks NULL
|
||||||
#define s3c2443_init_uarts NULL
|
#define s3c2443_init_uarts NULL
|
||||||
#define s3c2443_map_io NULL
|
#define s3c2443_map_io NULL
|
||||||
#define s3c2443_init NULL
|
#define s3c2443_init NULL
|
||||||
|
#define s3c2443_restart NULL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* common code used by s3c2443 and others.
|
/* common code used by s3c2443 and others.
|
||||||
|
|
Loading…
Reference in a new issue