===================================================================
@@ -33,6 +33,7 @@
#include <linux/cpuidle.h>
#include <linux/leds.h>
#include <linux/reboot.h>
+#include <linux/machine_reset.h>
#include <asm/cacheflush.h>
#include <asm/idmap.h>
@@ -114,17 +115,13 @@ void soft_restart(unsigned long addr)
BUG();
}
-static void null_restart(enum reboot_mode reboot_mode, const char *cmd)
-{
-}
-
/*
* Function pointers to optional machine specific functions
*/
void (*pm_power_off)(void);
EXPORT_SYMBOL(pm_power_off);
-void (*arm_pm_restart)(enum reboot_mode reboot_mode, const char *cmd) = null_restart;
+void (*arm_pm_restart)(enum reboot_mode reboot_mode, const char *cmd);
EXPORT_SYMBOL_GPL(arm_pm_restart);
/*
@@ -217,6 +214,8 @@ void machine_power_off(void)
if (pm_power_off)
pm_power_off();
+ else
+ default_power_off();
}
/*
@@ -235,7 +234,10 @@ void machine_restart(char *cmd)
local_irq_disable();
smp_send_stop();
- arm_pm_restart(reboot_mode, cmd);
+ if (arm_pm_restart)
+ arm_pm_restart(reboot_mode, cmd);
+ else
+ default_restart(reboot_mode, cmd);
/* Give a grace period for failure to restart of 1s */
mdelay(1000);
===================================================================
@@ -297,3 +297,4 @@ config CPU_PM
config MACHINE_RESET
bool
default n
+ depends on ARM