The same pattern is used for each timer, 2 or 3 times. To avoid too much code churn in the next commits, iterate on the number of timers using a for() loop statement.
Signed-off-by: Philippe Mathieu-Daudé <phi...@linaro.org> Reviewed-by: Peter Maydell <peter.mayd...@linaro.org> --- hw/timer/arm_timer.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/hw/timer/arm_timer.c b/hw/timer/arm_timer.c index 0ad0e55df8..68cd50314f 100644 --- a/hw/timer/arm_timer.c +++ b/hw/timer/arm_timer.c @@ -310,10 +310,10 @@ static void sp804_realize(DeviceState *dev, Error **errp) { SP804Timer *s = SP804_TIMER(dev); - s->timer[0] = arm_timer_new(s->freq[0]); - s->timer[1] = arm_timer_new(s->freq[1]); - s->timer[0]->irq = qemu_allocate_irq(sp804_set_irq, s, 0); - s->timer[1]->irq = qemu_allocate_irq(sp804_set_irq, s, 1); + for (unsigned i = 0; i < ARRAY_SIZE(s->timer); i++) { + s->timer[i] = arm_timer_new(s->freq[i]); + s->timer[i]->irq = qemu_allocate_irq(sp804_set_irq, s, i); + } } static Property sp804_properties[] = { @@ -382,18 +382,19 @@ static const MemoryRegionOps icp_pit_ops = { static void icp_pit_init(Object *obj) { + static const uint32_t tmr_freq[] = { + /* Timer 0 runs at the system clock speed (40MHz). */ + 40000000, + /* The other two timers run at 1MHz. */ + 1000000, 1000000 + }; IntegratorPIT *s = INTEGRATOR_PIT(obj); SysBusDevice *dev = SYS_BUS_DEVICE(obj); - /* Timer 0 runs at the system clock speed (40MHz). */ - s->timer[0] = arm_timer_new(40000000); - /* The other two timers run at 1MHz. */ - s->timer[1] = arm_timer_new(1000000); - s->timer[2] = arm_timer_new(1000000); - - sysbus_init_irq(dev, &s->timer[0]->irq); - sysbus_init_irq(dev, &s->timer[1]->irq); - sysbus_init_irq(dev, &s->timer[2]->irq); + for (unsigned i = 0; i < ARRAY_SIZE(s->timer); i++) { + s->timer[i] = arm_timer_new(tmr_freq[i]); + sysbus_init_irq(dev, &s->timer[i]->irq); + } memory_region_init_io(&s->iomem, obj, &icp_pit_ops, s, "icp_pit", 0x1000); -- 2.38.1