Re: [PATCH 02/33] hw/arm/fsl-imx6: Add a local 'gic' variable

2024-01-02 Thread Cédric Le Goater

On 12/12/23 17:29, Philippe Mathieu-Daudé wrote:

The A9MPCore forward the IRQs from its internal GIC.
To make the code clearer, add a 'gic' variable.

Signed-off-by: Philippe Mathieu-Daudé 



Reviewed-by: Cédric Le Goater 

Thanks,

C.






[PATCH 02/33] hw/arm/fsl-imx6: Add a local 'gic' variable

2023-12-12 Thread Philippe Mathieu-Daudé
The A9MPCore forward the IRQs from its internal GIC.
To make the code clearer, add a 'gic' variable.

Signed-off-by: Philippe Mathieu-Daudé 
---
 hw/arm/fsl-imx6.c | 37 +
 1 file changed, 13 insertions(+), 24 deletions(-)

diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c
index 7dc42cbfe6..f6edbd7465 100644
--- a/hw/arm/fsl-imx6.c
+++ b/hw/arm/fsl-imx6.c
@@ -111,6 +111,7 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
 uint16_t i;
 Error *err = NULL;
 unsigned int smp_cpus = ms->smp.cpus;
+DeviceState *gic = DEVICE(>a9mpcore);
 
 if (smp_cpus > FSL_IMX6_NUM_CPUS) {
 error_setg(errp, "%s: Only %d CPUs are supported (%d requested)",
@@ -186,8 +187,7 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
 
 sysbus_mmio_map(SYS_BUS_DEVICE(>uart[i]), 0, serial_table[i].addr);
 sysbus_connect_irq(SYS_BUS_DEVICE(>uart[i]), 0,
-   qdev_get_gpio_in(DEVICE(>a9mpcore),
-serial_table[i].irq));
+   qdev_get_gpio_in(gic, serial_table[i].irq));
 }
 
 s->gpt.ccm = IMX_CCM(>ccm);
@@ -198,8 +198,7 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
 
 sysbus_mmio_map(SYS_BUS_DEVICE(>gpt), 0, FSL_IMX6_GPT_ADDR);
 sysbus_connect_irq(SYS_BUS_DEVICE(>gpt), 0,
-   qdev_get_gpio_in(DEVICE(>a9mpcore),
-FSL_IMX6_GPT_IRQ));
+   qdev_get_gpio_in(gic, FSL_IMX6_GPT_IRQ));
 
 /* Initialize all EPIT timers */
 for (i = 0; i < FSL_IMX6_NUM_EPITS; i++) {
@@ -219,8 +218,7 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
 
 sysbus_mmio_map(SYS_BUS_DEVICE(>epit[i]), 0, epit_table[i].addr);
 sysbus_connect_irq(SYS_BUS_DEVICE(>epit[i]), 0,
-   qdev_get_gpio_in(DEVICE(>a9mpcore),
-epit_table[i].irq));
+   qdev_get_gpio_in(gic, epit_table[i].irq));
 }
 
 /* Initialize all I2C */
@@ -240,8 +238,7 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
 
 sysbus_mmio_map(SYS_BUS_DEVICE(>i2c[i]), 0, i2c_table[i].addr);
 sysbus_connect_irq(SYS_BUS_DEVICE(>i2c[i]), 0,
-   qdev_get_gpio_in(DEVICE(>a9mpcore),
-i2c_table[i].irq));
+   qdev_get_gpio_in(gic, i2c_table[i].irq));
 }
 
 /* Initialize all GPIOs */
@@ -298,11 +295,9 @@ static void fsl_imx6_realize(DeviceState *dev, Error 
**errp)
 
 sysbus_mmio_map(SYS_BUS_DEVICE(>gpio[i]), 0, gpio_table[i].addr);
 sysbus_connect_irq(SYS_BUS_DEVICE(>gpio[i]), 0,
-   qdev_get_gpio_in(DEVICE(>a9mpcore),
-gpio_table[i].irq_low));
+   qdev_get_gpio_in(gic, gpio_table[i].irq_low));
 sysbus_connect_irq(SYS_BUS_DEVICE(>gpio[i]), 1,
-   qdev_get_gpio_in(DEVICE(>a9mpcore),
-gpio_table[i].irq_high));
+   qdev_get_gpio_in(gic, gpio_table[i].irq_high));
 }
 
 /* Initialize all SDHC */
@@ -329,8 +324,7 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
 }
 sysbus_mmio_map(SYS_BUS_DEVICE(>esdhc[i]), 0, esdhc_table[i].addr);
 sysbus_connect_irq(SYS_BUS_DEVICE(>esdhc[i]), 0,
-   qdev_get_gpio_in(DEVICE(>a9mpcore),
-esdhc_table[i].irq));
+   qdev_get_gpio_in(gic, esdhc_table[i].irq));
 }
 
 /* USB */
@@ -351,8 +345,7 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
 sysbus_mmio_map(SYS_BUS_DEVICE(>usb[i]), 0,
 FSL_IMX6_USBOH3_USB_ADDR + i * 0x200);
 sysbus_connect_irq(SYS_BUS_DEVICE(>usb[i]), 0,
-   qdev_get_gpio_in(DEVICE(>a9mpcore),
-FSL_IMX6_USBn_IRQ[i]));
+   qdev_get_gpio_in(gic, FSL_IMX6_USBn_IRQ[i]));
 }
 
 /* Initialize all ECSPI */
@@ -375,8 +368,7 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
 
 sysbus_mmio_map(SYS_BUS_DEVICE(>spi[i]), 0, spi_table[i].addr);
 sysbus_connect_irq(SYS_BUS_DEVICE(>spi[i]), 0,
-   qdev_get_gpio_in(DEVICE(>a9mpcore),
-spi_table[i].irq));
+   qdev_get_gpio_in(gic, spi_table[i].irq));
 }
 
 object_property_set_uint(OBJECT(>eth), "phy-num", s->phy_num,
@@ -387,11 +379,9 @@ static void fsl_imx6_realize(DeviceState *dev, Error 
**errp)
 }
 sysbus_mmio_map(SYS_BUS_DEVICE(>eth), 0, FSL_IMX6_ENET_ADDR);
 sysbus_connect_irq(SYS_BUS_DEVICE(>eth), 0,
-