aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/memory
diff options
context:
space:
mode:
authorNishanth Menon <nm@ti.com>2013-03-16 02:16:45 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-03-25 16:18:12 -0400
commit2553e32ae200210801dd3e3f58dd23169356c9d6 (patch)
treeb84915101262d218200e7af99e61f8a61a8d9bc8 /drivers/memory
parentf91a595d0b813c3a2f3b848c165e865ca4c5b8cc (diff)
memory: emif: use restart if power_off not present when out of spec
Some machine or kernel variants might have missed implementation of power off handlers. We DONOT want to let the system be in "out of spec" state in this condition. So, WARN and attempt a machine restart in the hopes of clearing the out-of-spec temperature condition. NOTE: This is not the safest option, but safer than leaving the system in unstable conditions. Signed-off-by: Nishanth Menon <nm@ti.com> Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com> Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/memory')
-rw-r--r--drivers/memory/emif.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/memory/emif.c b/drivers/memory/emif.c
index 96add5b9ce5d..b2bb27261c73 100644
--- a/drivers/memory/emif.c
+++ b/drivers/memory/emif.c
@@ -25,6 +25,7 @@
25#include <linux/module.h> 25#include <linux/module.h>
26#include <linux/list.h> 26#include <linux/list.h>
27#include <linux/spinlock.h> 27#include <linux/spinlock.h>
28#include <linux/pm.h>
28#include <memory/jedec_ddr.h> 29#include <memory/jedec_ddr.h>
29#include "emif.h" 30#include "emif.h"
30#include "of_memory.h" 31#include "of_memory.h"
@@ -1015,7 +1016,14 @@ static irqreturn_t emif_threaded_isr(int irq, void *dev_id)
1015 1016
1016 if (emif->temperature_level == SDRAM_TEMP_VERY_HIGH_SHUTDOWN) { 1017 if (emif->temperature_level == SDRAM_TEMP_VERY_HIGH_SHUTDOWN) {
1017 dev_emerg(emif->dev, "SDRAM temperature exceeds operating limit.. Needs shut down!!!\n"); 1018 dev_emerg(emif->dev, "SDRAM temperature exceeds operating limit.. Needs shut down!!!\n");
1018 kernel_power_off(); 1019
1020 /* If we have Power OFF ability, use it, else try restarting */
1021 if (pm_power_off) {
1022 kernel_power_off();
1023 } else {
1024 WARN(1, "FIXME: NO pm_power_off!!! trying restart\n");
1025 kernel_restart("SDRAM Over-temp Emergency restart");
1026 }
1019 return IRQ_HANDLED; 1027 return IRQ_HANDLED;
1020 } 1028 }
1021 1029