Thread (66 messages) flat view 66 messages, 4 authors, 2011-03-01
STALE5679d

[PATCH 1/5] ARM: gic: Add hooks for architecture specific extensions

From: Colin Cross <hidden>
Date: 2011-01-26 07:52:51
Also in: linux-omap

On Tue, Jan 25, 2011 at 11:31 PM, Santosh Shilimkar
[off-list ref] wrote:
quoted
-----Original Message-----
From: ccross at google.com [mailto:ccross at google.com] On Behalf Of
Colin Cross
Sent: Wednesday, January 26, 2011 12:54 PM
To: Santosh Shilimkar
Cc: linux-arm-kernel at lists.infradead.org; linux-
omap at vger.kernel.org; catalin.marinas at arm.com;
linux at arm.linux.org.uk; linus.ml.walleij at gmail.com; Russell King
Subject: Re: [PATCH 1/5] ARM: gic: Add hooks for architecture
specific extensions
[....]
quoted
quoted
quoted
Great.
Can I fold below changes in my patch and add you ack and tested-
by?

Sure
After reading your initial comment, you mentioned you need to have
'gic_set_type' as well. Is this still true. If yes then we need to
have arch_extn call for that as well.
You are right, I missed adding the extension for gic_set_type.  My
testing doesn't cover that case right now, because I don't have any
drivers updated to linux-next that use a wake source that is
compatible with Tegra's lowest power suspend mode, and that is the
only time the extension to gic_set_type is necessary.
quoted
quoted
quoted
diff --git a/arch/arm/common/gic.c b/arch/arm/common/gic.c
index 0b6c043..7993f07 100644
--- a/arch/arm/common/gic.c
+++ b/arch/arm/common/gic.c
@@ -90,6 +90,8 @@ static inline unsigned int gic_irq(struct
irq_data
quoted
quoted
*d)
?static void gic_ack_irq(struct irq_data *d)
?{
? ? ? spin_lock(&irq_controller_lock);
+ ? ? if (gic_arch_extn.irq_ack)
+ ? ? ? ? ? ? gic_arch_extn.irq_ack(d);
? ? ? writel(gic_irq(d), gic_cpu_base(d) + GIC_CPU_EOI);
? ? ? spin_unlock(&irq_controller_lock);
?}
@@ -161,6 +163,14 @@ static int gic_set_type(struct irq_data *d,
unsigned int type)
? ? ? return 0;
?}

+static int gic_retrigger(struct irq_data *d)
+{
+ ? ? if (gic_arch_extn.irq_retrigger)
+ ? ? ? ? ? ? return gic_arch_extn.irq_retrigger(d);
+
+ ? ? return 0;
+}
+
?#ifdef CONFIG_SMP
?static int
?gic_set_cpu(struct irq_data *d, const struct cpumask *mask_val,
bool force)
@@ -234,6 +244,7 @@ static struct irq_chip gic_chip = {
? ? ? .irq_mask ? ? ? ? ? ? ? = gic_mask_irq,
? ? ? .irq_unmask ? ? ? ? ? ? = gic_unmask_irq,
? ? ? .irq_set_type ? ? ? ? ? = gic_set_type,
+ ? ? .irq_retrigger ? ? ? ? ?= gic_retrigger,
?#ifdef CONFIG_SMP
? ? ? .irq_set_affinity ? ? ? = gic_set_cpu,
?#endif
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help