[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 08/15] hw/arm/allwinner-a10: Simplify by passing IRQs with qdev_pa
From: |
Peter Maydell |
Subject: |
[PULL 08/15] hw/arm/allwinner-a10: Simplify by passing IRQs with qdev_pass_gpios() |
Date: |
Fri, 17 Jan 2020 14:28:09 +0000 |
From: Philippe Mathieu-Daudé <address@hidden>
By calling qdev_pass_gpios() we don't need to hold a copy of the
IRQs from the INTC into the SoC state.
Instead of filling an array of qemu_irq and passing it around, we
can now directly call qdev_get_gpio_in() on the SoC.
Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
Message-id: address@hidden
Signed-off-by: Peter Maydell <address@hidden>
Reviewed-by: Peter Maydell <address@hidden>
---
include/hw/arm/allwinner-a10.h | 1 -
hw/arm/allwinner-a10.c | 24 +++++++++++-------------
2 files changed, 11 insertions(+), 14 deletions(-)
diff --git a/include/hw/arm/allwinner-a10.h b/include/hw/arm/allwinner-a10.h
index 941c61e5336..40d0b1d9c05 100644
--- a/include/hw/arm/allwinner-a10.h
+++ b/include/hw/arm/allwinner-a10.h
@@ -23,7 +23,6 @@ typedef struct AwA10State {
/*< public >*/
ARMCPU cpu;
- qemu_irq irq[AW_A10_PIC_INT_NR];
AwA10PITState timer;
AwA10PICState intc;
AwEmacState emac;
diff --git a/hw/arm/allwinner-a10.c b/hw/arm/allwinner-a10.c
index 0f1af5a880f..966fbd4a6e5 100644
--- a/hw/arm/allwinner-a10.c
+++ b/hw/arm/allwinner-a10.c
@@ -55,7 +55,6 @@ static void aw_a10_realize(DeviceState *dev, Error **errp)
{
AwA10State *s = AW_A10(dev);
SysBusDevice *sysbusdev;
- uint8_t i;
qemu_irq fiq, irq;
Error *err = NULL;
@@ -76,9 +75,7 @@ static void aw_a10_realize(DeviceState *dev, Error **errp)
sysbus_mmio_map(sysbusdev, 0, AW_A10_PIC_REG_BASE);
sysbus_connect_irq(sysbusdev, 0, irq);
sysbus_connect_irq(sysbusdev, 1, fiq);
- for (i = 0; i < AW_A10_PIC_INT_NR; i++) {
- s->irq[i] = qdev_get_gpio_in(DEVICE(&s->intc), i);
- }
+ qdev_pass_gpios(DEVICE(&s->intc), dev, NULL);
object_property_set_bool(OBJECT(&s->timer), true, "realized", &err);
if (err != NULL) {
@@ -87,12 +84,12 @@ static void aw_a10_realize(DeviceState *dev, Error **errp)
}
sysbusdev = SYS_BUS_DEVICE(&s->timer);
sysbus_mmio_map(sysbusdev, 0, AW_A10_PIT_REG_BASE);
- sysbus_connect_irq(sysbusdev, 0, s->irq[22]);
- sysbus_connect_irq(sysbusdev, 1, s->irq[23]);
- sysbus_connect_irq(sysbusdev, 2, s->irq[24]);
- sysbus_connect_irq(sysbusdev, 3, s->irq[25]);
- sysbus_connect_irq(sysbusdev, 4, s->irq[67]);
- sysbus_connect_irq(sysbusdev, 5, s->irq[68]);
+ sysbus_connect_irq(sysbusdev, 0, qdev_get_gpio_in(dev, 22));
+ sysbus_connect_irq(sysbusdev, 1, qdev_get_gpio_in(dev, 23));
+ sysbus_connect_irq(sysbusdev, 2, qdev_get_gpio_in(dev, 24));
+ sysbus_connect_irq(sysbusdev, 3, qdev_get_gpio_in(dev, 25));
+ sysbus_connect_irq(sysbusdev, 4, qdev_get_gpio_in(dev, 67));
+ sysbus_connect_irq(sysbusdev, 5, qdev_get_gpio_in(dev, 68));
memory_region_init_ram(&s->sram_a, OBJECT(dev), "sram A", 48 * KiB,
&error_fatal);
@@ -111,7 +108,7 @@ static void aw_a10_realize(DeviceState *dev, Error **errp)
}
sysbusdev = SYS_BUS_DEVICE(&s->emac);
sysbus_mmio_map(sysbusdev, 0, AW_A10_EMAC_BASE);
- sysbus_connect_irq(sysbusdev, 0, s->irq[55]);
+ sysbus_connect_irq(sysbusdev, 0, qdev_get_gpio_in(dev, 55));
object_property_set_bool(OBJECT(&s->sata), true, "realized", &err);
if (err) {
@@ -119,10 +116,11 @@ static void aw_a10_realize(DeviceState *dev, Error **errp)
return;
}
sysbus_mmio_map(SYS_BUS_DEVICE(&s->sata), 0, AW_A10_SATA_BASE);
- sysbus_connect_irq(SYS_BUS_DEVICE(&s->sata), 0, s->irq[56]);
+ sysbus_connect_irq(SYS_BUS_DEVICE(&s->sata), 0, qdev_get_gpio_in(dev, 56));
/* FIXME use a qdev chardev prop instead of serial_hd() */
- serial_mm_init(get_system_memory(), AW_A10_UART0_REG_BASE, 2, s->irq[1],
+ serial_mm_init(get_system_memory(), AW_A10_UART0_REG_BASE, 2,
+ qdev_get_gpio_in(dev, 1),
115200, serial_hd(0), DEVICE_NATIVE_ENDIAN);
}
--
2.20.1
- [PULL 00/15] target-arm queue, Peter Maydell, 2020/01/17
- [PULL 01/15] hw/misc: Add the STM32F4xx Sysconfig device, Peter Maydell, 2020/01/17
- [PULL 02/15] hw/misc: Add the STM32F4xx EXTI device, Peter Maydell, 2020/01/17
- [PULL 03/15] hw/arm: Add the STM32F4xx SoC, Peter Maydell, 2020/01/17
- [PULL 04/15] hw/arm: Add the Netduino Plus 2, Peter Maydell, 2020/01/17
- [PULL 05/15] tests/boot_linux_console: Add initrd test for the CubieBoard, Peter Maydell, 2020/01/17
- [PULL 08/15] hw/arm/allwinner-a10: Simplify by passing IRQs with qdev_pass_gpios(),
Peter Maydell <=
- [PULL 07/15] hw/arm/allwinner-a10: Move SoC definitions out of header, Peter Maydell, 2020/01/17
- [PULL 06/15] tests/boot_linux_console: Add a SD card test for the CubieBoard, Peter Maydell, 2020/01/17
- [PULL 09/15] hw/arm/allwinner-a10: Remove local qemu_irq variables, Peter Maydell, 2020/01/17
- [PULL 10/15] target/arm/arm-semi: fix SYS_OPEN to return nonzero filehandle, Peter Maydell, 2020/01/17
- [PULL 12/15] target/arm: adjust program counter for wfi exception in AArch32, Peter Maydell, 2020/01/17
- [PULL 11/15] i.MX: add an emulation for RNGC, Peter Maydell, 2020/01/17
- [PULL 14/15] target/arm: Return correct IL bit in merge_syn_data_abort, Peter Maydell, 2020/01/17
- [PULL 15/15] target/arm: Set ISSIs16Bit in make_issinfo, Peter Maydell, 2020/01/17
- [PULL 13/15] arm/gicv3: update virtual irq state after IAR register read, Peter Maydell, 2020/01/17
- Re: [PULL 00/15] target-arm queue, Peter Maydell, 2020/01/17