Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 272940
b: refs/heads/master
c: f37a53c
h: refs/heads/master
v: v3
  • Loading branch information
Rob Herring authored and Arnd Bergmann committed Oct 31, 2011
1 parent b950a20 commit db31c1c
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 6 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b3f7ed0324091e2cb23fe1b3c10570700f614014
refs/heads/master: f37a53cc5d8a8fb199e41386d125d8c2ed9e54ef
15 changes: 11 additions & 4 deletions trunk/arch/arm/common/gic.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
*/
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/err.h>
#include <linux/export.h>
#include <linux/list.h>
#include <linux/smp.h>
Expand Down Expand Up @@ -562,7 +563,7 @@ const struct irq_domain_ops gic_irq_domain_ops = {
#endif
};

void __init gic_init(unsigned int gic_nr, unsigned int irq_start,
void __init gic_init(unsigned int gic_nr, int irq_start,
void __iomem *dist_base, void __iomem *cpu_base)
{
struct gic_chip_data *gic;
Expand All @@ -583,7 +584,8 @@ void __init gic_init(unsigned int gic_nr, unsigned int irq_start,
if (gic_nr == 0) {
gic_cpu_base_addr = cpu_base;
domain->hwirq_base = 16;
irq_start = (irq_start & ~31) + 16;
if (irq_start > 0)
irq_start = (irq_start & ~31) + 16;
} else
domain->hwirq_base = 32;

Expand All @@ -598,8 +600,13 @@ void __init gic_init(unsigned int gic_nr, unsigned int irq_start,
gic->gic_irqs = gic_irqs;

domain->nr_irq = gic_irqs - domain->hwirq_base;
domain->irq_base = irq_alloc_descs(-1, irq_start, domain->nr_irq,
domain->irq_base = irq_alloc_descs(irq_start, 16, domain->nr_irq,
numa_node_id());
if (IS_ERR_VALUE(domain->irq_base)) {
WARN(1, "Cannot allocate irq_descs @ IRQ%d, assuming pre-allocated\n",
irq_start);
domain->irq_base = irq_start;
}
domain->priv = gic;
domain->ops = &gic_irq_domain_ops;
irq_domain_add(domain);
Expand Down Expand Up @@ -659,7 +666,7 @@ int __init gic_of_init(struct device_node *node, struct device_node *parent)

domain->of_node = of_node_get(node);

gic_init(gic_cnt, 16, dist_base, cpu_base);
gic_init(gic_cnt, -1, dist_base, cpu_base);

if (parent) {
irq = irq_of_parse_and_map(node, 0);
Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/arm/include/asm/hardware/gic.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ struct device_node;
extern void __iomem *gic_cpu_base_addr;
extern struct irq_chip gic_arch_extn;

void gic_init(unsigned int, unsigned int, void __iomem *, void __iomem *);
void gic_init(unsigned int, int, void __iomem *, void __iomem *);
int gic_of_init(struct device_node *node, struct device_node *parent);
void gic_secondary_init(unsigned int);
void gic_cascade_irq(unsigned int gic_nr, unsigned int irq);
Expand Down

0 comments on commit db31c1c

Please sign in to comment.