Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d723a221 authored by Murali Nalajala's avatar Murali Nalajala Committed by Matt Wagantall
Browse files

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: default avatarMurali Nalajala <mnalajal@codeaurora.org>
parent 8240cb0d
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@
#include <linux/of.h>
#include <linux/irqdomain.h>

extern bool from_suspend;
extern struct irq_chip gic_arch_extn;

void gic_configure_irq(unsigned int irq, unsigned int type,
+3 −0
Original line number Diff line number Diff line
@@ -700,6 +700,9 @@ int gic_set_wake(struct irq_data *d, unsigned int on)
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();
+4 −0
Original line number Diff line number Diff line
@@ -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();
}