summaryrefslogtreecommitdiffstats
path: root/arch/arm/common/vic.c
diff options
context:
space:
mode:
authorOlof Johansson <olof@lixom.net>2013-01-17 04:58:08 +0100
committerOlof Johansson <olof@lixom.net>2013-01-17 04:58:58 +0100
commit5046e385b4426e229a6beb4bce480762af91a6fc (patch)
tree65b4bff2c913a18840b3c58892853d51b942ac43 /arch/arm/common/vic.c
parentARM: compile fix for DEBUG_LL=y && MMU=n (diff)
parentARM: S3C64XX: Fix up IRQ mapping for balblair on Cragganmore (diff)
downloadlinux-5046e385b4426e229a6beb4bce480762af91a6fc.tar.xz
linux-5046e385b4426e229a6beb4bce480762af91a6fc.zip
Merge branch 'v3.8-samsung-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into fixes
From Kukjin Kim: That branch fixes build error for S3C24XX/S3C64xx. And corrects dw-mshc properties on EXYNOS5 DT and fixes IRQ mapping on Cragganmore board. * 'v3.8-samsung-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung: ARM: S3C64XX: Fix up IRQ mapping for balblair on Cragganmore ARM: dts: correct the dw-mshc timing properties as per binding ARM: S3C64XX: Fix build error with CONFIG_S3C_DEV_FB disabled + Linux 3.8-rc3 Signed-off-by: Olof Johansson <olof@lixom.net>
Diffstat (limited to 'arch/arm/common/vic.c')
-rw-r--r--arch/arm/common/vic.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/arm/common/vic.c b/arch/arm/common/vic.c
index e4df17ca90c7..8f324b99416e 100644
--- a/arch/arm/common/vic.c
+++ b/arch/arm/common/vic.c
@@ -206,6 +206,7 @@ static void __init vic_register(void __iomem *base, unsigned int irq,
struct device_node *node)
{
struct vic_device *v;
+ int i;
if (vic_id >= ARRAY_SIZE(vic_devices)) {
printk(KERN_ERR "%s: too few VICs, increase CONFIG_ARM_VIC_NR\n", __func__);
@@ -220,6 +221,10 @@ static void __init vic_register(void __iomem *base, unsigned int irq,
vic_id++;
v->domain = irq_domain_add_simple(node, fls(valid_sources), irq,
&vic_irqdomain_ops, v);
+ /* create an IRQ mapping for each valid IRQ */
+ for (i = 0; i < fls(valid_sources); i++)
+ if (valid_sources & (1 << i))
+ irq_create_mapping(v->domain, i);
}
static void vic_ack_irq(struct irq_data *d)
@@ -416,9 +421,9 @@ int __init vic_of_init(struct device_node *node, struct device_node *parent)
return -EIO;
/*
- * Passing -1 as first IRQ makes the simple domain allocate descriptors
+ * Passing 0 as first IRQ makes the simple domain allocate descriptors
*/
- __vic_init(regs, -1, ~0, ~0, node);
+ __vic_init(regs, 0, ~0, ~0, node);
return 0;
}