mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-01 23:03:54 -06:00

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: Philippe Mathieu-Daudé <f4bug@amsat.org> Reviewed-by: Luc Michel <luc@lmichel.fr> Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-id: 20210128114145.20536-13-peter.maydell@linaro.org Message-id: 20210121190622.22000-13-peter.maydell@linaro.org
48 lines
1.1 KiB
C
48 lines
1.1 KiB
C
/*
|
|
* ARM CMSDK APB timer emulation
|
|
*
|
|
* Copyright (c) 2017 Linaro Limited
|
|
* Written by Peter Maydell
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 or
|
|
* (at your option) any later version.
|
|
*/
|
|
|
|
#ifndef CMSDK_APB_TIMER_H
|
|
#define CMSDK_APB_TIMER_H
|
|
|
|
#include "hw/qdev-properties.h"
|
|
#include "hw/sysbus.h"
|
|
#include "hw/ptimer.h"
|
|
#include "hw/clock.h"
|
|
#include "qom/object.h"
|
|
|
|
#define TYPE_CMSDK_APB_TIMER "cmsdk-apb-timer"
|
|
OBJECT_DECLARE_SIMPLE_TYPE(CMSDKAPBTimer, CMSDK_APB_TIMER)
|
|
|
|
/*
|
|
* QEMU interface:
|
|
* + QOM property "pclk-frq": frequency at which the timer is clocked
|
|
* + Clock input "pclk": clock for the timer
|
|
* + sysbus MMIO region 0: the register bank
|
|
* + sysbus IRQ 0: timer interrupt TIMERINT
|
|
*/
|
|
struct CMSDKAPBTimer {
|
|
/*< private >*/
|
|
SysBusDevice parent_obj;
|
|
|
|
/*< public >*/
|
|
MemoryRegion iomem;
|
|
qemu_irq timerint;
|
|
uint32_t pclk_frq;
|
|
struct ptimer_state *timer;
|
|
Clock *pclk;
|
|
|
|
uint32_t ctrl;
|
|
uint32_t value;
|
|
uint32_t reload;
|
|
uint32_t intstatus;
|
|
};
|
|
|
|
#endif
|