[ARM] tegra: irq: Implement retrigger
authorColin Cross <ccross@android.com>
Sat, 2 Oct 2010 02:16:54 +0000 (19:16 -0700)
committerColin Cross <ccross@android.com>
Thu, 7 Oct 2010 23:14:49 +0000 (16:14 -0700)
Change-Id: I5be02f60f1b0f35835a8d05abdb2934cdafb1122
Signed-off-by: Colin Cross <ccross@android.com>
arch/arm/mach-tegra/irq.c

index ced7007c0610f4276af252b430fd4240579be34f..6936c8d5f2e456ade73d0d9cc06c2743b00bc06b 100644 (file)
@@ -202,9 +202,21 @@ static int tegra_set_type(unsigned int irq, unsigned int flow_type)
        return 0;
 }
 
+static void tegra_ack(unsigned int irq)
+{
+       tegra_legacy_force_irq_clr(irq);
+       gic_ack_irq(irq);
+}
+
+static int tegra_retrigger(unsigned int irq)
+{
+       tegra_legacy_force_irq_set(irq);
+       return 1;
+}
+
 static struct irq_chip tegra_irq = {
        .name           = "PPI",
-       .ack            = gic_ack_irq,
+       .ack            = tegra_ack,
        .mask           = tegra_mask,
        .unmask         = tegra_unmask,
        .set_wake       = tegra_set_wake,
@@ -212,6 +224,7 @@ static struct irq_chip tegra_irq = {
 #ifdef CONFIG_SMP
        .set_affinity   = gic_set_cpu,
 #endif
+       .retrigger      = tegra_retrigger,
 };
 
 void __init tegra_init_irq(void)