[PATCH 37/37] audio: make audio_driver init() & fini() optional

marcandre.lureau@redhat.com posted 37 patches 2 weeks, 3 days ago
Maintainers: Gerd Hoffmann <kraxel@redhat.com>, Christian Schoenebeck <qemu_oss@crudebyte.com>, "Marc-André Lureau" <marcandre.lureau@redhat.com>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>, Thomas Huth <huth@tuxfamily.org>, Alexandre Ratchov <alex@caoua.org>, Laurent Vivier <laurent@vivier.eu>, Manos Pitsidianakis <manos.pitsidianakis@linaro.org>, "Michael S. Tsirkin" <mst@redhat.com>, Alistair Francis <alistair@alistair23.me>, "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, Peter Maydell <peter.maydell@linaro.org>, Paolo Bonzini <pbonzini@redhat.com>, "Alex Bennée" <alex.bennee@linaro.org>, "Daniel P. Berrangé" <berrange@redhat.com>, Eduardo Habkost <eduardo@habkost.net>, John Snow <jsnow@redhat.com>, Cleber Rosa <crosa@redhat.com>
[PATCH 37/37] audio: make audio_driver init() & fini() optional
Posted by marcandre.lureau@redhat.com 2 weeks, 3 days ago
From: Marc-André Lureau <marcandre.lureau@redhat.com>

The next patches are going to remove usage of the driver callbacks in
favor of QOM realize/finalize.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 audio/audio-mixeng-be.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/audio/audio-mixeng-be.c b/audio/audio-mixeng-be.c
index 8ebceb968ce..2c9c2af87a0 100644
--- a/audio/audio-mixeng-be.c
+++ b/audio/audio-mixeng-be.c
@@ -1520,9 +1520,11 @@ static bool audio_mixeng_backend_realize(AudioBackend *abe,
     audio_driver *drv = AUDIO_MIXENG_BACKEND_GET_CLASS(be)->driver;
 
     be->dev = dev;
-    be->drv_opaque = drv->init(be->dev, errp);
-    if (!be->drv_opaque) {
-        return false;
+    if (drv->init != NULL) {
+        be->drv_opaque = drv->init(be->dev, errp);
+        if (!be->drv_opaque) {
+            return false;
+        }
     }
 
     if (!drv->pcm_ops->get_buffer_in) {
@@ -1663,7 +1665,9 @@ static void audio_mixeng_backend_finalize(Object *obj)
     }
 
     if (s->drv) {
-        s->drv->fini (s->drv_opaque);
+        if (s->drv->fini) {
+            s->drv->fini (s->drv_opaque);
+        }
         s->drv = NULL;
     }
 
-- 
2.52.0


Re: [PATCH 37/37] audio: make audio_driver init() & fini() optional
Posted by Mark Cave-Ayland 5 days, 14 hours ago
On 23/01/2026 07:49, marcandre.lureau@redhat.com wrote:

> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> The next patches are going to remove usage of the driver callbacks in
> favor of QOM realize/finalize.
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>   audio/audio-mixeng-be.c | 12 ++++++++----
>   1 file changed, 8 insertions(+), 4 deletions(-)
> 
> diff --git a/audio/audio-mixeng-be.c b/audio/audio-mixeng-be.c
> index 8ebceb968ce..2c9c2af87a0 100644
> --- a/audio/audio-mixeng-be.c
> +++ b/audio/audio-mixeng-be.c
> @@ -1520,9 +1520,11 @@ static bool audio_mixeng_backend_realize(AudioBackend *abe,
>       audio_driver *drv = AUDIO_MIXENG_BACKEND_GET_CLASS(be)->driver;
>   
>       be->dev = dev;
> -    be->drv_opaque = drv->init(be->dev, errp);
> -    if (!be->drv_opaque) {
> -        return false;
> +    if (drv->init != NULL) {
> +        be->drv_opaque = drv->init(be->dev, errp);
> +        if (!be->drv_opaque) {
> +            return false;
> +        }
>       }
>   
>       if (!drv->pcm_ops->get_buffer_in) {
> @@ -1663,7 +1665,9 @@ static void audio_mixeng_backend_finalize(Object *obj)
>       }
>   
>       if (s->drv) {
> -        s->drv->fini (s->drv_opaque);
> +        if (s->drv->fini) {
> +            s->drv->fini (s->drv_opaque);
> +        }
>           s->drv = NULL;
>       }

Reviewed-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>


ATB,

Mark.