ALSA: virtio: add support for audio controls
authorAnton Yakovlev <anton.yakovlev@opensynergy.com>
Mon, 15 Jan 2024 13:36:54 +0000 (14:36 +0100)
committerTakashi Iwai <tiwai@suse.de>
Fri, 9 Feb 2024 13:01:15 +0000 (14:01 +0100)
commitd6568e3de42dd971a1356f7ba581e6600d53f0a0
treeff2ff816b0c3c7e88d11f96c76c9fdc743cd4e85
parenta097812310b5748358e32d87c6c1c18d249a397b
ALSA: virtio: add support for audio controls

Implementation of support for audio controls in accordance with the
extension of the virtio sound device specification [1] planned for
virtio-v1.3-cs01.

The device can announce the VIRTIO_SND_F_CTLS feature. If the feature is
negotiated, then an additional field appears in the configuration space:

  struct virtio_snd_config {
    ...
    /* number of available control elements */
    __le32 controls;
  };

The driver can send the following requests to manage audio controls:

  enum {
    ...
    /* control element request types */
    VIRTIO_SND_R_CTL_INFO = 0x0300,
    VIRTIO_SND_R_CTL_ENUM_ITEMS,
    VIRTIO_SND_R_CTL_READ,
    VIRTIO_SND_R_CTL_WRITE,
    VIRTIO_SND_R_CTL_TLV_READ,
    VIRTIO_SND_R_CTL_TLV_WRITE,
    VIRTIO_SND_R_CTL_TLV_COMMAND,
    ...
  };

And the device can send the following audio control event notification:

  enum {
    ...
    /* control element event types */
    VIRTIO_SND_EVT_CTL_NOTIFY = 0x1200,
    ...
  };

See additional details in [1].

[1] https://lists.oasis-open.org/archives/virtio-comment/202104/msg00013.html

Signed-off-by: Anton Yakovlev <anton.yakovlev@opensynergy.com>
Signed-off-by: Aiswarya Cyriac <aiswarya.cyriac@opensynergy.com>
Link: https://lore.kernel.org/r/20240115133654.576068-2-aiswarya.cyriac@opensynergy.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
include/uapi/linux/virtio_snd.h
sound/virtio/Makefile
sound/virtio/virtio_card.c
sound/virtio/virtio_card.h
sound/virtio/virtio_kctl.c [new file with mode: 0644]