[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 12/25] hw/arm/mps2: Inline CMSDK_APB_TIMER creation
From: |
Luc Michel |
Subject: |
Re: [PATCH 12/25] hw/arm/mps2: Inline CMSDK_APB_TIMER creation |
Date: |
Fri, 22 Jan 2021 16:33:56 +0100 |
On 19:06 Thu 21 Jan , Peter Maydell wrote:
> The old-style convenience function cmsdk_apb_timer_create() for
> creating CMSDK_APB_TIMER objects is used in only two places in
> mps2.c. Most of the rest of the code in that file uses the new
> "initialize in place" coding style.
>
> We want to connect up a Clock object which should be done between the
> object creation and realization; rather than adding a Clock* argument
> to the convenience function, convert the timer creation code in
> mps2.c to the same style as is used already for the watchdog,
> dualtimer and other devices, and delete the now-unused convenience
> function.
>
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Luc Michel <luc@lmichel.fr>
> ---
> include/hw/timer/cmsdk-apb-timer.h | 21 ---------------------
> hw/arm/mps2.c | 18 ++++++++++++++++--
> 2 files changed, 16 insertions(+), 23 deletions(-)
>
> diff --git a/include/hw/timer/cmsdk-apb-timer.h
> b/include/hw/timer/cmsdk-apb-timer.h
> index fc2aa97acac..54f7ec8c502 100644
> --- a/include/hw/timer/cmsdk-apb-timer.h
> +++ b/include/hw/timer/cmsdk-apb-timer.h
> @@ -45,25 +45,4 @@ struct CMSDKAPBTimer {
> uint32_t intstatus;
> };
>
> -/**
> - * cmsdk_apb_timer_create - convenience function to create
> TYPE_CMSDK_APB_TIMER
> - * @addr: location in system memory to map registers
> - * @pclk_frq: frequency in Hz of the PCLK clock (used for calculating baud
> rate)
> - */
> -static inline DeviceState *cmsdk_apb_timer_create(hwaddr addr,
> - qemu_irq timerint,
> - uint32_t pclk_frq)
> -{
> - DeviceState *dev;
> - SysBusDevice *s;
> -
> - dev = qdev_new(TYPE_CMSDK_APB_TIMER);
> - s = SYS_BUS_DEVICE(dev);
> - qdev_prop_set_uint32(dev, "pclk-frq", pclk_frq);
> - sysbus_realize_and_unref(s, &error_fatal);
> - sysbus_mmio_map(s, 0, addr);
> - sysbus_connect_irq(s, 0, timerint);
> - return dev;
> -}
> -
> #endif
> diff --git a/hw/arm/mps2.c b/hw/arm/mps2.c
> index 9a8b23c64ce..f762d1b46af 100644
> --- a/hw/arm/mps2.c
> +++ b/hw/arm/mps2.c
> @@ -83,6 +83,7 @@ struct MPS2MachineState {
> /* CMSDK APB subsystem */
> CMSDKAPBDualTimer dualtimer;
> CMSDKAPBWatchdog watchdog;
> + CMSDKAPBTimer timer[2];
> };
>
> #define TYPE_MPS2_MACHINE "mps2"
> @@ -330,8 +331,21 @@ static void mps2_common_init(MachineState *machine)
> }
>
> /* CMSDK APB subsystem */
> - cmsdk_apb_timer_create(0x40000000, qdev_get_gpio_in(armv7m, 8),
> SYSCLK_FRQ);
> - cmsdk_apb_timer_create(0x40001000, qdev_get_gpio_in(armv7m, 9),
> SYSCLK_FRQ);
> + for (i = 0; i < ARRAY_SIZE(mms->timer); i++) {
> + g_autofree char *name = g_strdup_printf("timer%d", i);
> + hwaddr base = 0x40000000 + i * 0x1000;
> + int irqno = 8 + i;
> + SysBusDevice *sbd;
> +
> + object_initialize_child(OBJECT(mms), name, &mms->timer[i],
> + TYPE_CMSDK_APB_TIMER);
> + sbd = SYS_BUS_DEVICE(&mms->timer[i]);
> + qdev_prop_set_uint32(DEVICE(&mms->timer[i]), "pclk-frq", SYSCLK_FRQ);
> + sysbus_realize_and_unref(sbd, &error_fatal);
> + sysbus_mmio_map(sbd, 0, base);
> + sysbus_connect_irq(sbd, 0, qdev_get_gpio_in(armv7m, irqno));
> + }
> +
> object_initialize_child(OBJECT(mms), "dualtimer", &mms->dualtimer,
> TYPE_CMSDK_APB_DUALTIMER);
> qdev_prop_set_uint32(DEVICE(&mms->dualtimer), "pclk-frq", SYSCLK_FRQ);
> --
> 2.20.1
>
--
- Re: [PATCH 04/25] tests: Add a simple test of the CMSDK APB watchdog, (continued)
- [PATCH 03/25] tests: Add a simple test of the CMSDK APB timer, Peter Maydell, 2021/01/21
- [PATCH 05/25] tests: Add a simple test of the CMSDK APB dual timer, Peter Maydell, 2021/01/21
- [PATCH 01/25] ptimer: Add new ptimer_set_period_from_clock() function, Peter Maydell, 2021/01/21
- [PATCH 12/25] hw/arm/mps2: Inline CMSDK_APB_TIMER creation, Peter Maydell, 2021/01/21
- [PATCH 11/25] hw/arm/armsse: Wire up clocks, Peter Maydell, 2021/01/21
- [PATCH 09/25] hw/watchdog/cmsdk-apb-watchdog: Add Clock input, Peter Maydell, 2021/01/21
- [PATCH 02/25] clock: Add new clock_has_source() function, Peter Maydell, 2021/01/21
- [PATCH 10/25] hw/arm/armsse: Rename "MAINCLK" property to "MAINCLK_FRQ", Peter Maydell, 2021/01/21