aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/sh
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2010-10-02 22:02:07 +0900
committerPaul Mundt <lethal@linux-sh.org>2010-10-02 22:02:07 +0900
commit4bacd796ccd6976b03dd490708a1abc291d5521e (patch)
tree0c0c1d242940e9fdf83952a821a20e2bdcdf0927 /drivers/sh
parent742759eae6b58a172d8f79ff0938d1e25dc9abc5 (diff)
downloadkernel_samsung_smdk4412-4bacd796ccd6976b03dd490708a1abc291d5521e.zip
kernel_samsung_smdk4412-4bacd796ccd6976b03dd490708a1abc291d5521e.tar.gz
kernel_samsung_smdk4412-4bacd796ccd6976b03dd490708a1abc291d5521e.tar.bz2
sh: Support early IRQ vector map reservation for delayed controllers.
Some controllers will need to be initialized lazily due to pinmux constraints, while others may simply have no need to be brought online if there are no backing devices for them attached. In this case it's still necessary to be able to reserve their hardware vector map before dynamic IRQs get a hold of them. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'drivers/sh')
-rw-r--r--drivers/sh/intc.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/sh/intc.c b/drivers/sh/intc.c
index e91a23e..4e01d65 100644
--- a/drivers/sh/intc.c
+++ b/drivers/sh/intc.c
@@ -1377,6 +1377,17 @@ int reserve_irq_vector(unsigned int irq)
return ret;
}
+void reserve_intc_vectors(struct intc_vect *vectors, unsigned int nr_vecs)
+{
+ unsigned long flags;
+ int i;
+
+ spin_lock_irqsave(&vector_lock, flags);
+ for (i = 0; i < nr_vecs; i++)
+ __set_bit(evt2irq(vectors[i].vect), intc_irq_map);
+ spin_unlock_irqrestore(&vector_lock, flags);
+}
+
void reserve_irq_legacy(void)
{
unsigned long flags;