mirror of https://gitee.com/openkylin/qemu.git
hw/misc/iotkit: Wire up the sysctl and sysinfo register blocks
Wire up the system control element's register banks (sysctl and sysinfo). This is the last of the previously completely unimplemented components in the IoTKit. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20180820141116.9118-11-peter.maydell@linaro.org
This commit is contained in:
parent
c667a25b32
commit
06e65af39b
|
@ -16,7 +16,6 @@
|
|||
#include "hw/sysbus.h"
|
||||
#include "hw/registerfields.h"
|
||||
#include "hw/arm/iotkit.h"
|
||||
#include "hw/misc/unimp.h"
|
||||
#include "hw/arm/arm.h"
|
||||
|
||||
/* Clock frequency in HZ of the 32KHz "slow clock" */
|
||||
|
@ -151,6 +150,10 @@ static void iotkit_init(Object *obj)
|
|||
sizeof(s->nswatchdog), TYPE_CMSDK_APB_WATCHDOG);
|
||||
sysbus_init_child_obj(obj, "swatchdog", &s->swatchdog,
|
||||
sizeof(s->swatchdog), TYPE_CMSDK_APB_WATCHDOG);
|
||||
sysbus_init_child_obj(obj, "iotkit-sysctl", &s->sysctl,
|
||||
sizeof(s->sysctl), TYPE_IOTKIT_SYSCTL);
|
||||
sysbus_init_child_obj(obj, "iotkit-sysinfo", &s->sysinfo,
|
||||
sizeof(s->sysinfo), TYPE_IOTKIT_SYSINFO);
|
||||
object_initialize_child(obj, "nmi-orgate", &s->nmi_orgate,
|
||||
sizeof(s->nmi_orgate), TYPE_OR_IRQ,
|
||||
&error_abort, NULL);
|
||||
|
@ -516,13 +519,20 @@ static void iotkit_realize(DeviceState *dev, Error **errp)
|
|||
qdev_get_gpio_in_named(dev_apb_ppc1,
|
||||
"cfg_sec_resp", 0));
|
||||
|
||||
/* Using create_unimplemented_device() maps the stub into the
|
||||
* system address space rather than into our container, but the
|
||||
* overall effect to the guest is the same.
|
||||
*/
|
||||
create_unimplemented_device("SYSINFO", 0x40020000, 0x1000);
|
||||
|
||||
create_unimplemented_device("SYSCONTROL", 0x50021000, 0x1000);
|
||||
object_property_set_bool(OBJECT(&s->sysinfo), true, "realized", &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
/* System information registers */
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->sysinfo), 0, 0x40020000);
|
||||
/* System control registers */
|
||||
object_property_set_bool(OBJECT(&s->sysctl), true, "realized", &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->sysctl), 0, 0x50021000);
|
||||
|
||||
/* This OR gate wires together outputs from the secure watchdogs to NMI */
|
||||
object_property_set_int(OBJECT(&s->nmi_orgate), 2, "num-lines", &err);
|
||||
|
|
|
@ -58,7 +58,8 @@
|
|||
#include "hw/timer/cmsdk-apb-timer.h"
|
||||
#include "hw/timer/cmsdk-apb-dualtimer.h"
|
||||
#include "hw/watchdog/cmsdk-apb-watchdog.h"
|
||||
#include "hw/misc/unimp.h"
|
||||
#include "hw/misc/iotkit-sysctl.h"
|
||||
#include "hw/misc/iotkit-sysinfo.h"
|
||||
#include "hw/or-irq.h"
|
||||
#include "hw/core/split-irq.h"
|
||||
|
||||
|
@ -97,6 +98,9 @@ typedef struct IoTKit {
|
|||
CMSDKAPBWatchdog nswatchdog;
|
||||
CMSDKAPBWatchdog swatchdog;
|
||||
|
||||
IoTKitSysCtl sysctl;
|
||||
IoTKitSysCtl sysinfo;
|
||||
|
||||
MemoryRegion container;
|
||||
MemoryRegion alias1;
|
||||
MemoryRegion alias2;
|
||||
|
|
Loading…
Reference in New Issue