瀏覽代碼

[ARM] Allow SA1100 RTC alarm to be configured for wakeup

The SA1100 RTC alarm can be configured to wake up the CPU
from sleep mode, and the RTC driver has been using the
API to configure this mode.  Unfortunately, the code was
which sets the required bit in the hardware was missing.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Russell King 19 年之前
父節點
當前提交
19ca5d27e1
共有 1 個文件被更改,包括 16 次插入0 次删除
  1. 16 0
      arch/arm/mach-sa1100/irq.c

+ 16 - 0
arch/arm/mach-sa1100/irq.c

@@ -199,10 +199,26 @@ static void sa1100_unmask_irq(unsigned int irq)
 	ICMR |= (1 << irq);
 	ICMR |= (1 << irq);
 }
 }
 
 
+/*
+ * Apart form GPIOs, only the RTC alarm can be a wakeup event.
+ */
+static int sa1100_set_wake(unsigned int irq, unsigned int on)
+{
+	if (irq == IRQ_RTCAlrm) {
+		if (on)
+			PWER |= PWER_RTC;
+		else
+			PWER &= ~PWER_RTC;
+		return 0;
+	}
+	return -EINVAL;
+}
+
 static struct irqchip sa1100_normal_chip = {
 static struct irqchip sa1100_normal_chip = {
 	.ack		= sa1100_mask_irq,
 	.ack		= sa1100_mask_irq,
 	.mask		= sa1100_mask_irq,
 	.mask		= sa1100_mask_irq,
 	.unmask		= sa1100_unmask_irq,
 	.unmask		= sa1100_unmask_irq,
+	.set_wake	= sa1100_set_wake,
 };
 };
 
 
 static struct resource irq_resource = {
 static struct resource irq_resource = {