diff options
Diffstat (limited to 'arch/arm/common/gic.c')
-rw-r--r-- | arch/arm/common/gic.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/arch/arm/common/gic.c b/arch/arm/common/gic.c index a1feb6b4f9f..b2dc2dd7f1d 100644 --- a/arch/arm/common/gic.c +++ b/arch/arm/common/gic.c | |||
@@ -612,7 +612,8 @@ static void __init gic_pm_init(struct gic_chip_data *gic) | |||
612 | sizeof(u32)); | 612 | sizeof(u32)); |
613 | BUG_ON(!gic->saved_ppi_conf); | 613 | BUG_ON(!gic->saved_ppi_conf); |
614 | 614 | ||
615 | cpu_pm_register_notifier(&gic_notifier_block); | 615 | if (gic == &gic_data[0]) |
616 | cpu_pm_register_notifier(&gic_notifier_block); | ||
616 | } | 617 | } |
617 | #else | 618 | #else |
618 | static void __init gic_pm_init(struct gic_chip_data *gic) | 619 | static void __init gic_pm_init(struct gic_chip_data *gic) |
@@ -696,12 +697,14 @@ void __init gic_init_bases(unsigned int gic_nr, int irq_start, | |||
696 | * For primary GICs, skip over SGIs. | 697 | * For primary GICs, skip over SGIs. |
697 | * For secondary GICs, skip over PPIs, too. | 698 | * For secondary GICs, skip over PPIs, too. |
698 | */ | 699 | */ |
700 | domain->hwirq_base = 32; | ||
699 | if (gic_nr == 0) { | 701 | if (gic_nr == 0) { |
700 | domain->hwirq_base = 16; | 702 | if ((irq_start & 31) > 0) { |
701 | if (irq_start > 0) | 703 | domain->hwirq_base = 16; |
702 | irq_start = (irq_start & ~31) + 16; | 704 | if (irq_start != -1) |
703 | } else | 705 | irq_start = (irq_start & ~31) + 16; |
704 | domain->hwirq_base = 32; | 706 | } |
707 | } | ||
705 | 708 | ||
706 | /* | 709 | /* |
707 | * Find out how many interrupts are supported. | 710 | * Find out how many interrupts are supported. |