* [Qemu-devel] [PATCH v3 0/4] QOM'ify hw/audio files
@ 2016-05-13 3:46 xiaoqiang zhao
2016-05-13 3:46 ` [Qemu-devel] [PATCH v3 1/4] hw/audio: QOM'ify cs4231.c xiaoqiang zhao
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: xiaoqiang zhao @ 2016-05-13 3:46 UTC (permalink / raw)
To: qemu-devel; +Cc: kraxel, afaerber, pbonzini, michael
This patch set QOM'ify some files under hw/audio directory.
See each patch's commit message for details.
Changes in v3:
* fix code style errors
* refine error_setg message format
Changes in v2:
Move AUD_open_in/out function into device realize stage
xiaoqiang zhao (4):
hw/audio: QOM'ify cs4231.c
hw/audio: QOM cleanup for intel-hda
hw/audio: QOM'ify intel-hda
hw/audio: QOM'ify milkymist-ac97.c
hw/audio/cs4231.c | 12 +++++-------
hw/audio/intel-hda.c | 32 ++++++++++++++++++--------------
hw/audio/milkymist-ac97.c | 26 +++++++++++++++-----------
3 files changed, 38 insertions(+), 32 deletions(-)
--
2.1.4
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH v3 1/4] hw/audio: QOM'ify cs4231.c
2016-05-13 3:46 [Qemu-devel] [PATCH v3 0/4] QOM'ify hw/audio files xiaoqiang zhao
@ 2016-05-13 3:46 ` xiaoqiang zhao
2016-05-13 3:46 ` [Qemu-devel] [PATCH v3 2/4] hw/audio: QOM cleanup for intel-hda xiaoqiang zhao
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: xiaoqiang zhao @ 2016-05-13 3:46 UTC (permalink / raw)
To: qemu-devel; +Cc: kraxel, afaerber, pbonzini, michael
Drop the old SysBus init function and use instance_init
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>
---
hw/audio/cs4231.c | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/hw/audio/cs4231.c b/hw/audio/cs4231.c
index caf97c1..30690f9 100644
--- a/hw/audio/cs4231.c
+++ b/hw/audio/cs4231.c
@@ -145,16 +145,15 @@ static const VMStateDescription vmstate_cs4231 = {
}
};
-static int cs4231_init1(SysBusDevice *dev)
+static void cs4231_init(Object *obj)
{
- CSState *s = CS4231(dev);
+ CSState *s = CS4231(obj);
+ SysBusDevice *dev = SYS_BUS_DEVICE(obj);
- memory_region_init_io(&s->iomem, OBJECT(s), &cs_mem_ops, s, "cs4321",
+ memory_region_init_io(&s->iomem, obj, &cs_mem_ops, s, "cs4321",
CS_SIZE);
sysbus_init_mmio(dev, &s->iomem);
sysbus_init_irq(dev, &s->irq);
-
- return 0;
}
static Property cs4231_properties[] = {
@@ -164,9 +163,7 @@ static Property cs4231_properties[] = {
static void cs4231_class_init(ObjectClass *klass, void *data)
{
DeviceClass *dc = DEVICE_CLASS(klass);
- SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
- k->init = cs4231_init1;
dc->reset = cs_reset;
dc->vmsd = &vmstate_cs4231;
dc->props = cs4231_properties;
@@ -176,6 +173,7 @@ static const TypeInfo cs4231_info = {
.name = TYPE_CS4231,
.parent = TYPE_SYS_BUS_DEVICE,
.instance_size = sizeof(CSState),
+ .instance_init = cs4231_init,
.class_init = cs4231_class_init,
};
--
2.1.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH v3 2/4] hw/audio: QOM cleanup for intel-hda
2016-05-13 3:46 [Qemu-devel] [PATCH v3 0/4] QOM'ify hw/audio files xiaoqiang zhao
2016-05-13 3:46 ` [Qemu-devel] [PATCH v3 1/4] hw/audio: QOM'ify cs4231.c xiaoqiang zhao
@ 2016-05-13 3:46 ` xiaoqiang zhao
2016-05-13 3:46 ` [Qemu-devel] [PATCH v3 3/4] hw/audio: QOM'ify intel-hda xiaoqiang zhao
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: xiaoqiang zhao @ 2016-05-13 3:46 UTC (permalink / raw)
To: qemu-devel; +Cc: kraxel, afaerber, pbonzini, michael
drop the DO_UPCAST macro
Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>
---
hw/audio/intel-hda.c | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/hw/audio/intel-hda.c b/hw/audio/intel-hda.c
index d372d4a..5b1e760 100644
--- a/hw/audio/intel-hda.c
+++ b/hw/audio/intel-hda.c
@@ -52,8 +52,8 @@ void hda_codec_bus_init(DeviceState *dev, HDACodecBus *bus, size_t bus_size,
static int hda_codec_dev_init(DeviceState *qdev)
{
- HDACodecBus *bus = DO_UPCAST(HDACodecBus, qbus, qdev->parent_bus);
- HDACodecDevice *dev = DO_UPCAST(HDACodecDevice, qdev, qdev);
+ HDACodecBus *bus = HDA_BUS(qdev->parent_bus);
+ HDACodecDevice *dev = HDA_CODEC_DEVICE(qdev);
HDACodecDeviceClass *cdc = HDA_CODEC_DEVICE_GET_CLASS(dev);
if (dev->cad == -1) {
@@ -68,7 +68,7 @@ static int hda_codec_dev_init(DeviceState *qdev)
static int hda_codec_dev_exit(DeviceState *qdev)
{
- HDACodecDevice *dev = DO_UPCAST(HDACodecDevice, qdev, qdev);
+ HDACodecDevice *dev = HDA_CODEC_DEVICE(qdev);
HDACodecDeviceClass *cdc = HDA_CODEC_DEVICE_GET_CLASS(dev);
if (cdc->exit) {
@@ -84,7 +84,7 @@ HDACodecDevice *hda_codec_find(HDACodecBus *bus, uint32_t cad)
QTAILQ_FOREACH(kid, &bus->qbus.children, sibling) {
DeviceState *qdev = kid->child;
- cdev = DO_UPCAST(HDACodecDevice, qdev, qdev);
+ cdev = HDA_CODEC_DEVICE(qdev);
if (cdev->cad == cad) {
return cdev;
}
@@ -94,14 +94,14 @@ HDACodecDevice *hda_codec_find(HDACodecBus *bus, uint32_t cad)
void hda_codec_response(HDACodecDevice *dev, bool solicited, uint32_t response)
{
- HDACodecBus *bus = DO_UPCAST(HDACodecBus, qbus, dev->qdev.parent_bus);
+ HDACodecBus *bus = HDA_BUS(dev->qdev.parent_bus);
bus->response(dev, solicited, response);
}
bool hda_codec_xfer(HDACodecDevice *dev, uint32_t stnr, bool output,
uint8_t *buf, uint32_t len)
{
- HDACodecBus *bus = DO_UPCAST(HDACodecBus, qbus, dev->qdev.parent_bus);
+ HDACodecBus *bus = HDA_BUS(dev->qdev.parent_bus);
return bus->xfer(dev, stnr, output, buf, len);
}
@@ -337,7 +337,7 @@ static void intel_hda_corb_run(IntelHDAState *d)
static void intel_hda_response(HDACodecDevice *dev, bool solicited, uint32_t response)
{
- HDACodecBus *bus = DO_UPCAST(HDACodecBus, qbus, dev->qdev.parent_bus);
+ HDACodecBus *bus = HDA_BUS(dev->qdev.parent_bus);
IntelHDAState *d = container_of(bus, IntelHDAState, codecs);
hwaddr addr;
uint32_t wp, ex;
@@ -386,7 +386,7 @@ static void intel_hda_response(HDACodecDevice *dev, bool solicited, uint32_t res
static bool intel_hda_xfer(HDACodecDevice *dev, uint32_t stnr, bool output,
uint8_t *buf, uint32_t len)
{
- HDACodecBus *bus = DO_UPCAST(HDACodecBus, qbus, dev->qdev.parent_bus);
+ HDACodecBus *bus = HDA_BUS(dev->qdev.parent_bus);
IntelHDAState *d = container_of(bus, IntelHDAState, codecs);
hwaddr addr;
uint32_t s, copy, left;
@@ -493,7 +493,7 @@ static void intel_hda_notify_codecs(IntelHDAState *d, uint32_t stream, bool runn
DeviceState *qdev = kid->child;
HDACodecDeviceClass *cdc;
- cdev = DO_UPCAST(HDACodecDevice, qdev, qdev);
+ cdev = HDA_CODEC_DEVICE(qdev);
cdc = HDA_CODEC_DEVICE_GET_CLASS(cdev);
if (cdc->stream) {
cdc->stream(cdev, stream, running, output);
@@ -1120,7 +1120,7 @@ static void intel_hda_reset(DeviceState *dev)
/* reset codecs */
QTAILQ_FOREACH(kid, &d->codecs.qbus.children, sibling) {
DeviceState *qdev = kid->child;
- cdev = DO_UPCAST(HDACodecDevice, qdev, qdev);
+ cdev = HDA_CODEC_DEVICE(qdev);
device_reset(DEVICE(cdev));
d->state_sts |= (1 << cdev->cad);
}
--
2.1.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH v3 3/4] hw/audio: QOM'ify intel-hda
2016-05-13 3:46 [Qemu-devel] [PATCH v3 0/4] QOM'ify hw/audio files xiaoqiang zhao
2016-05-13 3:46 ` [Qemu-devel] [PATCH v3 1/4] hw/audio: QOM'ify cs4231.c xiaoqiang zhao
2016-05-13 3:46 ` [Qemu-devel] [PATCH v3 2/4] hw/audio: QOM cleanup for intel-hda xiaoqiang zhao
@ 2016-05-13 3:46 ` xiaoqiang zhao
2016-05-13 3:47 ` [Qemu-devel] [PATCH v3 4/4] hw/audio: QOM'ify milkymist-ac97.c xiaoqiang zhao
2016-05-13 7:32 ` [Qemu-devel] [PATCH v3 0/4] QOM'ify hw/audio files Gerd Hoffmann
4 siblings, 0 replies; 6+ messages in thread
From: xiaoqiang zhao @ 2016-05-13 3:46 UTC (permalink / raw)
To: qemu-devel; +Cc: kraxel, afaerber, pbonzini, michael
* use DeviceClass::realize instead of DeviceClass::init
Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>
---
hw/audio/intel-hda.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/hw/audio/intel-hda.c b/hw/audio/intel-hda.c
index 5b1e760..93d7669 100644
--- a/hw/audio/intel-hda.c
+++ b/hw/audio/intel-hda.c
@@ -26,6 +26,7 @@
#include "intel-hda.h"
#include "intel-hda-defs.h"
#include "sysemu/dma.h"
+#include "qapi/error.h"
/* --------------------------------------------------------------------- */
/* hda bus */
@@ -50,7 +51,7 @@ void hda_codec_bus_init(DeviceState *dev, HDACodecBus *bus, size_t bus_size,
bus->xfer = xfer;
}
-static int hda_codec_dev_init(DeviceState *qdev)
+static void hda_codec_dev_realize(DeviceState *qdev, Error **errp)
{
HDACodecBus *bus = HDA_BUS(qdev->parent_bus);
HDACodecDevice *dev = HDA_CODEC_DEVICE(qdev);
@@ -60,10 +61,13 @@ static int hda_codec_dev_init(DeviceState *qdev)
dev->cad = bus->next_cad;
}
if (dev->cad >= 15) {
- return -1;
+ error_setg(errp, "HDA audio codec address is full");
+ return;
}
bus->next_cad = dev->cad + 1;
- return cdc->init(dev);
+ if (cdc->init(dev) != 0) {
+ error_setg(errp, "HDA audio init failed");
+ }
}
static int hda_codec_dev_exit(DeviceState *qdev)
@@ -1298,7 +1302,7 @@ static const TypeInfo intel_hda_info_ich9 = {
static void hda_codec_device_class_init(ObjectClass *klass, void *data)
{
DeviceClass *k = DEVICE_CLASS(klass);
- k->init = hda_codec_dev_init;
+ k->realize = hda_codec_dev_realize;
k->exit = hda_codec_dev_exit;
set_bit(DEVICE_CATEGORY_SOUND, k->categories);
k->bus_type = TYPE_HDA_BUS;
--
2.1.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH v3 4/4] hw/audio: QOM'ify milkymist-ac97.c
2016-05-13 3:46 [Qemu-devel] [PATCH v3 0/4] QOM'ify hw/audio files xiaoqiang zhao
` (2 preceding siblings ...)
2016-05-13 3:46 ` [Qemu-devel] [PATCH v3 3/4] hw/audio: QOM'ify intel-hda xiaoqiang zhao
@ 2016-05-13 3:47 ` xiaoqiang zhao
2016-05-13 7:32 ` [Qemu-devel] [PATCH v3 0/4] QOM'ify hw/audio files Gerd Hoffmann
4 siblings, 0 replies; 6+ messages in thread
From: xiaoqiang zhao @ 2016-05-13 3:47 UTC (permalink / raw)
To: qemu-devel; +Cc: kraxel, afaerber, pbonzini, michael
* Drop the old SysBus init function and use instance_init
* Move AUD_open_in / AUD_open_out function into realize stage
Acked-by: Michael Walle <michael@walle.cc>
Tested-by: Michael Walle <michael@walle.cc>
Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>
---
hw/audio/milkymist-ac97.c | 26 +++++++++++++++-----------
1 file changed, 15 insertions(+), 11 deletions(-)
diff --git a/hw/audio/milkymist-ac97.c b/hw/audio/milkymist-ac97.c
index 6a3b536..5075c2b 100644
--- a/hw/audio/milkymist-ac97.c
+++ b/hw/audio/milkymist-ac97.c
@@ -284,16 +284,26 @@ static int ac97_post_load(void *opaque, int version_id)
return 0;
}
-static int milkymist_ac97_init(SysBusDevice *dev)
+static void milkymist_ac97_init(Object *obj)
{
- MilkymistAC97State *s = MILKYMIST_AC97(dev);
+ MilkymistAC97State *s = MILKYMIST_AC97(obj);
+ SysBusDevice *dev = SYS_BUS_DEVICE(obj);
- struct audsettings as;
sysbus_init_irq(dev, &s->crrequest_irq);
sysbus_init_irq(dev, &s->crreply_irq);
sysbus_init_irq(dev, &s->dmar_irq);
sysbus_init_irq(dev, &s->dmaw_irq);
+ memory_region_init_io(&s->regs_region, obj, &ac97_mmio_ops, s,
+ "milkymist-ac97", R_MAX * 4);
+ sysbus_init_mmio(dev, &s->regs_region);
+}
+
+static void milkymist_ac97_realize(DeviceState *dev, Error **errp)
+{
+ MilkymistAC97State *s = MILKYMIST_AC97(dev);
+ struct audsettings as;
+
AUD_register_card("Milkymist AC'97", &s->card);
as.freq = 48000;
@@ -305,12 +315,6 @@ static int milkymist_ac97_init(SysBusDevice *dev)
"mm_ac97.in", s, ac97_in_cb, &as);
s->voice_out = AUD_open_out(&s->card, s->voice_out,
"mm_ac97.out", s, ac97_out_cb, &as);
-
- memory_region_init_io(&s->regs_region, OBJECT(s), &ac97_mmio_ops, s,
- "milkymist-ac97", R_MAX * 4);
- sysbus_init_mmio(dev, &s->regs_region);
-
- return 0;
}
static const VMStateDescription vmstate_milkymist_ac97 = {
@@ -327,9 +331,8 @@ static const VMStateDescription vmstate_milkymist_ac97 = {
static void milkymist_ac97_class_init(ObjectClass *klass, void *data)
{
DeviceClass *dc = DEVICE_CLASS(klass);
- SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
- k->init = milkymist_ac97_init;
+ dc->realize = milkymist_ac97_realize;
dc->reset = milkymist_ac97_reset;
dc->vmsd = &vmstate_milkymist_ac97;
}
@@ -338,6 +341,7 @@ static const TypeInfo milkymist_ac97_info = {
.name = TYPE_MILKYMIST_AC97,
.parent = TYPE_SYS_BUS_DEVICE,
.instance_size = sizeof(MilkymistAC97State),
+ .instance_init = milkymist_ac97_init,
.class_init = milkymist_ac97_class_init,
};
--
2.1.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH v3 0/4] QOM'ify hw/audio files
2016-05-13 3:46 [Qemu-devel] [PATCH v3 0/4] QOM'ify hw/audio files xiaoqiang zhao
` (3 preceding siblings ...)
2016-05-13 3:47 ` [Qemu-devel] [PATCH v3 4/4] hw/audio: QOM'ify milkymist-ac97.c xiaoqiang zhao
@ 2016-05-13 7:32 ` Gerd Hoffmann
4 siblings, 0 replies; 6+ messages in thread
From: Gerd Hoffmann @ 2016-05-13 7:32 UTC (permalink / raw)
To: xiaoqiang zhao; +Cc: qemu-devel, afaerber, pbonzini, michael
On Fr, 2016-05-13 at 11:46 +0800, xiaoqiang zhao wrote:
> This patch set QOM'ify some files under hw/audio directory.
> See each patch's commit message for details.
>
> Changes in v3:
> * fix code style errors
> * refine error_setg message format
Added to audio patch queue.
thanks,
Gerd
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2016-05-13 7:32 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-05-13 3:46 [Qemu-devel] [PATCH v3 0/4] QOM'ify hw/audio files xiaoqiang zhao
2016-05-13 3:46 ` [Qemu-devel] [PATCH v3 1/4] hw/audio: QOM'ify cs4231.c xiaoqiang zhao
2016-05-13 3:46 ` [Qemu-devel] [PATCH v3 2/4] hw/audio: QOM cleanup for intel-hda xiaoqiang zhao
2016-05-13 3:46 ` [Qemu-devel] [PATCH v3 3/4] hw/audio: QOM'ify intel-hda xiaoqiang zhao
2016-05-13 3:47 ` [Qemu-devel] [PATCH v3 4/4] hw/audio: QOM'ify milkymist-ac97.c xiaoqiang zhao
2016-05-13 7:32 ` [Qemu-devel] [PATCH v3 0/4] QOM'ify hw/audio files Gerd Hoffmann
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.