aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2022-04-04 16:46:54 +0100
committerPeter Maydell <peter.maydell@linaro.org>2022-04-21 11:37:04 +0100
commit1c6f3feeb3ceec6f5359515f931b3ab7b2c17457 (patch)
treed28f8d24df5dc2940eff3dc7556cd9bda8e3174b
parent0dee4daca37e1547b4b2a24d5a2318d5e5a5af89 (diff)
downloadqemu-1c6f3feeb3ceec6f5359515f931b3ab7b2c17457.zip
qemu-1c6f3feeb3ceec6f5359515f931b3ab7b2c17457.tar.gz
qemu-1c6f3feeb3ceec6f5359515f931b3ab7b2c17457.tar.bz2
hw/arm/exynos4210: Connect MCT_G0 and MCT_G1 to both combiners
Currently for the interrupts MCT_G0 and MCT_G1 which are the only ones in the input range of the external combiner and which are also wired to the external GIC, we connect them only to the internal combiner and the external GIC. This seems likely to be a bug, as all other interrupts which are in the input range of both combiners are connected to both combiners. (The fact that the code in exynos4210_combiner_get_gpioin() is also trying to wire up these inputs on both combiners also suggests this.) Wire these interrupts up to both combiners, like the rest. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20220404154658.565020-15-peter.maydell@linaro.org
-rw-r--r--hw/arm/exynos4210.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/hw/arm/exynos4210.c b/hw/arm/exynos4210.c
index a4527f8..962d6d0 100644
--- a/hw/arm/exynos4210.c
+++ b/hw/arm/exynos4210.c
@@ -281,16 +281,15 @@ static void exynos4210_init_board_irqs(Exynos4210State *s)
assert(splitcount < EXYNOS4210_NUM_SPLITTERS);
splitter = DEVICE(&s->splitter[splitcount]);
- qdev_prop_set_uint16(splitter, "num-lines", 2);
+ qdev_prop_set_uint16(splitter, "num-lines", irq_id ? 3 : 2);
qdev_realize(splitter, NULL, &error_abort);
splitcount++;
s->irq_table[n] = qdev_get_gpio_in(splitter, 0);
qdev_connect_gpio_out(splitter, 0, is->int_combiner_irq[n]);
+ qdev_connect_gpio_out(splitter, 1, is->ext_combiner_irq[n]);
if (irq_id) {
- qdev_connect_gpio_out(splitter, 1,
+ qdev_connect_gpio_out(splitter, 2,
qdev_get_gpio_in(extgicdev, irq_id - 32));
- } else {
- qdev_connect_gpio_out(splitter, 1, is->ext_combiner_irq[n]);
}
}
for (; n < EXYNOS4210_MAX_INT_COMBINER_IN_IRQ; n++) {