[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 01/25] i.MX: add support for lower and upper interrup
From: |
Peter Maydell |
Subject: |
[Qemu-devel] [PULL 01/25] i.MX: add support for lower and upper interrupt in GPIO. |
Date: |
Thu, 17 Dec 2015 11:49:56 +0000 |
From: Jean-Christophe Dubois <address@hidden>
The i.MX6 GPIO device supports 2 interrupts instead of one.
* 1 for the lower 16 GPIOs.
* 1 for the upper 16 GPIOs.
i.MX31 and i.MX25 only support 1 interrupt for the 32 GPIOs.
So we add a property to turn the behavior on when required.
Signed-off-by: Jean-Christophe Dubois <address@hidden>
Reviewed-by: Peter Crosthwaite <address@hidden>
Message-id: address@hidden
Signed-off-by: Peter Maydell <address@hidden>
---
hw/gpio/imx_gpio.c | 12 ++++++++++--
include/hw/gpio/imx_gpio.h | 3 ++-
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/hw/gpio/imx_gpio.c b/hw/gpio/imx_gpio.c
index 3170585..a6d7cab 100644
--- a/hw/gpio/imx_gpio.c
+++ b/hw/gpio/imx_gpio.c
@@ -62,7 +62,12 @@ static const char *imx_gpio_reg_name(uint32_t reg)
static void imx_gpio_update_int(IMXGPIOState *s)
{
- qemu_set_irq(s->irq, (s->isr & s->imr) ? 1 : 0);
+ if (s->has_upper_pin_irq) {
+ qemu_set_irq(s->irq[0], (s->isr & s->imr & 0x0000FFFF) ? 1 : 0);
+ qemu_set_irq(s->irq[1], (s->isr & s->imr & 0xFFFF0000) ? 1 : 0);
+ } else {
+ qemu_set_irq(s->irq[0], (s->isr & s->imr) ? 1 : 0);
+ }
}
static void imx_gpio_set_int_line(IMXGPIOState *s, int line, IMXGPIOLevel
level)
@@ -282,6 +287,8 @@ static const VMStateDescription vmstate_imx_gpio = {
static Property imx_gpio_properties[] = {
DEFINE_PROP_BOOL("has-edge-sel", IMXGPIOState, has_edge_sel, true),
+ DEFINE_PROP_BOOL("has-upper-pin-irq", IMXGPIOState, has_upper_pin_irq,
+ false),
DEFINE_PROP_END_OF_LIST(),
};
@@ -311,7 +318,8 @@ static void imx_gpio_realize(DeviceState *dev, Error **errp)
qdev_init_gpio_in(DEVICE(s), imx_gpio_set, IMX_GPIO_PIN_COUNT);
qdev_init_gpio_out(DEVICE(s), s->output, IMX_GPIO_PIN_COUNT);
- sysbus_init_irq(SYS_BUS_DEVICE(dev), &s->irq);
+ sysbus_init_irq(SYS_BUS_DEVICE(dev), &s->irq[0]);
+ sysbus_init_irq(SYS_BUS_DEVICE(dev), &s->irq[1]);
sysbus_init_mmio(SYS_BUS_DEVICE(dev), &s->iomem);
}
diff --git a/include/hw/gpio/imx_gpio.h b/include/hw/gpio/imx_gpio.h
index 517b261..b15a09f 100644
--- a/include/hw/gpio/imx_gpio.h
+++ b/include/hw/gpio/imx_gpio.h
@@ -54,8 +54,9 @@ typedef struct IMXGPIOState {
uint32_t isr;
bool has_edge_sel;
uint32_t edge_sel;
+ bool has_upper_pin_irq;
- qemu_irq irq;
+ qemu_irq irq[2];
qemu_irq output[IMX_GPIO_PIN_COUNT];
} IMXGPIOState;
--
1.9.1
- [Qemu-devel] [PULL 18/25] target-arm: kvm - support for single step, (continued)
- [Qemu-devel] [PULL 18/25] target-arm: kvm - support for single step, Peter Maydell, 2015/12/17
- [Qemu-devel] [PULL 10/25] ARM: ACPI: Add power button device in ACPI DSDT table, Peter Maydell, 2015/12/17
- [Qemu-devel] [PULL 15/25] ARM: Virt: Add gpio-keys node for Poweroff using DT, Peter Maydell, 2015/12/17
- [Qemu-devel] [PULL 16/25] target-arm: kvm64 - introduce kvm_arm_init_debug(), Peter Maydell, 2015/12/17
- [Qemu-devel] [PULL 25/25] i.MX: Add an i.MX25 specific CCM class/instance, Peter Maydell, 2015/12/17
- [Qemu-devel] [PULL 14/25] ARM: Virt: Add QEMU powerdown notifier and hook it to GPIO Pin 3, Peter Maydell, 2015/12/17
- [Qemu-devel] [PULL 07/25] acpi: extend aml_interrupt() to support multiple irqs, Peter Maydell, 2015/12/17
- [Qemu-devel] [PULL 12/25] ACPI: Add aml_gpio_int() wrapper for GPIO Interrupt Connection, Peter Maydell, 2015/12/17
- [Qemu-devel] [PULL 08/25] ARM: Virt: Add a GPIO controller, Peter Maydell, 2015/12/17
- [Qemu-devel] [PULL 03/25] arm: soc-dma: use hwaddr instead of target_ulong in printf, Peter Maydell, 2015/12/17
- [Qemu-devel] [PULL 01/25] i.MX: add support for lower and upper interrupt in GPIO.,
Peter Maydell <=
- [Qemu-devel] [PULL 04/25] target-arm: raise exception on misaligned LDREX operands, Peter Maydell, 2015/12/17
- [Qemu-devel] [PULL 09/25] ARM: ACPI: Add GPIO controller in ACPI DSDT table, Peter Maydell, 2015/12/17
- [Qemu-devel] [PULL 13/25] ARM: ACPI: Add _E03 for Power Button, Peter Maydell, 2015/12/17
- [Qemu-devel] [PULL 11/25] ACPI: Add GPIO Connection Descriptor, Peter Maydell, 2015/12/17
- [Qemu-devel] [PULL 06/25] acpi: support serialized method, Peter Maydell, 2015/12/17
- [Qemu-devel] [PULL 02/25] arm: explicitly mark device loads as little-endian, Peter Maydell, 2015/12/17
- Re: [Qemu-devel] [PULL 00/25] target-arm queue, Peter Maydell, 2015/12/17