Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
hw/audio: Simplify hda audio init
No return values are used anywhere, so switch the functions to be void
and add support for error reporting using errp for use in next patches.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Message-ID: <cd1df4ad2a6fae969c4a02a77955c4a8c0d430b6.1650874791.git.mkletzan@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
  • Loading branch information
nertpinx authored and bonzini committed Sep 22, 2023
1 parent 38e476e commit b7639b7
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 18 deletions.
32 changes: 18 additions & 14 deletions hw/audio/hda-codec.c
Expand Up @@ -675,7 +675,9 @@ static void hda_audio_stream(HDACodecDevice *hda, uint32_t stnr, bool running, b
}
}

static int hda_audio_init(HDACodecDevice *hda, const struct desc_codec *desc)
static void hda_audio_init(HDACodecDevice *hda,
const struct desc_codec *desc,
Error **errp)
{
HDAAudioState *a = HDA_AUDIO(hda);
HDAAudioStream *st;
Expand Down Expand Up @@ -718,7 +720,6 @@ static int hda_audio_init(HDACodecDevice *hda, const struct desc_codec *desc)
break;
}
}
return 0;
}

static void hda_audio_exit(HDACodecDevice *hda)
Expand Down Expand Up @@ -848,37 +849,40 @@ static Property hda_audio_properties[] = {
DEFINE_PROP_END_OF_LIST(),
};

static int hda_audio_init_output(HDACodecDevice *hda)
static void hda_audio_init_output(HDACodecDevice *hda, Error **errp)
{
HDAAudioState *a = HDA_AUDIO(hda);
const struct desc_codec *desc = &output_nomixemu;

if (!a->mixer) {
return hda_audio_init(hda, &output_nomixemu);
} else {
return hda_audio_init(hda, &output_mixemu);
desc = &output_mixemu;
}

hda_audio_init(hda, desc, errp);
}

static int hda_audio_init_duplex(HDACodecDevice *hda)
static void hda_audio_init_duplex(HDACodecDevice *hda, Error **errp)
{
HDAAudioState *a = HDA_AUDIO(hda);
const struct desc_codec *desc = &duplex_nomixemu;

if (!a->mixer) {
return hda_audio_init(hda, &duplex_nomixemu);
} else {
return hda_audio_init(hda, &duplex_mixemu);
desc = &duplex_mixemu;
}

hda_audio_init(hda, desc, errp);
}

static int hda_audio_init_micro(HDACodecDevice *hda)
static void hda_audio_init_micro(HDACodecDevice *hda, Error **errp)
{
HDAAudioState *a = HDA_AUDIO(hda);
const struct desc_codec *desc = &micro_nomixemu;

if (!a->mixer) {
return hda_audio_init(hda, &micro_nomixemu);
} else {
return hda_audio_init(hda, &micro_mixemu);
desc = &micro_mixemu;
}

hda_audio_init(hda, desc, errp);
}

static void hda_audio_base_class_init(ObjectClass *klass, void *data)
Expand Down
4 changes: 1 addition & 3 deletions hw/audio/intel-hda.c
Expand Up @@ -71,9 +71,7 @@ static void hda_codec_dev_realize(DeviceState *qdev, Error **errp)
return;
}
bus->next_cad = dev->cad + 1;
if (cdc->init(dev) != 0) {
error_setg(errp, "HDA audio init failed");
}
cdc->init(dev, errp);
}

static void hda_codec_dev_unrealize(DeviceState *qdev)
Expand Down
2 changes: 1 addition & 1 deletion hw/audio/intel-hda.h
Expand Up @@ -31,7 +31,7 @@ struct HDACodecBus {
struct HDACodecDeviceClass {
DeviceClass parent_class;

int (*init)(HDACodecDevice *dev);
void (*init)(HDACodecDevice *dev, Error **errp);
void (*exit)(HDACodecDevice *dev);
void (*command)(HDACodecDevice *dev, uint32_t nid, uint32_t data);
void (*stream)(HDACodecDevice *dev, uint32_t stnr, bool running, bool output);
Expand Down

0 comments on commit b7639b7

Please sign in to comment.