lpm-levels: Do not disable non-sec interrupts in suspend

When the system suspend is happening, last core disables
the non-sec interrupts at QGIC by setting the GRPEN1_EL1_NS
to ZERO. This makes core not seen any non-sec interrupts
and would result into system do not wake up from any of
interrupts. Do not touch GRPEN1_EL1_NS register while
system is going into suspend.

Change-Id: I7d6c5047fb4743df187fe49fba18b64db3179bc9
Signed-off-by: Murali Nalajala <mnalajal@codeaurora.org>

Conflicts:
	drivers/irqchip/irq-gic-common.h
This commit is contained in:
Murali Nalajala 2015-05-19 10:26:11 -07:00 committed by David Keitel
parent 885262005f
commit b3445ac6ea
3 changed files with 9 additions and 0 deletions

View file

@ -26,6 +26,8 @@ struct gic_quirk {
u32 iidr;
u32 mask;
};
extern bool from_suspend;
extern struct irq_chip gic_arch_extn;
int gic_configure_irq(unsigned int irq, unsigned int type,
void __iomem *base, void (*sync_access)(void));

View file

@ -645,6 +645,9 @@ static int gic_set_affinity(struct irq_data *d, const struct cpumask *mask_val,
static int gic_cpu_pm_notifier(struct notifier_block *self,
unsigned long cmd, void *v)
{
if (from_suspend)
return NOTIFY_OK;
if (cmd == CPU_PM_EXIT) {
gic_enable_redist(true);
gic_cpu_sys_reg_init();

View file

@ -22,6 +22,8 @@
#include <linux/spinlock.h>
#include <linux/syscore_ops.h>
bool from_suspend = false;
static DEFINE_RWLOCK(cpu_pm_notifier_lock);
static RAW_NOTIFIER_HEAD(cpu_pm_notifier_chain);
@ -208,6 +210,7 @@ static int cpu_pm_suspend(void)
{
int ret;
from_suspend = true;
ret = cpu_pm_enter();
if (ret)
return ret;
@ -218,6 +221,7 @@ static int cpu_pm_suspend(void)
static void cpu_pm_resume(void)
{
from_suspend = false;
cpu_cluster_pm_exit(0);
cpu_pm_exit();
}