|
@@ -298,8 +298,8 @@ static void gic_handle_cascade_irq(unsigned int irq, struct irq_desc *desc)
|
|
|
status = readl_relaxed(gic_data_cpu_base(chip_data) + GIC_CPU_INTACK);
|
|
|
raw_spin_unlock(&irq_controller_lock);
|
|
|
|
|
|
- gic_irq = (status & 0x3ff);
|
|
|
- if (gic_irq == 1023)
|
|
|
+ gic_irq = (status & GICC_IAR_INT_ID_MASK);
|
|
|
+ if (gic_irq == GICC_INT_SPURIOUS)
|
|
|
goto out;
|
|
|
|
|
|
cascade_irq = irq_find_mapping(chip_data->domain, gic_irq);
|
|
@@ -360,7 +360,7 @@ static void __init gic_dist_init(struct gic_chip_data *gic)
|
|
|
unsigned int gic_irqs = gic->gic_irqs;
|
|
|
void __iomem *base = gic_data_dist_base(gic);
|
|
|
|
|
|
- writel_relaxed(0, base + GIC_DIST_CTRL);
|
|
|
+ writel_relaxed(GICD_DISABLE, base + GIC_DIST_CTRL);
|
|
|
|
|
|
/*
|
|
|
* Set all global interrupts to this CPU only.
|
|
@@ -373,7 +373,7 @@ static void __init gic_dist_init(struct gic_chip_data *gic)
|
|
|
|
|
|
gic_dist_config(base, gic_irqs, NULL);
|
|
|
|
|
|
- writel_relaxed(1, base + GIC_DIST_CTRL);
|
|
|
+ writel_relaxed(GICD_ENABLE, base + GIC_DIST_CTRL);
|
|
|
}
|
|
|
|
|
|
static void gic_cpu_init(struct gic_chip_data *gic)
|
|
@@ -400,8 +400,8 @@ static void gic_cpu_init(struct gic_chip_data *gic)
|
|
|
|
|
|
gic_cpu_config(dist_base, NULL);
|
|
|
|
|
|
- writel_relaxed(0xf0, base + GIC_CPU_PRIMASK);
|
|
|
- writel_relaxed(1, base + GIC_CPU_CTRL);
|
|
|
+ writel_relaxed(GICC_INT_PRI_THRESHOLD, base + GIC_CPU_PRIMASK);
|
|
|
+ writel_relaxed(GICC_ENABLE, base + GIC_CPU_CTRL);
|
|
|
}
|
|
|
|
|
|
void gic_cpu_if_down(void)
|
|
@@ -467,14 +467,14 @@ static void gic_dist_restore(unsigned int gic_nr)
|
|
|
if (!dist_base)
|
|
|
return;
|
|
|
|
|
|
- writel_relaxed(0, dist_base + GIC_DIST_CTRL);
|
|
|
+ writel_relaxed(GICD_DISABLE, dist_base + GIC_DIST_CTRL);
|
|
|
|
|
|
for (i = 0; i < DIV_ROUND_UP(gic_irqs, 16); i++)
|
|
|
writel_relaxed(gic_data[gic_nr].saved_spi_conf[i],
|
|
|
dist_base + GIC_DIST_CONFIG + i * 4);
|
|
|
|
|
|
for (i = 0; i < DIV_ROUND_UP(gic_irqs, 4); i++)
|
|
|
- writel_relaxed(0xa0a0a0a0,
|
|
|
+ writel_relaxed(GICD_INT_DEF_PRI_X4,
|
|
|
dist_base + GIC_DIST_PRI + i * 4);
|
|
|
|
|
|
for (i = 0; i < DIV_ROUND_UP(gic_irqs, 4); i++)
|
|
@@ -485,7 +485,7 @@ static void gic_dist_restore(unsigned int gic_nr)
|
|
|
writel_relaxed(gic_data[gic_nr].saved_spi_enable[i],
|
|
|
dist_base + GIC_DIST_ENABLE_SET + i * 4);
|
|
|
|
|
|
- writel_relaxed(1, dist_base + GIC_DIST_CTRL);
|
|
|
+ writel_relaxed(GICD_ENABLE, dist_base + GIC_DIST_CTRL);
|
|
|
}
|
|
|
|
|
|
static void gic_cpu_save(unsigned int gic_nr)
|
|
@@ -539,10 +539,11 @@ static void gic_cpu_restore(unsigned int gic_nr)
|
|
|
writel_relaxed(ptr[i], dist_base + GIC_DIST_CONFIG + i * 4);
|
|
|
|
|
|
for (i = 0; i < DIV_ROUND_UP(32, 4); i++)
|
|
|
- writel_relaxed(0xa0a0a0a0, dist_base + GIC_DIST_PRI + i * 4);
|
|
|
+ writel_relaxed(GICD_INT_DEF_PRI_X4,
|
|
|
+ dist_base + GIC_DIST_PRI + i * 4);
|
|
|
|
|
|
- writel_relaxed(0xf0, cpu_base + GIC_CPU_PRIMASK);
|
|
|
- writel_relaxed(1, cpu_base + GIC_CPU_CTRL);
|
|
|
+ writel_relaxed(GICC_INT_PRI_THRESHOLD, cpu_base + GIC_CPU_PRIMASK);
|
|
|
+ writel_relaxed(GICC_ENABLE, cpu_base + GIC_CPU_CTRL);
|
|
|
}
|
|
|
|
|
|
static int gic_notifier(struct notifier_block *self, unsigned long cmd, void *v)
|