Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit be093beb authored by Russell King's avatar Russell King Committed by Russell King
Browse files

[ARM] pass reboot command line to arch_reset()



OMAP wishes to pass state to the boot loader upon reboot in order to
instruct it whether to wait for USB-based reflashing or not.  There is
already a facility to do this via the reboot() syscall, except we ignore
the string passed to machine_restart().

This patch fixes things to pass this string to arch_reset().  This means
that we keep the reboot mode limited to telling the kernel _how_ to
perform the reboot which should be independent of what we request the
boot loader to do.

Acked-by: default avatarTony Lindgren <tony@atomide.com>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 14b6848b
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -97,8 +97,8 @@ extern void __show_regs(struct pt_regs *);
extern int cpu_architecture(void);
extern void cpu_init(void);

void arm_machine_restart(char mode);
extern void (*arm_pm_restart)(char str);
void arm_machine_restart(char mode, const char *cmd);
extern void (*arm_pm_restart)(char str, const char *cmd);

#define UDBG_UNDEFINED	(1 << 0)
#define UDBG_SYSCALL	(1 << 1)
+5 −5
Original line number Diff line number Diff line
@@ -83,7 +83,7 @@ static int __init hlt_setup(char *__unused)
__setup("nohlt", nohlt_setup);
__setup("hlt", hlt_setup);

void arm_machine_restart(char mode)
void arm_machine_restart(char mode, const char *cmd)
{
	/*
	 * Clean and disable cache, and turn off interrupts
@@ -100,7 +100,7 @@ void arm_machine_restart(char mode)
	/*
	 * Now call the architecture specific reboot code.
	 */
	arch_reset(mode);
	arch_reset(mode, cmd);

	/*
	 * Whoops - the architecture was unable to reboot.
@@ -120,7 +120,7 @@ EXPORT_SYMBOL(pm_idle);
void (*pm_power_off)(void);
EXPORT_SYMBOL(pm_power_off);

void (*arm_pm_restart)(char str) = arm_machine_restart;
void (*arm_pm_restart)(char str, const char *cmd) = arm_machine_restart;
EXPORT_SYMBOL_GPL(arm_pm_restart);


@@ -195,9 +195,9 @@ void machine_power_off(void)
		pm_power_off();
}

void machine_restart(char * __unused)
void machine_restart(char *cmd)
{
	arm_pm_restart(reboot_mode);
	arm_pm_restart(reboot_mode, cmd);
}

void __show_regs(struct pt_regs *regs)
+1 −1
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@ static inline void arch_idle(void)
	cpu_do_idle();
}

static inline void arch_reset(char mode)
static inline void arch_reset(char mode, const char *cmd)
{
	cpu_reset(0);
}
+1 −1
Original line number Diff line number Diff line
@@ -43,7 +43,7 @@ static inline void arch_idle(void)

void (*at91_arch_reset)(void);

static inline void arch_reset(char mode)
static inline void arch_reset(char mode, const char *cmd)
{
	/* call the CPU-specific reset function */
	if (at91_arch_reset)
+1 −1
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ static inline void arch_idle(void)
	mov	r0, r0");
}

static inline void arch_reset(char mode)
static inline void arch_reset(char mode, const char *cmd)
{
	cpu_reset(0);
}
Loading