提交 d367ece5 编写于 作者: A Andreas Färber 提交者: Anthony Liguori

pcspk: QOM'ify

Introduce type constant and cast macro to obsolete DO_UPCAST().

Prepares for ISA realizefn.
Signed-off-by: NAndreas Färber <afaerber@suse.de>
Signed-off-by: NAndreas Färber <afaerber@suse.de>
Message-id: 1367093935-29091-14-git-send-email-afaerber@suse.de
Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
上级 a2e0b863
...@@ -35,8 +35,11 @@ ...@@ -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 = { ...@@ -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) ...@@ -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 @@ ...@@ -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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册