qemu-e2k/hw/arm
Peter Maydell 76621953c9 hw/arm/exynos4210: Fold combiner splits into exynos4210_init_board_irqs()
At this point, the function exynos4210_init_board_irqs() splits input
IRQ lines to connect them to the input combiner, output combiner and
external GIC.  The function exynos4210_combiner_get_gpioin() splits
some of the combiner input lines further to connect them to multiple
different inputs on the combiner.

Because (unlike qemu_irq_split()) the TYPE_SPLIT_IRQ device has a
configurable number of outputs, we can do all this in one place, by
making exynos4210_init_board_irqs() add extra outputs to the splitter
device when it must be connected to more than one input on each
combiner.

We do this with a new data structure, the combinermap, which is an
array each of whose elements is a list of the interrupt IDs on the
combiner which must be tied together.  As we loop through each
interrupt ID, if we find that it is the first one in one of these
lists, we configure the splitter device with eonugh extra outputs and
wire them up to the other interrupt IDs in the list.

Conveniently, for all the cases where this is necessary, the
lowest-numbered interrupt ID in each group is in the range of the
external combiner, so we only need to code for this in the first of
the two loops in exynos4210_init_board_irqs().

The old code in exynos4210_combiner_get_gpioin() which is being
deleted here had several problems which don't exist in the new code
in its handling of the multi-core timer interrupts:
 (1) the case labels specified bits 4 ... 8, but bit '8' doesn't
     exist; these should have been 4 ... 7
 (2) it used the input irq[EXYNOS4210_COMBINER_GET_IRQ_NUM(1, bit + 4)]
     multiple times as the input of several different splitters,
     which isn't allowed
 (3) in an apparent cut-and-paste error, the cases for all the
     multi-core timer inputs used "bit + 4" even though the
     bit range for the case was (intended to be) 4 ... 7, which
     meant it was looking at non-existent bits 8 ... 11.
None of these exist in the new code.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220404154658.565020-17-peter.maydell@linaro.org
2022-04-21 11:37:04 +01:00
..
allwinner-a10.c
allwinner-h3.c hw/arm: allwinner: Don't enable PSCI conduit when booting guest in EL3 2022-02-08 10:56:27 +00:00
armsse.c
armv7m.c Replace TARGET_WORDS_BIGENDIAN 2022-04-06 10:50:37 +02:00
aspeed_ast2600.c aspeed/smc: Remove 'num_cs' field 2022-03-08 09:18:11 +01:00
aspeed_soc.c aspeed/smc: Remove 'num_cs' field 2022-03-08 09:18:11 +01:00
aspeed.c hw/arm/aspeed: add Bletchley machine type 2022-03-08 09:18:11 +01:00
bcm2835_peripherals.c
bcm2836.c
boot.c target/arm: Report KVM's actual PSCI version to guest in dtb 2022-03-02 19:27:37 +00:00
collie.c
cubieboard.c
digic_boards.c
digic.c
exynos4_boards.c hw/arm/boot: Drop nb_cpus field from arm_boot_info 2022-02-08 10:56:28 +00:00
exynos4210.c hw/arm/exynos4210: Fold combiner splits into exynos4210_init_board_irqs() 2022-04-21 11:37:04 +01:00
fsl-imx6.c
fsl-imx6ul.c hw/arm: imx: Don't enable PSCI conduit when booting guest in EL3 2022-02-08 10:56:27 +00:00
fsl-imx7.c hw/arm: imx: Don't enable PSCI conduit when booting guest in EL3 2022-02-08 10:56:27 +00:00
fsl-imx25.c
fsl-imx31.c
gumstix.c
highbank.c hw/arm/boot: Drop nb_cpus field from arm_boot_info 2022-02-08 10:56:28 +00:00
imx25_pdk.c hw/arm/boot: Drop nb_cpus field from arm_boot_info 2022-02-08 10:56:28 +00:00
integratorcp.c
Kconfig hw/sensor: add Intersil ISL69260 device model 2022-03-08 18:46:48 +01:00
kzm.c hw/arm/boot: Drop nb_cpus field from arm_boot_info 2022-02-08 10:56:28 +00:00
mainstone.c
mcimx6ul-evk.c hw/arm/boot: Drop nb_cpus field from arm_boot_info 2022-02-08 10:56:28 +00:00
mcimx7d-sabre.c hw/arm/boot: Drop nb_cpus field from arm_boot_info 2022-02-08 10:56:28 +00:00
meson.build
microbit.c
mps2-tz.c hw/arm/mps2-tz.c: Update AN547 documentation URL 2022-03-02 19:27:36 +00:00
mps2.c
msf2-soc.c
msf2-som.c
musca.c
musicpal.c hw/net: Move MV88W8618 network device out of hw/arm/ directory 2022-01-20 11:47:52 +00:00
netduino2.c
netduinoplus2.c
npcm7xx_boards.c hw/arm: add initial mori-bmc board 2022-02-21 13:30:21 +00:00
npcm7xx.c hw/arm/boot: Drop nb_cpus field from arm_boot_info 2022-02-08 10:56:28 +00:00
nrf51_soc.c
nseries.c include: Move hardware version declarations to new qemu/hw-version.h 2022-02-21 13:30:20 +00:00
omap1.c exec/exec-all: Move 'qemu/log.h' include in units requiring it 2022-02-21 10:18:06 +01:00
omap2.c
omap_sx1.c
orangepi.c hw/arm/boot: Drop nb_cpus field from arm_boot_info 2022-02-08 10:56:28 +00:00
palm.c
pxa2xx_gpio.c
pxa2xx_pic.c
pxa2xx.c rtc: Move RTC function prototypes to their own header 2022-01-28 14:29:46 +00:00
raspi.c hw/arm/boot: Drop nb_cpus field from arm_boot_info 2022-02-08 10:56:28 +00:00
realview.c hw/arm/boot: Drop nb_cpus field from arm_boot_info 2022-02-08 10:56:28 +00:00
sabrelite.c hw/arm/boot: Drop nb_cpus field from arm_boot_info 2022-02-08 10:56:28 +00:00
sbsa-ref.c hw/arm/boot: Drop nb_cpus field from arm_boot_info 2022-02-08 10:56:28 +00:00
smmu-common.c
smmu-internal.h
smmuv3-internal.h
smmuv3.c hw/arm/smmuv3: Fix device reset 2022-02-08 10:56:28 +00:00
spitz.c
stellaris.c
stm32f100_soc.c
stm32f205_soc.c
stm32f405_soc.c
stm32vldiscovery.c
strongarm.c rtc: Move RTC function prototypes to their own header 2022-01-28 14:29:46 +00:00
strongarm.h
sysbus-fdt.c
tosa.c
trace-events
trace.h
versatilepb.c
vexpress.c hw/arm/boot: Drop nb_cpus field from arm_boot_info 2022-02-08 10:56:28 +00:00
virt-acpi-build.c hw/arm/virt: Drop superfluous checks against highmem 2022-01-20 11:47:53 +00:00
virt.c hw/arm/virt: Check for attempt to use TrustZone with KVM or HVF 2022-04-21 11:37:03 +01:00
xilinx_zynq.c hw/arm/boot: Drop nb_cpus field from arm_boot_info 2022-02-08 10:56:28 +00:00
xlnx-versal-virt.c hw/arm: versal: Add the Cortex-R5Fs 2022-04-21 11:37:03 +01:00
xlnx-versal.c hw/arm: versal: Connect the CRL 2022-04-21 11:37:03 +01:00
xlnx-zcu102.c hw/arm/xlnx-zcu102: Don't enable PSCI conduit when booting guest in EL3 2022-02-08 10:56:27 +00:00
xlnx-zynqmp.c hw/arm/xlnx-zynqmp: Connect 4 TTC timers 2022-04-21 11:37:03 +01:00
z2.c