Commit 542e0c55 authored by Gerd Hoffmann's avatar Gerd Hoffmann
Browse files

audio: add deprecated_register_soundhw



Add helper function for -soundhw deprecation.  It can replace the
simple init functions which just call {isa,pci}_create_simple()
with a hardcoded type.  It also prints a deprecation message.

Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
Message-id: 20200702132525.6849-4-kraxel@redhat.com
parent 3af87d91
Loading
Loading
Loading
Loading
+23 −1
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@
 * THE SOFTWARE.
 */
#include "qemu/osdep.h"
#include "qemu/option.h"
#include "qemu/help_option.h"
#include "qemu/error-report.h"
#include "qom/object.h"
@@ -32,6 +33,7 @@
struct soundhw {
    const char *name;
    const char *descr;
    const char *typename;
    int enabled;
    int isa;
    union {
@@ -65,6 +67,17 @@ void pci_register_soundhw(const char *name, const char *descr,
    soundhw_count++;
}

void deprecated_register_soundhw(const char *name, const char *descr,
                                 int isa, const char *typename)
{
    assert(soundhw_count < ARRAY_SIZE(soundhw) - 1);
    soundhw[soundhw_count].name = name;
    soundhw[soundhw_count].descr = descr;
    soundhw[soundhw_count].isa = isa;
    soundhw[soundhw_count].typename = typename;
    soundhw_count++;
}

void select_soundhw(const char *optarg)
{
    struct soundhw *c;
@@ -136,7 +149,16 @@ void soundhw_init(void)

    for (c = soundhw; c->name; ++c) {
        if (c->enabled) {
            if (c->typename) {
                warn_report("'-soundhw %s' is deprecated, "
                            "please use '-device %s' instead",
                            c->name, c->typename);
                if (c->isa) {
                    isa_create_simple(isa_bus, c->typename);
                } else {
                    pci_create_simple(pci_bus, -1, c->typename);
                }
            } else if (c->isa) {
                if (!isa_bus) {
                    error_report("ISA bus not available for %s", c->name);
                    exit(1);
+2 −0
Original line number Diff line number Diff line
@@ -6,6 +6,8 @@ void isa_register_soundhw(const char *name, const char *descr,

void pci_register_soundhw(const char *name, const char *descr,
                          int (*init_pci)(PCIBus *bus));
void deprecated_register_soundhw(const char *name, const char *descr,
                                 int isa, const char *typename);

void soundhw_init(void);
void select_soundhw(const char *optarg);