hw/display/virtio-vga: Convert TYPE_VIRTIO_VGA_BASE to 3-phase reset
Convert the TYPE_VIRTIO_VGA_BASE class to 3-phase reset, so we don't need to use device_class_set_parent_reset() any more. Note that this is an abstract class itself; none of the subclasses override its reset method. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Tested-by: Daniel Henrique Barboza <danielhb413@gmail.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-id: 20221125115240.3005559-3-peter.maydell@linaro.org
This commit is contained in:
parent
54da41834f
commit
0d89890466
@ -165,13 +165,15 @@ static void virtio_vga_base_realize(VirtIOPCIProxy *vpci_dev, Error **errp)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void virtio_vga_base_reset(DeviceState *dev)
|
static void virtio_vga_base_reset_hold(Object *obj)
|
||||||
{
|
{
|
||||||
VirtIOVGABaseClass *klass = VIRTIO_VGA_BASE_GET_CLASS(dev);
|
VirtIOVGABaseClass *klass = VIRTIO_VGA_BASE_GET_CLASS(obj);
|
||||||
VirtIOVGABase *vvga = VIRTIO_VGA_BASE(dev);
|
VirtIOVGABase *vvga = VIRTIO_VGA_BASE(obj);
|
||||||
|
|
||||||
/* reset virtio-gpu */
|
/* reset virtio-gpu */
|
||||||
klass->parent_reset(dev);
|
if (klass->parent_phases.hold) {
|
||||||
|
klass->parent_phases.hold(obj);
|
||||||
|
}
|
||||||
|
|
||||||
/* reset vga */
|
/* reset vga */
|
||||||
vga_common_reset(&vvga->vga);
|
vga_common_reset(&vvga->vga);
|
||||||
@ -203,13 +205,14 @@ static void virtio_vga_base_class_init(ObjectClass *klass, void *data)
|
|||||||
VirtioPCIClass *k = VIRTIO_PCI_CLASS(klass);
|
VirtioPCIClass *k = VIRTIO_PCI_CLASS(klass);
|
||||||
VirtIOVGABaseClass *v = VIRTIO_VGA_BASE_CLASS(klass);
|
VirtIOVGABaseClass *v = VIRTIO_VGA_BASE_CLASS(klass);
|
||||||
PCIDeviceClass *pcidev_k = PCI_DEVICE_CLASS(klass);
|
PCIDeviceClass *pcidev_k = PCI_DEVICE_CLASS(klass);
|
||||||
|
ResettableClass *rc = RESETTABLE_CLASS(klass);
|
||||||
|
|
||||||
set_bit(DEVICE_CATEGORY_DISPLAY, dc->categories);
|
set_bit(DEVICE_CATEGORY_DISPLAY, dc->categories);
|
||||||
device_class_set_props(dc, virtio_vga_base_properties);
|
device_class_set_props(dc, virtio_vga_base_properties);
|
||||||
dc->vmsd = &vmstate_virtio_vga_base;
|
dc->vmsd = &vmstate_virtio_vga_base;
|
||||||
dc->hotpluggable = false;
|
dc->hotpluggable = false;
|
||||||
device_class_set_parent_reset(dc, virtio_vga_base_reset,
|
resettable_class_set_parent_phases(rc, NULL, virtio_vga_base_reset_hold,
|
||||||
&v->parent_reset);
|
NULL, &v->parent_phases);
|
||||||
|
|
||||||
k->realize = virtio_vga_base_realize;
|
k->realize = virtio_vga_base_realize;
|
||||||
pcidev_k->romfile = "vgabios-virtio.bin";
|
pcidev_k->romfile = "vgabios-virtio.bin";
|
||||||
|
@ -23,7 +23,7 @@ struct VirtIOVGABase {
|
|||||||
struct VirtIOVGABaseClass {
|
struct VirtIOVGABaseClass {
|
||||||
VirtioPCIClass parent_class;
|
VirtioPCIClass parent_class;
|
||||||
|
|
||||||
DeviceReset parent_reset;
|
ResettablePhases parent_phases;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* VIRTIO_VGA_H */
|
#endif /* VIRTIO_VGA_H */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user