pcspk: QOM'ify
Introduce type constant and cast macro to obsolete DO_UPCAST(). Prepares for ISA realizefn. Signed-off-by: Andreas Färber <afaerber@suse.de> Signed-off-by: Andreas Färber <afaerber@suse.de> Message-id: 1367093935-29091-14-git-send-email-afaerber@suse.de Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
a2e0b863eb
commit
d367ece5e5
@ -35,8 +35,11 @@
|
|||||||
#define PCSPK_MAX_FREQ (PCSPK_SAMPLE_RATE >> 1)
|
#define PCSPK_MAX_FREQ (PCSPK_SAMPLE_RATE >> 1)
|
||||||
#define PCSPK_MIN_COUNT ((PIT_FREQ + PCSPK_MAX_FREQ - 1) / PCSPK_MAX_FREQ)
|
#define PCSPK_MIN_COUNT ((PIT_FREQ + PCSPK_MAX_FREQ - 1) / PCSPK_MAX_FREQ)
|
||||||
|
|
||||||
|
#define PC_SPEAKER(obj) OBJECT_CHECK(PCSpkState, (obj), TYPE_PC_SPEAKER)
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
ISADevice dev;
|
ISADevice parent_obj;
|
||||||
|
|
||||||
MemoryRegion ioport;
|
MemoryRegion ioport;
|
||||||
uint32_t iobase;
|
uint32_t iobase;
|
||||||
uint8_t sample_buf[PCSPK_BUF_LEN];
|
uint8_t sample_buf[PCSPK_BUF_LEN];
|
||||||
@ -161,7 +164,7 @@ static const MemoryRegionOps pcspk_io_ops = {
|
|||||||
|
|
||||||
static int pcspk_initfn(ISADevice *dev)
|
static int pcspk_initfn(ISADevice *dev)
|
||||||
{
|
{
|
||||||
PCSpkState *s = DO_UPCAST(PCSpkState, dev, dev);
|
PCSpkState *s = PC_SPEAKER(dev);
|
||||||
|
|
||||||
memory_region_init_io(&s->ioport, &pcspk_io_ops, s, "elcr", 1);
|
memory_region_init_io(&s->ioport, &pcspk_io_ops, s, "elcr", 1);
|
||||||
isa_register_ioport(dev, &s->ioport, s->iobase);
|
isa_register_ioport(dev, &s->ioport, s->iobase);
|
||||||
@ -188,7 +191,7 @@ static void pcspk_class_initfn(ObjectClass *klass, void *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static const TypeInfo pcspk_info = {
|
static const TypeInfo pcspk_info = {
|
||||||
.name = "isa-pcspk",
|
.name = TYPE_PC_SPEAKER,
|
||||||
.parent = TYPE_ISA_DEVICE,
|
.parent = TYPE_ISA_DEVICE,
|
||||||
.instance_size = sizeof(PCSpkState),
|
.instance_size = sizeof(PCSpkState),
|
||||||
.class_init = pcspk_class_initfn,
|
.class_init = pcspk_class_initfn,
|
||||||
|
@ -28,11 +28,13 @@
|
|||||||
#include "hw/hw.h"
|
#include "hw/hw.h"
|
||||||
#include "hw/isa/isa.h"
|
#include "hw/isa/isa.h"
|
||||||
|
|
||||||
|
#define TYPE_PC_SPEAKER "isa-pcspk"
|
||||||
|
|
||||||
static inline ISADevice *pcspk_init(ISABus *bus, ISADevice *pit)
|
static inline ISADevice *pcspk_init(ISABus *bus, ISADevice *pit)
|
||||||
{
|
{
|
||||||
ISADevice *dev;
|
ISADevice *dev;
|
||||||
|
|
||||||
dev = isa_create(bus, "isa-pcspk");
|
dev = isa_create(bus, TYPE_PC_SPEAKER);
|
||||||
qdev_prop_set_uint32(&dev->qdev, "iobase", 0x61);
|
qdev_prop_set_uint32(&dev->qdev, "iobase", 0x61);
|
||||||
qdev_prop_set_ptr(&dev->qdev, "pit", pit);
|
qdev_prop_set_ptr(&dev->qdev, "pit", pit);
|
||||||
qdev_init_nofail(&dev->qdev);
|
qdev_init_nofail(&dev->qdev);
|
||||||
|
Loading…
Reference in New Issue
Block a user