arm_gicv2m: Add GICv2m widget to support MSIs
authorChristoffer Dall <christoffer.dall@linaro.org>
Tue, 2 Jun 2015 13:56:23 +0000 (14:56 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Tue, 2 Jun 2015 13:56:25 +0000 (14:56 +0100)
commit770c58f8d10b61e80a211d87df83670711631530
tree80d851d98dce98604182a228601d37295fba82cc
parent747d009dcac37ce7372b58b21c168f0ad66cf7be
arm_gicv2m: Add GICv2m widget to support MSIs

The ARM GICv2m widget is a little device that handles MSI interrupt
writes to a trigger register and ties them to a range of interrupt lines
wires to the GIC.  It has a few status/id registers and the interrupt wires,
and that's about it.

A board instantiates the device by setting the base SPI number and
number SPIs for the frame.  The base-spi parameter is indexed in the SPI
number space only, so base-spi == 0, means IRQ number 32.  When a device
(the PCI host controller) writes to the trigger register, the payload is
the GIC IRQ number, so we have to subtract 32 from that and then index
into our frame of SPIs.

When instantiating a GICv2m device, tell PCI that we have instantiated
something that can deal with MSIs.  We rely on the board actually wiring
up the GICv2m to the PCI host controller.

Reviewed-by: Eric Auger <eric.auger@linaro.org>
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
Message-id: 1432897270-7780-3-git-send-email-christoffer.dall@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
hw/intc/Makefile.objs
hw/intc/arm_gicv2m.c [new file with mode: 0644]