diff options
-rw-r--r-- | arch/arm/mach-s3c24xx/irq.c | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/arch/arm/mach-s3c24xx/irq.c b/arch/arm/mach-s3c24xx/irq.c index 3f3de7492094..5257c9fd9e04 100644 --- a/arch/arm/mach-s3c24xx/irq.c +++ b/arch/arm/mach-s3c24xx/irq.c | |||
@@ -324,16 +324,6 @@ static int s3c24xx_irq_map(struct irq_domain *h, unsigned int virq, | |||
324 | struct s3c_irq_data *parent_irq_data; | 324 | struct s3c_irq_data *parent_irq_data; |
325 | unsigned int irqno; | 325 | unsigned int irqno; |
326 | 326 | ||
327 | if (!intc) { | ||
328 | pr_err("irq-s3c24xx: no controller found for hwirq %lu\n", hw); | ||
329 | return -EINVAL; | ||
330 | } | ||
331 | |||
332 | if (!irq_data) { | ||
333 | pr_err("irq-s3c24xx: no irq data found for hwirq %lu\n", hw); | ||
334 | return -EINVAL; | ||
335 | } | ||
336 | |||
337 | /* attach controller pointer to irq_data */ | 327 | /* attach controller pointer to irq_data */ |
338 | irq_data->intc = intc; | 328 | irq_data->intc = intc; |
339 | 329 | ||
@@ -383,13 +373,13 @@ static int s3c24xx_irq_map(struct irq_domain *h, unsigned int virq, | |||
383 | goto err; | 373 | goto err; |
384 | } | 374 | } |
385 | 375 | ||
386 | parent_irq_data = &parent_intc->irqs[irq_data->parent_irq]; | 376 | if (irq_data->parent_irq > 31) { |
387 | if (!irq_data) { | 377 | pr_err("irq-s3c24xx: parent irq %lu is out of range\n", |
388 | pr_err("irq-s3c24xx: no irq data found for hwirq %lu\n", | 378 | irq_data->parent_irq); |
389 | hw); | ||
390 | goto err; | 379 | goto err; |
391 | } | 380 | } |
392 | 381 | ||
382 | parent_irq_data = &parent_intc->irqs[irq_data->parent_irq]; | ||
393 | parent_irq_data->sub_intc = intc; | 383 | parent_irq_data->sub_intc = intc; |
394 | parent_irq_data->sub_bits |= (1UL << hw); | 384 | parent_irq_data->sub_bits |= (1UL << hw); |
395 | 385 | ||