Skip to content
Snippets Groups Projects
Commit e5c0367e authored by Xiaojuan Yang's avatar Xiaojuan Yang Committed by Richard Henderson
Browse files

hw/rtc/ls7a_rtc: Add reset function


Add ls7a rtc reset function to delete timers and clear regs when rtc reset.

Signed-off-by: default avatarXiaojuan Yang <yangxiaojuan@loongson.cn>
Message-Id: <20220701093407.2150607-5-yangxiaojuan@loongson.cn>
Signed-off-by: default avatarRichard Henderson <richard.henderson@linaro.org>
parent 53a5eb2e
No related branches found
No related tags found
No related merge requests found
......@@ -463,6 +463,25 @@ static void ls7a_rtc_realize(DeviceState *dev, Error **errp)
}
/* delete timer and clear reg when reset */
static void ls7a_rtc_reset(DeviceState *dev)
{
int i;
SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
LS7ARtcState *d = LS7A_RTC(sbd);
for (i = 0; i < TIMER_NUMS; i++) {
if (toy_enabled(d)) {
timer_del(d->toy_timer[i]);
}
if (rtc_enabled(d)) {
timer_del(d->rtc_timer[i]);
}
d->toymatch[i] = 0;
d->rtcmatch[i] = 0;
}
d->cntrctl = 0;
}
static int ls7a_rtc_pre_save(void *opaque)
{
LS7ARtcState *s = LS7A_RTC(opaque);
......@@ -511,6 +530,7 @@ static void ls7a_rtc_class_init(ObjectClass *klass, void *data)
DeviceClass *dc = DEVICE_CLASS(klass);
dc->vmsd = &vmstate_ls7a_rtc;
dc->realize = ls7a_rtc_realize;
dc->reset = ls7a_rtc_reset;
dc->desc = "ls7a rtc";
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment