[DRIVERS] irqchip: Use EOImode for GIC with virtualization extensions

We need to support host-to-guest irq routing in VGIC. To do that, the
GICv2 spec recommends us to use EOImode. To enable EOImode, we need to
set GICC_CTRL.EOImodeNS bit for each acitive GIC CPU interface.

When GICC_CTRL.EOImodeNS==1, the end-of-interrupt is divided into two
steps, which are:
1. De-prioritize the interrupt by writing the irq number to GICC_EOI
register
2. De-activate the interrupt by writing the irq number to GICC_DIR
register

When GICC_CTRL.EOImodeNS==0, the end-of-interrupt is just one step
that is writing irq number to GICC_EOI register.

For rounting irq from host to guest, we need to do the following:
1. Take interrupt in hypervisor with EOImode enabled (i.e.
GICC_CTRL.EOImode==1)
2. Upon receipt of routed host irq, only de-prioritize it but don't
de-activate it. (i.e. only write host irq number to GICC_EOI register)
3. Queue the host irq as virtual guest irq with maintainence interrupt
enabled using GICH_LRx registers.
4. When guest writes to GICV_EOI register after handling guest irq
we will get maintainence interrupt.
5. Upon receipt of maintainence interrupt for guest irq, de-activate
the host irq by writing host irq number to GICC_DIR register.

This patch changes the GIC driver to use EOImode for GIC with
virtualization extensions so that we can implement host-to-guest
irq routing in VGIC driver.

Signed-off-by: Anup Patel <anup@brainfault.org>