|
@@ -655,6 +655,10 @@ static const struct irq_domain_ops gic_ipi_domain_ops = {
|
|
|
|
|
|
static int gic_cpu_startup(unsigned int cpu)
|
|
|
{
|
|
|
+ /* Enable or disable EIC */
|
|
|
+ change_gic_vl_ctl(GIC_VX_CTL_EIC,
|
|
|
+ cpu_has_veic ? GIC_VX_CTL_EIC : 0);
|
|
|
+
|
|
|
/* Clear all local IRQ masks (ie. disable all local interrupts) */
|
|
|
write_gic_vl_rmask(~0);
|
|
|
|
|
@@ -667,7 +671,7 @@ static int gic_cpu_startup(unsigned int cpu)
|
|
|
static int __init gic_of_init(struct device_node *node,
|
|
|
struct device_node *parent)
|
|
|
{
|
|
|
- unsigned int cpu_vec, i, gicconfig, cpu, v[2];
|
|
|
+ unsigned int cpu_vec, i, gicconfig, v[2];
|
|
|
unsigned long reserved;
|
|
|
phys_addr_t gic_base;
|
|
|
struct resource res;
|
|
@@ -722,12 +726,6 @@ static int __init gic_of_init(struct device_node *node,
|
|
|
gic_vpes = gic_vpes + 1;
|
|
|
|
|
|
if (cpu_has_veic) {
|
|
|
- /* Set EIC mode for all VPEs */
|
|
|
- for_each_present_cpu(cpu) {
|
|
|
- write_gic_vl_other(mips_cm_vp_id(cpu));
|
|
|
- write_gic_vo_ctl(GIC_VX_CTL_EIC);
|
|
|
- }
|
|
|
-
|
|
|
/* Always use vector 1 in EIC mode */
|
|
|
gic_cpu_pin = 0;
|
|
|
timer_cpu_pin = gic_cpu_pin;
|