@@ -196,6 +196,19 @@ void __init lpc32xx_map_io(void)
void lpc23xx_restart(enum reboot_mode mode, const char *cmd)
{
+ /*
+ * Verify if a "cmd" passed from the userspace program rebooting
+ * the system; if available, and handle it.
+ * - For details, see the 'reboot' syscall in kernel/reboot.c
+ * - If the received "cmd" is not supported, use the default mode.
+ */
+ if (cmd) {
+ if (cmd[0] == 'h')
+ mode = REBOOT_HARD;
+ else if (cmd[0] == 's')
+ mode = REBOOT_SOFT;
+ }
+
/* Make sure WDT clocks are enabled */
__raw_writel(LPC32XX_CLKPWR_PWMCLK_WDOG_EN,
LPC32XX_CLKPWR_TIMER_CLK_CTRL);