From: Gerd Hoffmann <kraxel@redhat.com>
To: qemu-devel@nongnu.org
Cc: Gerd Hoffmann <kraxel@redhat.com>
Subject: [Qemu-devel] [PULL 1/5] Revert "audio: fix pc speaker init"
Date: Tue, 2 Apr 2019 08:46:35 +0200 [thread overview]
Message-ID: <20190402064639.27108-2-kraxel@redhat.com> (raw)
In-Reply-To: <20190402064639.27108-1-kraxel@redhat.com>
This reverts commit bd56d378842c238c8901536c06c20a4a51ee9761.
Turned out it isn't that simple as the device needs the pit object link.
So "-device isa-pcspk" isn't going wo work anyway. We are in freeze, so
just reverting the thing is the best way to handle this for now, trying
to come up with something better can be done in the 4.1 devel cycle.
Also add a comment noting the object link.
Reported-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Message-id: 20190328071121.21147-1-kraxel@redhat.com
---
hw/audio/pcspk.c | 36 +++++++++++++++++++++---------------
1 file changed, 21 insertions(+), 15 deletions(-)
diff --git a/hw/audio/pcspk.c b/hw/audio/pcspk.c
index fdbb4b6e9923..9c7fd74aeba7 100644
--- a/hw/audio/pcspk.c
+++ b/hw/audio/pcspk.c
@@ -57,6 +57,7 @@ typedef struct {
} PCSpkState;
static const char *s_spk = "pcspk";
+static PCSpkState *pcspk_state;
static inline void generate_samples(PCSpkState *s)
{
@@ -110,6 +111,22 @@ static void pcspk_callback(void *opaque, int free)
}
}
+static int pcspk_audio_init(ISABus *bus)
+{
+ PCSpkState *s = pcspk_state;
+ struct audsettings as = {PCSPK_SAMPLE_RATE, 1, AUDIO_FORMAT_U8, 0};
+
+ AUD_register_card(s_spk, &s->card);
+
+ s->voice = AUD_open_out(&s->card, s->voice, s_spk, s, pcspk_callback, &as);
+ if (!s->voice) {
+ AUD_log(s_spk, "Could not open voice\n");
+ return -1;
+ }
+
+ return 0;
+}
+
static uint64_t pcspk_io_read(void *opaque, hwaddr addr,
unsigned size)
{
@@ -162,20 +179,12 @@ static void pcspk_initfn(Object *obj)
static void pcspk_realizefn(DeviceState *dev, Error **errp)
{
- struct audsettings as = {PCSPK_SAMPLE_RATE, 1, AUDIO_FORMAT_U8, 0};
ISADevice *isadev = ISA_DEVICE(dev);
PCSpkState *s = PC_SPEAKER(dev);
isa_register_ioport(isadev, &s->ioport, s->iobase);
- AUD_register_card(s_spk, &s->card);
-
- s->voice = AUD_open_out(&s->card, s->voice, s_spk, s, pcspk_callback, &as);
- if (!s->voice) {
- error_setg(errp, "Initializing audio voice failed");
- AUD_remove_card(&s->card);
- return;
- }
+ pcspk_state = s;
}
static bool migrate_needed(void *opaque)
@@ -212,6 +221,9 @@ static void pcspk_class_initfn(ObjectClass *klass, void *data)
set_bit(DEVICE_CATEGORY_SOUND, dc->categories);
dc->vmsd = &vmstate_spk;
dc->props = pcspk_properties;
+ /* Reason: realize sets global pcspk_state */
+ /* Reason: pit object link */
+ dc->user_creatable = false;
}
static const TypeInfo pcspk_info = {
@@ -222,12 +234,6 @@ static const TypeInfo pcspk_info = {
.class_init = pcspk_class_initfn,
};
-static int pcspk_audio_init(ISABus *bus)
-{
- isa_create_simple(bus, TYPE_PC_SPEAKER);
- return 0;
-}
-
static void pcspk_register(void)
{
type_register_static(&pcspk_info);
--
2.18.1
next prev parent reply other threads:[~2019-04-02 7:02 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-02 6:46 [Qemu-devel] [PULL 0/5] Fixes 20190402 patches Gerd Hoffmann
2019-04-02 6:46 ` Gerd Hoffmann [this message]
2019-04-02 6:46 ` [Qemu-devel] [PULL 2/5] hw/usb/bus.c: Handle "no speed matched" case in usb_mask_to_str() Gerd Hoffmann
2019-04-02 6:46 ` [Qemu-devel] [PULL 3/5] usb-mtp: fix return status of delete Gerd Hoffmann
2019-04-02 6:46 ` [Qemu-devel] [PULL 4/5] usb-mtp: remove usb_mtp_object_free_one Gerd Hoffmann
2019-04-02 6:46 ` [Qemu-devel] [PULL 5/5] audio: fix audio timer rate conversion bug Gerd Hoffmann
2019-04-02 8:33 ` [Qemu-devel] [PULL 0/5] Fixes 20190402 patches Peter Maydell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190402064639.27108-2-kraxel@redhat.com \
--to=kraxel@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).