|
@@ -25,6 +25,7 @@
|
|
|
#include <linux/module.h>
|
|
|
#include <linux/list.h>
|
|
|
#include <linux/spinlock.h>
|
|
|
+#include <linux/pm.h>
|
|
|
#include <memory/jedec_ddr.h>
|
|
|
#include "emif.h"
|
|
|
#include "of_memory.h"
|
|
@@ -1015,7 +1016,14 @@ static irqreturn_t emif_threaded_isr(int irq, void *dev_id)
|
|
|
|
|
|
if (emif->temperature_level == SDRAM_TEMP_VERY_HIGH_SHUTDOWN) {
|
|
|
dev_emerg(emif->dev, "SDRAM temperature exceeds operating limit.. Needs shut down!!!\n");
|
|
|
- kernel_power_off();
|
|
|
+
|
|
|
+ /* If we have Power OFF ability, use it, else try restarting */
|
|
|
+ if (pm_power_off) {
|
|
|
+ kernel_power_off();
|
|
|
+ } else {
|
|
|
+ WARN(1, "FIXME: NO pm_power_off!!! trying restart\n");
|
|
|
+ kernel_restart("SDRAM Over-temp Emergency restart");
|
|
|
+ }
|
|
|
return IRQ_HANDLED;
|
|
|
}
|
|
|
|