summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/irq.c
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2010-10-01 19:16:54 -0700
committerColin Cross <ccross@android.com>2010-10-07 16:14:49 -0700
commitaee8fd4a24840c8336bba9ad3f992a1083e68897 (patch)
treebc6ea91edd41881c4e4c5992bc735ed10757a45e /arch/arm/mach-tegra/irq.c
parent08c6385bf93dd2255c55e193b341a9ba103adf21 (diff)
[ARM] tegra: irq: Implement retrigger
Change-Id: I5be02f60f1b0f35835a8d05abdb2934cdafb1122 Signed-off-by: Colin Cross <ccross@android.com>
Diffstat (limited to 'arch/arm/mach-tegra/irq.c')
-rw-r--r--arch/arm/mach-tegra/irq.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/arch/arm/mach-tegra/irq.c b/arch/arm/mach-tegra/irq.c
index ced7007c0610..6936c8d5f2e4 100644
--- a/arch/arm/mach-tegra/irq.c
+++ b/arch/arm/mach-tegra/irq.c
@@ -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)