[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC PATCH 09/25] virtio-snd: Add code for the realize function
From: |
Shreyansh Chouhan |
Subject: |
[RFC PATCH 09/25] virtio-snd: Add code for the realize function |
Date: |
Sat, 12 Feb 2022 03:43:03 +0530 |
Signed-off-by: Shreyansh Chouhan <chouhan.shreyansh2702@gmail.com>
---
hw/audio/virtio-snd.c | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c
index afa38adee7..b51f6c7523 100644
--- a/hw/audio/virtio-snd.c
+++ b/hw/audio/virtio-snd.c
@@ -89,8 +89,43 @@ static uint64_t virtio_snd_get_features(VirtIODevice *vdev,
uint64_t features,
return vdev->host_features;
}
+/*
+ * Initializes the VirtIOSound card device. Validates the configuration
+ * passed by the command line. Initializes the virtqueues. Allocates resources
+ * for and initializes streams, jacks and chmaps.
+ *
+ * @dev: VirtIOSound card device
+ * @errp: Set if there is an error
+ */
static void virtio_snd_device_realize(DeviceState *dev, Error **errp)
{
+ VirtIODevice *vdev = VIRTIO_DEVICE(dev);
+ VirtIOSound *s = VIRTIO_SOUND(dev);
+
+ virtio_init(vdev, "virtio-snd", VIRTIO_ID_SOUND,
sizeof(virtio_snd_config));
+
+ /* set number of jacks and streams */
+ if (s->snd_conf.jacks > 8) {
+ error_setg(errp, "Invalid number of jacks: %d", s->snd_conf.jacks);
+ return;
+ }
+ if (s->snd_conf.streams < 1 || s->snd_conf.streams > 10) {
+ error_setg(errp, "Invalid number of streams: %d", s->snd_conf.streams);
+ return;
+ }
+
+ if (s->snd_conf.chmaps > VIRTIO_SND_CHMAP_MAX_SIZE) {
+ error_setg(errp, "Invalid number of channel maps: %d",
+ s->snd_conf.chmaps);
+ return;
+ }
+
+ /* set up QEMUSoundCard and audiodev */
+ AUD_register_card ("virtio_snd_card", &s->card);
+
+ s->streams = g_new0(virtio_snd_pcm_stream *, s->snd_conf.streams);
+ s->pcm_params = g_new0(virtio_snd_pcm_params *, s->snd_conf.streams);
+ s->jacks = g_new0(virtio_snd_jack *, s->snd_conf.jacks);
}
static void virtio_snd_device_unrealize(DeviceState *dev)
--
2.31.1
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [RFC PATCH 09/25] virtio-snd: Add code for the realize function,
Shreyansh Chouhan <=