hw/char/pl011: implement a reset method
PL011 currently lacks a reset method. Implement it. Signed-off-by: Evgeny Iakovlev <eiakovlev@linux.microsoft.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-id: 20230123162304.26254-4-eiakovlev@linux.microsoft.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
13ea96fa34
commit
3b7a165e8c
@ -427,11 +427,6 @@ static void pl011_init(Object *obj)
|
||||
s->clk = qdev_init_clock_in(DEVICE(obj), "clk", pl011_clock_update, s,
|
||||
ClockUpdate);
|
||||
|
||||
s->read_trigger = 1;
|
||||
s->ifl = 0x12;
|
||||
s->cr = 0x300;
|
||||
s->flags = 0x90;
|
||||
|
||||
s->id = pl011_id_arm;
|
||||
}
|
||||
|
||||
@ -443,11 +438,32 @@ static void pl011_realize(DeviceState *dev, Error **errp)
|
||||
pl011_event, NULL, s, NULL, true);
|
||||
}
|
||||
|
||||
static void pl011_reset(DeviceState *dev)
|
||||
{
|
||||
PL011State *s = PL011(dev);
|
||||
|
||||
s->lcr = 0;
|
||||
s->rsr = 0;
|
||||
s->dmacr = 0;
|
||||
s->int_enabled = 0;
|
||||
s->int_level = 0;
|
||||
s->ilpr = 0;
|
||||
s->ibrd = 0;
|
||||
s->fbrd = 0;
|
||||
s->read_pos = 0;
|
||||
s->read_count = 0;
|
||||
s->read_trigger = 1;
|
||||
s->ifl = 0x12;
|
||||
s->cr = 0x300;
|
||||
s->flags = 0x90;
|
||||
}
|
||||
|
||||
static void pl011_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
DeviceClass *dc = DEVICE_CLASS(oc);
|
||||
|
||||
dc->realize = pl011_realize;
|
||||
dc->reset = pl011_reset;
|
||||
dc->vmsd = &vmstate_pl011;
|
||||
device_class_set_props(dc, pl011_properties);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user