mirror of
https://github.com/qemu/qemu.git
synced 2025-08-14 20:31:47 +00:00
hw/isa/pc87312: Inherit from the abstract TYPE_ISA_SUPERIO
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-Id: <20180308223946.26784-10-f4bug@amsat.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
1854eb287e
commit
63f01a74ae
@ -270,6 +270,7 @@ static void pc87312_realize(DeviceState *dev, Error **errp)
|
|||||||
ISABus *bus;
|
ISABus *bus;
|
||||||
Chardev *chr;
|
Chardev *chr;
|
||||||
DriveInfo *drive;
|
DriveInfo *drive;
|
||||||
|
Error *local_err = NULL;
|
||||||
char name[5];
|
char name[5];
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@ -279,6 +280,12 @@ static void pc87312_realize(DeviceState *dev, Error **errp)
|
|||||||
isa_register_ioport(isa, &s->io, s->iobase);
|
isa_register_ioport(isa, &s->io, s->iobase);
|
||||||
pc87312_hard_reset(s);
|
pc87312_hard_reset(s);
|
||||||
|
|
||||||
|
ISA_SUPERIO_GET_CLASS(dev)->parent_realize(dev, &local_err);
|
||||||
|
if (local_err) {
|
||||||
|
error_propagate(errp, local_err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (is_parallel_enabled(s)) {
|
if (is_parallel_enabled(s)) {
|
||||||
/* FIXME use a qdev chardev prop instead of parallel_hds[] */
|
/* FIXME use a qdev chardev prop instead of parallel_hds[] */
|
||||||
chr = parallel_hds[0];
|
chr = parallel_hds[0];
|
||||||
@ -381,7 +388,9 @@ static Property pc87312_properties[] = {
|
|||||||
static void pc87312_class_init(ObjectClass *klass, void *data)
|
static void pc87312_class_init(ObjectClass *klass, void *data)
|
||||||
{
|
{
|
||||||
DeviceClass *dc = DEVICE_CLASS(klass);
|
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||||
|
ISASuperIOClass *sc = ISA_SUPERIO_CLASS(klass);
|
||||||
|
|
||||||
|
sc->parent_realize = dc->realize;
|
||||||
dc->realize = pc87312_realize;
|
dc->realize = pc87312_realize;
|
||||||
dc->reset = pc87312_reset;
|
dc->reset = pc87312_reset;
|
||||||
dc->vmsd = &vmstate_pc87312;
|
dc->vmsd = &vmstate_pc87312;
|
||||||
@ -392,7 +401,7 @@ static void pc87312_class_init(ObjectClass *klass, void *data)
|
|||||||
|
|
||||||
static const TypeInfo pc87312_type_info = {
|
static const TypeInfo pc87312_type_info = {
|
||||||
.name = TYPE_PC87312_SUPERIO,
|
.name = TYPE_PC87312_SUPERIO,
|
||||||
.parent = TYPE_ISA_DEVICE,
|
.parent = TYPE_ISA_SUPERIO,
|
||||||
.instance_size = sizeof(PC87312State),
|
.instance_size = sizeof(PC87312State),
|
||||||
.instance_init = pc87312_initfn,
|
.instance_init = pc87312_initfn,
|
||||||
.class_init = pc87312_class_init,
|
.class_init = pc87312_class_init,
|
||||||
|
@ -25,14 +25,16 @@
|
|||||||
#ifndef QEMU_PC87312_H
|
#ifndef QEMU_PC87312_H
|
||||||
#define QEMU_PC87312_H
|
#define QEMU_PC87312_H
|
||||||
|
|
||||||
#include "hw/isa/isa.h"
|
#include "hw/isa/superio.h"
|
||||||
|
|
||||||
|
|
||||||
#define TYPE_PC87312_SUPERIO "pc87312"
|
#define TYPE_PC87312_SUPERIO "pc87312"
|
||||||
#define PC87312(obj) OBJECT_CHECK(PC87312State, (obj), TYPE_PC87312_SUPERIO)
|
#define PC87312(obj) OBJECT_CHECK(PC87312State, (obj), TYPE_PC87312_SUPERIO)
|
||||||
|
|
||||||
typedef struct PC87312State {
|
typedef struct PC87312State {
|
||||||
ISADevice dev;
|
/*< private >*/
|
||||||
|
ISASuperIODevice parent_dev;
|
||||||
|
/*< public >*/
|
||||||
|
|
||||||
uint16_t iobase;
|
uint16_t iobase;
|
||||||
uint8_t config; /* initial configuration */
|
uint8_t config; /* initial configuration */
|
||||||
|
Loading…
Reference in New Issue
Block a user