summaryrefslogtreecommitdiff
path: root/arch/arm/mach-imx/gpcv2.c
diff options
context:
space:
mode:
authorAnson Huang <Anson.Huang@nxp.com>2016-05-05 18:21:10 +0800
committerAnson Huang <Anson.Huang@nxp.com>2016-05-06 13:50:27 +0800
commita3e11fc500fbbf20070f0e7f4eea8b825edb888c (patch)
treec7e9bd36cae676afbb216a604e3ce72af0f7dc9e /arch/arm/mach-imx/gpcv2.c
parent55f41f794fb96afdb292f3bb2e77014e09b0ef00 (diff)
MLK-12761 ARM: imx: add mu as wakeup source for i.mx7d
When A7 platform is in low power mode while M4 is NOT, M4 should be able to send message to wake up A7, so MU must be always as wake up source. Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
Diffstat (limited to 'arch/arm/mach-imx/gpcv2.c')
-rw-r--r--arch/arm/mach-imx/gpcv2.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/arch/arm/mach-imx/gpcv2.c b/arch/arm/mach-imx/gpcv2.c
index d52578d6a1e1..e2b7ac389251 100644
--- a/arch/arm/mach-imx/gpcv2.c
+++ b/arch/arm/mach-imx/gpcv2.c
@@ -117,6 +117,23 @@ static u32 gpcv2_mf_request_on[IMR_NUM];
static DEFINE_SPINLOCK(gpcv2_lock);
static struct notifier_block nb_mipi, nb_pcie;
+void imx_gpcv2_add_m4_wake_up_irq(u32 hwirq, bool enable)
+{
+ unsigned int idx = hwirq / 32;
+ unsigned long flags;
+ u32 mask;
+
+ /* Sanity check for SPI irq */
+ if (hwirq < 32)
+ return;
+
+ mask = 1 << hwirq % 32;
+ spin_lock_irqsave(&gpcv2_lock, flags);
+ gpcv2_wake_irqs[idx] = enable ? gpcv2_wake_irqs[idx] | mask :
+ gpcv2_wake_irqs[idx] & ~mask;
+ spin_unlock_irqrestore(&gpcv2_lock, flags);
+}
+
static int imx_gpcv2_irq_set_wake(struct irq_data *d, unsigned int on)
{
unsigned int idx = d->hwirq / 32;