From nobody Mon Feb 9 01:00:57 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1619698111; cv=none; d=zohomail.com; s=zohoarc; b=mS8USrch3wloKpiEbvlMvyGBZda5NqVM8Ru4CqWPpvx1yupa30Xq2sUUThui9/Z7LB7je8DtJOXnzj1/PDcre5j8MYhzK0RnKiY57flkoMRIDWxKb8nn2SD48JRAbusgIhyM5KHtC/bDaJAhILglVDyiUtckbORdx/masYAD+Xg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619698111; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Za8sRghFjDzzxeX3eHzOdIRG0vujpkNJzbRMPY5/TEc=; b=QEtfWldp6OB1nQKMjxwvLTaDR9ip0HiTSr4zjIrNpZ86J4kFchm8yGE64IGThEv84GBdqI0LfnsXl5r+konpQPPNHvKizUXaKha+rlRxLtBfW8YF81zzM1lxzt+8ra+CJrZ6WfIVEssXq6aDzbDXp6OWO79tuYIWVUiZ4I87on0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619698111146300.94519032674486; Thu, 29 Apr 2021 05:08:31 -0700 (PDT) Received: from localhost ([::1]:33804 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lc5T3-0000bf-In for importer@patchew.org; Thu, 29 Apr 2021 08:08:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39214) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lc5QH-0007Ti-2a for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:05:37 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]:38411) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lc5QF-0000CK-CY for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:05:36 -0400 Received: by mail-pf1-x432.google.com with SMTP id j6so6552886pfh.5 for ; Thu, 29 Apr 2021 05:05:34 -0700 (PDT) Received: from localhost.localdomain ([2405:201:6008:61b4:c0b1:be0f:608e:9a45]) by smtp.gmail.com with ESMTPSA id p6sm713643pjg.35.2021.04.29.05.05.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Apr 2021 05:05:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Za8sRghFjDzzxeX3eHzOdIRG0vujpkNJzbRMPY5/TEc=; b=FTnzF63FxrfnYd2xX0GpI+Q0kYUCnprxObjI5iONAK+E+lOkXHS8H0cgJ3M/zJoDu3 yYpGQ7SWRS5/9iS2lB2cRYE3h+Aityq5gbR0nUfbWgMY7ve914xuafVlIHdTUAwgA8c2 N124aVJ0YcHfURjB3wC7GpyXQxz/qO4XiDOs9dOZZUBMoHz4HhutniRNGkmrlAgbHp8b dxoawv3ynR5gsIgSmnAKdvdOelP5i0W03WdFb/+v0OwNmN1sYmDGRxjrKt9vTRj8s5wh ZeCQwTUa9qYjeSJb+/WSZEHCtfHS/w/0/HVWknYGKPB8dVWLWKGQRDRvG4QdNfiTJ9RP us2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Za8sRghFjDzzxeX3eHzOdIRG0vujpkNJzbRMPY5/TEc=; b=Rd4s4NWXzDSPdMlKe7mLbS5HSWJfcfJzW2wIyfPVFUYyxBNzqNyoNkmA+qGdnU7XnQ xpvLXXXQPUv98CWByrQj7hvC8Xnfp9eizABXYKkijy04E+N9R484JN1m2uLxqHKN5ric 2pZsMKfH05BQ5B+UGkiYw019MPvZKcq7TD3cha+cJcGd6xvr3cMKo6keGUtZnXJKfTO4 MSYhfwansuJb2iA7jSm5zv3FCY8YvSrj0wqAt3bX5JnqRCZr2FTolg5gRpDBvYQJKuB1 RLm009PaSMx8RGXLqv4AUnXy5zT3IbtrPYcN0MC31X69s3U1/qtyLyyn2/hiQnP1fXPg dRBg== X-Gm-Message-State: AOAM532BP88qlQSZ0aXZ7lj/QLi1wzh7gz5cCEqETCw3J8lApiZY6009 /GK01Wn+e1ukXScL7d9ORic= X-Google-Smtp-Source: ABdhPJy1hecTGumO5YKDH4T+Ws0r0GecHXQoj74UhWuSMfJjFd0pSByULzoxOvi6KAb3cWn+AwRJkw== X-Received: by 2002:a05:6a00:1a02:b029:27f:f7ce:49d8 with SMTP id g2-20020a056a001a02b029027ff7ce49d8mr1823454pfv.24.1619697934013; Thu, 29 Apr 2021 05:05:34 -0700 (PDT) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com Subject: [RFC PATCH 01/27] virtio-snd: Add virtio sound header file Date: Thu, 29 Apr 2021 17:34:19 +0530 Message-Id: <20210429120445.694420-2-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pf1-x432.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Type: text/plain; charset="utf-8" Added device configuration and common definitions to the header file. Signed-off-by: Shreyansh Chouhan --- include/hw/virtio/virtio-snd.h | 97 ++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 include/hw/virtio/virtio-snd.h diff --git a/include/hw/virtio/virtio-snd.h b/include/hw/virtio/virtio-snd.h new file mode 100644 index 0000000000..bbbf174c51 --- /dev/null +++ b/include/hw/virtio/virtio-snd.h @@ -0,0 +1,97 @@ +/* + * Virtio Sound Device + */ + +#ifndef QEMU_VIRTIO_SOUND_H +#define QEMU_VIRTIO_SOUND_H + +#include "qemu/units.h" +#include "hw/virtio/virtio.h" +#include "qemu/queue.h" +#include "audio/audio.h" +#include "audio/audio_int.h" + +#define VIRTIO_ID_SOUND 25 + +/* CONFIGURATION SPACE */ + +typedef struct virtio_snd_config { + /* # of jacks available */ + uint32_t jacks; + /* # of streams avalable */ + uint32_t streams; + /* # chmaps available */ + uint32_t chmaps; +} virtio_snd_config; + +/* COMMON DEFINITIONS */ + +/* supported sample data directions. */ +enum { + VIRTIO_SND_D_OUTPUT =3D 0, + VIRTIO_SND_D_INPUT +}; + +enum { + /* jack control request types */ + VIRTIO_SND_R_JACK_INFO =3D 1, + VIRTIO_SND_R_JACK_REMAP, + + /* PCM control request types */ + VIRTIO_SND_R_PCM_INFO =3D 0x0100, + VIRTIO_SND_R_PCM_SET_PARAMS, + VIRTIO_SND_R_PCM_PREPARE, + VIRTIO_SND_R_PCM_RELEASE, + VIRTIO_SND_R_PCM_START, + VIRTIO_SND_R_PCM_STOP, + + /* channel map control request type */ + VIRTIO_SND_R_CHMAP_INFO =3D 0x200, + + /* jack event types */ + VIRTIO_SND_EVT_JACK_CONNECTED =3D 0x1000, + VIRTIO_SND_EVT_JACK_DISCONNECTED, + + /* PCM event types */ + VIRTIO_SND_EVT_PCM_PERIOD_ELAPSED =3D 0x1100, + VIRTIO_SND_EVT_PCM_XRUN, + + /* common status codes */ + VIRTIO_SND_S_OK =3D 0x8000, + VIRTIO_SND_S_BAD_MSG, + VIRTIO_SND_S_NOT_SUPP, + VIRTIO_SND_S_IO_ERR +}; + +/* common header for request/response*/ +typedef struct virtio_snd_hdr { + uint32_t code; +} virtio_snd_hdr; + +/* event notification */ +typedef struct virtio_snd_event { + /* VIRTIO_SND_EVT_* */ + virtio_snd_hdr hdr; + /* Optional event data */ + uint32_t data; +} virtio_snd_event; + +/* common control request to query an item information */ +typedef struct virtio_snd_query_info { + /* VIRTIO_SND_R_*_INFO */ + struct virtio_snd_hdr hdr; + /* item start identifier */ + uint32_t start_id; + /* # of items to query */ + uint32_t count; + /* size of a single item information in bytes */ + uint32_t size; +} virtio_snd_query_info; + +/* common item information header */ +typedef struct virtio_snd_info { + /* functional group node id (HDA Spec 7.1.2) */ + uint32_t hda_fn_nid; +} virtio_snd_info; + +#endif --=20 2.25.1 From nobody Mon Feb 9 01:00:57 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1644618081; cv=none; d=zohomail.com; s=zohoarc; b=CDT1lknw57WEmMAGcbssXEv0Qtjz8jkJelDZbq1G7JAtxlar6RX/HaRIsbg8Wmb4kDbzx0rls9Fb3edKeudQEEF0hV1lmlC3u5CK6T8EZFUL/pYggvGyNYoBf8vr0sfXWBfAL9kUwrXTL5Wdos/Y8pvWiNC5pXFrwAaHUstsSWo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644618081; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=zKW6Zedd4cbPxMoQGRaMoZs5xJeqa5Cb1JCrYUFLu5g=; b=P0FcyZfDHRzb7ps+36AYdPB3RZbc7VmJNHeKZ37yi0xmpo5J+xIsUBppzSLeiwFkevPMv8s/SzEtGhuSLOMjCxP9v3ws/iIYOXNxcjC2vRUWrhjGa48eWwViVd6+fsX2yTRFHwtmjqfFZgBHsbpTsFmhdNLGx/Wa2vr8L/PYWKY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 164461808199431.659425598238272; Fri, 11 Feb 2022 14:21:21 -0800 (PST) Received: from localhost ([::1]:46464 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nIeI4-0004NY-R6 for importer@patchew.org; Fri, 11 Feb 2022 17:21:20 -0500 Received: from eggs.gnu.org ([209.51.188.92]:41858) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIeBe-0004wo-5j for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:14:42 -0500 Received: from [2607:f8b0:4864:20::434] (port=42733 helo=mail-pf1-x434.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nIeBW-0002iR-61 for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:14:41 -0500 Received: by mail-pf1-x434.google.com with SMTP id i6so16696330pfc.9 for ; Fri, 11 Feb 2022 14:14:26 -0800 (PST) Received: from fedora.. ([2405:201:6008:6f15:d26f:133e:cd11:90dd]) by smtp.googlemail.com with ESMTPSA id j23sm20623576pgb.75.2022.02.11.14.14.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:14:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=zKW6Zedd4cbPxMoQGRaMoZs5xJeqa5Cb1JCrYUFLu5g=; b=qn+PowPxnsTHVg/WDUfJQQvBd5zFR4sRKqkXCjW6Eg1sZxK+FgXp4Xh5wLPw/4apj+ fPamCqdvoj8GJ7bqwVAV/sD7apT8j5yzJ/x/WHhZ9L5KTOOyYrsfLRajM7MtH9k2H3QG 9jww/Fbh4hPKqEDVEbjOK09OEJRCha/TQFMHAVJNVywEuHXxV1mieTV702P6aVagYDwL 8npVYOlEVdsqoXXDLLhBdsDQgudRJDjmiz3CJW4cBGC3icQNPOvXw4KgLn1csq07O2Ar rHU28LKdN6VItEvtPren4EFChpy/4PBSlE7oJXlmP6bk09O+aYNPUc8coG4gB5XyIghA NaIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=zKW6Zedd4cbPxMoQGRaMoZs5xJeqa5Cb1JCrYUFLu5g=; b=n9J/EmuGkBHxKeGvW3f9kBHGhK3Op4bSHRUov0md+SMBMCLbOeobEouS8C+7K0ux7L 7+gEXjzu0pWAkfIB8BOSq+lE+jM3gM4BDAfb9bygTkD4Qe9ar+g/k2A/gNT4XOAdUUJT 0MLTPULb+r63LMyZsc9X7vYgSdj/m6TMlt5anpVJtRr4f/65/4qDg8hjwyZBXd7nlp1U CH26ZLlt3cKtrYXA12RA5NqBdDHPT6nwRi8IoVL3yDsfNlsUbG/bTeQjMht3Gu9zE5HK Yl/YTUMctR/jpeSWMJeo4o8sYU/EEZzFVJdzLs1RYY0uiHE7Lhd44IFwb6ZCZLZgcyrP M0hQ== X-Gm-Message-State: AOAM5325+ujOb2Qfir9+6iB/eVq0VTi25vTcnL3idxbwitTomrIHw4H7 cGOpI8kgiZk2a0kpkq41MOY= X-Google-Smtp-Source: ABdhPJyIlYb/Q6PL9pGBgcsnDbL86djsKJfnnNKcYFlPAaNBvPCMZM9tR55nOEmxkuASrYig/15dYQ== X-Received: by 2002:a63:287:: with SMTP id 129mr3071693pgc.158.1644617665916; Fri, 11 Feb 2022 14:14:25 -0800 (PST) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com, laurent@vivier.eu Subject: [RFC PATCH 01/25] virtio-snd: Add virtio sound header file Date: Sat, 12 Feb 2022 03:42:55 +0530 Message-Id: <20220211221319.193404-2-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::434 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::434; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pf1-x434.google.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, T_SPF_HELO_TEMPERROR=0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1644618083353100001 Content-Type: text/plain; charset="utf-8" Added device configuration and common definitions to the header file. Signed-off-by: Shreyansh Chouhan --- include/hw/virtio/virtio-snd.h | 97 ++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 include/hw/virtio/virtio-snd.h diff --git a/include/hw/virtio/virtio-snd.h b/include/hw/virtio/virtio-snd.h new file mode 100644 index 0000000000..bbbf174c51 --- /dev/null +++ b/include/hw/virtio/virtio-snd.h @@ -0,0 +1,97 @@ +/* + * Virtio Sound Device + */ + +#ifndef QEMU_VIRTIO_SOUND_H +#define QEMU_VIRTIO_SOUND_H + +#include "qemu/units.h" +#include "hw/virtio/virtio.h" +#include "qemu/queue.h" +#include "audio/audio.h" +#include "audio/audio_int.h" + +#define VIRTIO_ID_SOUND 25 + +/* CONFIGURATION SPACE */ + +typedef struct virtio_snd_config { + /* # of jacks available */ + uint32_t jacks; + /* # of streams avalable */ + uint32_t streams; + /* # chmaps available */ + uint32_t chmaps; +} virtio_snd_config; + +/* COMMON DEFINITIONS */ + +/* supported sample data directions. */ +enum { + VIRTIO_SND_D_OUTPUT =3D 0, + VIRTIO_SND_D_INPUT +}; + +enum { + /* jack control request types */ + VIRTIO_SND_R_JACK_INFO =3D 1, + VIRTIO_SND_R_JACK_REMAP, + + /* PCM control request types */ + VIRTIO_SND_R_PCM_INFO =3D 0x0100, + VIRTIO_SND_R_PCM_SET_PARAMS, + VIRTIO_SND_R_PCM_PREPARE, + VIRTIO_SND_R_PCM_RELEASE, + VIRTIO_SND_R_PCM_START, + VIRTIO_SND_R_PCM_STOP, + + /* channel map control request type */ + VIRTIO_SND_R_CHMAP_INFO =3D 0x200, + + /* jack event types */ + VIRTIO_SND_EVT_JACK_CONNECTED =3D 0x1000, + VIRTIO_SND_EVT_JACK_DISCONNECTED, + + /* PCM event types */ + VIRTIO_SND_EVT_PCM_PERIOD_ELAPSED =3D 0x1100, + VIRTIO_SND_EVT_PCM_XRUN, + + /* common status codes */ + VIRTIO_SND_S_OK =3D 0x8000, + VIRTIO_SND_S_BAD_MSG, + VIRTIO_SND_S_NOT_SUPP, + VIRTIO_SND_S_IO_ERR +}; + +/* common header for request/response*/ +typedef struct virtio_snd_hdr { + uint32_t code; +} virtio_snd_hdr; + +/* event notification */ +typedef struct virtio_snd_event { + /* VIRTIO_SND_EVT_* */ + virtio_snd_hdr hdr; + /* Optional event data */ + uint32_t data; +} virtio_snd_event; + +/* common control request to query an item information */ +typedef struct virtio_snd_query_info { + /* VIRTIO_SND_R_*_INFO */ + struct virtio_snd_hdr hdr; + /* item start identifier */ + uint32_t start_id; + /* # of items to query */ + uint32_t count; + /* size of a single item information in bytes */ + uint32_t size; +} virtio_snd_query_info; + +/* common item information header */ +typedef struct virtio_snd_info { + /* functional group node id (HDA Spec 7.1.2) */ + uint32_t hda_fn_nid; +} virtio_snd_info; + +#endif --=20 2.31.1 From nobody Mon Feb 9 01:00:57 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1644617876; cv=none; d=zohomail.com; s=zohoarc; b=U7E07mUwOc7K892pab0ASMdPsc1xWqT5VKyQEa/8qGNv28aGcoJhOYzPrBC1nCpSMD1Dc2QQYDIoHPqvT5PeP+cY4HW3Bl91UAk5JnPii3mjDx+GFqn0DDwSy8t/xlYzX06SjoowOt7ifG6npsftrYAOohmWOZ/NGMiI0VdA4T8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644617876; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Z6mFlDGTgPsJEQXWuiVCXDYnPz09iAqdu7okAUnbemg=; b=nci8Us4GaRcADnNGNJxpvgEEY4oiFU48ZdzmxGqwjEOB749H3KsjgLdGKsetIUbo4bVr5vqTOwE25/n2C0v7ruFm8TZlu02N/xUO9q9i/TOUp74eWqg7Vltzt0miA7SIVFcNR11trkJcdur457Ir0x7Y8vS2/XGLL/vPoSk3CkI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1644617876111985.6087524872327; Fri, 11 Feb 2022 14:17:56 -0800 (PST) Received: from localhost ([::1]:38690 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nIeEk-0007T7-Ji for importer@patchew.org; Fri, 11 Feb 2022 17:17:54 -0500 Received: from eggs.gnu.org ([209.51.188.92]:41850) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIeBc-0004vH-SG for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:14:41 -0500 Received: from [2607:f8b0:4864:20::431] (port=45780 helo=mail-pf1-x431.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nIeBZ-0002jo-Sq for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:14:40 -0500 Received: by mail-pf1-x431.google.com with SMTP id 9so15699517pfx.12 for ; Fri, 11 Feb 2022 14:14:37 -0800 (PST) Received: from fedora.. ([2405:201:6008:6f15:d26f:133e:cd11:90dd]) by smtp.googlemail.com with ESMTPSA id j23sm20623576pgb.75.2022.02.11.14.14.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:14:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Z6mFlDGTgPsJEQXWuiVCXDYnPz09iAqdu7okAUnbemg=; b=g2RIH+PaGzV0sjzZOmCLf9DOQnakpk0DN+yx33j0cPBwn4TVI1R7CJgPI3NDJCR3J5 AeyPeXV0Ruaubu8i4XbsclCTnTQWNHDhdxPlEmRcmNG8cxnwoFVonoa7I4SNpFxNzuS+ mFNsVThp+v1v8cQXrYAUdpI4UZ8ppxfhOkJE+wsGgrQkelNPfbDC062AZgN7pXqZ5QwQ 1IqZxGHwJkggxjA5Jflm628W3JYG2TpzH/vIZnzQnkIXwslD1k7M+WlzYXMD6+Vuhn2v LnoEkNbxBw3cs//N4uvdjUoCbZhmUTtYNd7ir9/2Kz4zqCmxad0c3gSvBC8EXwFXjM/y uIrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Z6mFlDGTgPsJEQXWuiVCXDYnPz09iAqdu7okAUnbemg=; b=4Zo1lXov0+5bUtNKxoOLOevHU3cTFW6ESrvsTmINNHdYSmfT04Qy1tLxBCc6boEV7W PNS8Cu+3rd0DBwaa9RTbmAxUuSiOVNThmdfs4OWCaYTCmUlKqTUkKCpMo2BTJmMXvfe4 YO2eFC+Vk77tGIcIg4a5EN5vw+v5fRBrhraZcIPO1r8xY4BGXnNPKbCIn3Fqyftb/Rcs 3J3DOC0Gj8kQErHGDqjPevUcALeR2pgPQMgn6JNyduSRvJKykXY/za8C1zNk8NJkkegg YHzdcw021VuUQkSAgHUomfGwRmtlANG0yiyJfkywWngPoBVa6oVaSJdvBfHrP+bP8a5E AREg== X-Gm-Message-State: AOAM531iGmdRf5gpwPmmL2F4R4nLTqp+TsZDjGR3nkOElTU65sQwUC7z PtB3bJL2c51tYflx9D+yS48= X-Google-Smtp-Source: ABdhPJya5kVVkhEioIHX9107eDxfTS7TKbzFRfGi15N5udlV2OhkoJiHQLZ9C/TUF3R5u4BT3P4lxQ== X-Received: by 2002:aa7:88c7:: with SMTP id k7mr3575777pff.38.1644617676616; Fri, 11 Feb 2022 14:14:36 -0800 (PST) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com, laurent@vivier.eu Subject: [RFC PATCH 02/25] virtio-snd: Add jack control structures Date: Sat, 12 Feb 2022 03:42:56 +0530 Message-Id: <20220211221319.193404-3-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::431 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::431; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pf1-x431.google.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1644617877082100003 Content-Type: text/plain; charset="utf-8" Added structures for handling jack control requests to the header file. Signed-off-by: Shreyansh Chouhan --- include/hw/virtio/virtio-snd.h | 40 ++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/include/hw/virtio/virtio-snd.h b/include/hw/virtio/virtio-snd.h index bbbf174c51..f58b06a949 100644 --- a/include/hw/virtio/virtio-snd.h +++ b/include/hw/virtio/virtio-snd.h @@ -94,4 +94,44 @@ typedef struct virtio_snd_info { uint32_t hda_fn_nid; } virtio_snd_info; =20 +/* JACK CONTROL MESSAGES */ + +typedef struct virtio_snd_jack_hdr { + /* VIRTIO_SND_R_JACK_* */ + virtio_snd_hdr hdr; + /* 0 to (virtio_snd_config.jacks - 1) */ + uint32_t jack_id; +} virtio_snd_jack_hdr; + +/* Supported jack features */ +enum { + VIRTIO_SND_F_JACK_REMAP =3D 0 +}; + +/* jack information structure */ +typedef struct virtio_snd_jack_info { + /* common header */ + virtio_snd_info hdr; + /* 1 << VIRTIO_SND_JACK_F_* */ + uint32_t features; + /* pin default configuration from HDA spec */ + uint32_t hda_reg_defconf; + /* pin capabilities from HDA spec */ + uint32_t hda_reg_caps; + /* connection status (0: disconnected, 1: connected) */ + uint8_t connected; + + uint8_t padding[7]; +} virtio_snd_jack_info; + +/* jack remapping control request */ +typedef struct virtio_snd_jack_remap { + /* .code =3D VIRTIO_SND_R_JACK_REMAP */ + virtio_snd_jack_hdr hdr; + /* selected association number */ + uint32_t association; + /* selected sequence number */ + uint32_t sequence; +} virtio_snd_jack_remap; + #endif --=20 2.31.1 From nobody Mon Feb 9 01:00:57 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1619698417; cv=none; d=zohomail.com; s=zohoarc; b=GmmYYXMpfvfSFNmS/lqbSmwH0VFyQ4i7h9mgWxo3i1AqS1/E8LPmwQ14BMizbaZ2SHD47FGM9c7qUIl4BUKv1e7FyeXsGUC2AqDmkCkW84t/VPwcqdb9juBnAg7DvLdz8O6nzYvUWkcm2PL+nVRCS8fphjVui3auCyxm8nytwIw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619698417; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=5ig1JXhD7v222C44og9xc1xsmm+l6y1xpCVdKjFd1wk=; b=fpP35zaWLEjuldIsUsKsOkt/FPudHT5lUhRumv0efk/Vh66rYPTnJAudHBFc2vFJrTXKSwe9PDkgrf7Eg8qQ99f3y98PwVjSw7KFDfNbGVlPqkMmsjgfr8LNPqtkjnN7xAMOGTC3csv9Axrh6a3YlpEKpHsa5OPPHf5QqSBCntg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619698417892671.3146670237093; Thu, 29 Apr 2021 05:13:37 -0700 (PDT) Received: from localhost ([::1]:42398 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lc5Y0-0004Cz-Jn for importer@patchew.org; Thu, 29 Apr 2021 08:13:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39252) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lc5QJ-0007Xd-JY for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:05:39 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]:35479) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lc5QH-0000DX-DI for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:05:39 -0400 Received: by mail-pf1-x433.google.com with SMTP id c19so1294705pfv.2 for ; Thu, 29 Apr 2021 05:05:37 -0700 (PDT) Received: from localhost.localdomain ([2405:201:6008:61b4:c0b1:be0f:608e:9a45]) by smtp.gmail.com with ESMTPSA id p6sm713643pjg.35.2021.04.29.05.05.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Apr 2021 05:05:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5ig1JXhD7v222C44og9xc1xsmm+l6y1xpCVdKjFd1wk=; b=uEQ6j+Eji63Nkp/Foouz7M9kbFrqEN5nZdqd/VzTp9SaA+ohXu4B55S7oJQtk1IvLY 1AaNdRrdARquvsRbqo5m/NjWkAMkuEbEyajLTJpfRmUwgFyspYiF4HYrfyppSr4otiPp 50hOizE01CrYbetw+dIUmJ86m1jxMR6bUa54NgDA38v1rhFaq2WO6mLiSlTV2aPUKMAP IULfsz+eheBJhazpKYFP+ZkKFUje/1g8GYaxBdHUj6xI5vruukdyhrpGyUq2JzNbG7zq Z+JlUG1XRIJqfmM5a9mTjQBxy+LY2fuzxJ1C01LXcHix7D32aqOtsrCgW4ABrW4Q1XLZ VJuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5ig1JXhD7v222C44og9xc1xsmm+l6y1xpCVdKjFd1wk=; b=emoLyEGZ4+c69IPbH7PPahq7egcvwh350qaX90PlMu/zJgWcslBC9EVS88EMqrzmXd qLIJI1yZUTk00yGE8OccpoOnkhRgejXDMvslScUMxeBcdou183jCFJh68MnUo2e8BR3q YXJKdBGVTPjXRW7xywfgkxMIiCq5v03Ngmi2b8+8XieoGHH0Sz/9E+OhSY8A3SJZ4BR0 9WulaewB0RvFcvoRn56XAGJRMSAS+SIK5NR34thazI8/Fy+ewJUWOnN528V7s6gFrYeU TaFLafHgsGG5jD+jx50dGeGTW7ucBFPUKQJxG2H5H3JkDfxQMv8KT57Z6zui52e1wq/x xoFA== X-Gm-Message-State: AOAM530WVfylJvnDcJ4LVAS3e2W0HnJauMlIT3scqgbVxsKAYlgqqLsX bpbzweUl4g0BcraOCGvrUPA= X-Google-Smtp-Source: ABdhPJxDufT8Hp6JvS9msZ90vmTQksOb8NIXxmezYm3FZd+HLfcvYP25hGYbABS+LB1ZM67sUKAMGQ== X-Received: by 2002:a63:6f8e:: with SMTP id k136mr32876614pgc.326.1619697936151; Thu, 29 Apr 2021 05:05:36 -0700 (PDT) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com Subject: [RFC PATCH 02/27] virtio-snd: Add jack control structures Date: Thu, 29 Apr 2021 17:34:20 +0530 Message-Id: <20210429120445.694420-3-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pf1-x433.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Type: text/plain; charset="utf-8" Added structures for handling jack control requests to the header file. Signed-off-by: Shreyansh Chouhan --- include/hw/virtio/virtio-snd.h | 40 ++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/include/hw/virtio/virtio-snd.h b/include/hw/virtio/virtio-snd.h index bbbf174c51..f58b06a949 100644 --- a/include/hw/virtio/virtio-snd.h +++ b/include/hw/virtio/virtio-snd.h @@ -94,4 +94,44 @@ typedef struct virtio_snd_info { uint32_t hda_fn_nid; } virtio_snd_info; =20 +/* JACK CONTROL MESSAGES */ + +typedef struct virtio_snd_jack_hdr { + /* VIRTIO_SND_R_JACK_* */ + virtio_snd_hdr hdr; + /* 0 to (virtio_snd_config.jacks - 1) */ + uint32_t jack_id; +} virtio_snd_jack_hdr; + +/* Supported jack features */ +enum { + VIRTIO_SND_F_JACK_REMAP =3D 0 +}; + +/* jack information structure */ +typedef struct virtio_snd_jack_info { + /* common header */ + virtio_snd_info hdr; + /* 1 << VIRTIO_SND_JACK_F_* */ + uint32_t features; + /* pin default configuration from HDA spec */ + uint32_t hda_reg_defconf; + /* pin capabilities from HDA spec */ + uint32_t hda_reg_caps; + /* connection status (0: disconnected, 1: connected) */ + uint8_t connected; + + uint8_t padding[7]; +} virtio_snd_jack_info; + +/* jack remapping control request */ +typedef struct virtio_snd_jack_remap { + /* .code =3D VIRTIO_SND_R_JACK_REMAP */ + virtio_snd_jack_hdr hdr; + /* selected association number */ + uint32_t association; + /* selected sequence number */ + uint32_t sequence; +} virtio_snd_jack_remap; + #endif --=20 2.25.1 From nobody Mon Feb 9 01:00:57 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1644618103; cv=none; d=zohomail.com; s=zohoarc; b=AeHWg4oxVIqHpQp6ykZEwlvHuefDJjQZ0e7YUyRPrYEyGY9yqZQNiiaOdsmefMBlW7GawTg8EJ7Cvaz1OZhiR5roqfq4yVzODgWR8pO81Do4WaBlVTFZ7loq9NnoCaCjY8Ru/FRWymxrEAbCkbb41nGVSYtDzov8RsZbwaK745o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644618103; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=tRy4Gi6U5+4vNluo6PbIiRmhQ3wpCAKa/CffwkfKOso=; b=CLiTnmyZ2uX/hX6kViH6zM5aSzViFK/FsP9+Sitw2horckrwcFK+CcKfurFCfvMI4KYdWOo9/TLF25d5cJ4dGsVsfAget2zAFVyiWjy5VvkCKc36EJeJjnay2tQHQhcwF+pnQpZx/R2hf8z0SfeNHBw90UuDudXjxWJcQd9X1gM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1644618103491699.2622808053694; Fri, 11 Feb 2022 14:21:43 -0800 (PST) Received: from localhost ([::1]:47046 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nIeIQ-0004my-Dz for importer@patchew.org; Fri, 11 Feb 2022 17:21:42 -0500 Received: from eggs.gnu.org ([209.51.188.92]:41872) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIeBg-0004yF-Rj for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:14:46 -0500 Received: from [2607:f8b0:4864:20::1032] (port=36387 helo=mail-pj1-x1032.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nIeBe-0002lH-SS for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:14:44 -0500 Received: by mail-pj1-x1032.google.com with SMTP id c5-20020a17090a1d0500b001b904a7046dso11641118pjd.1 for ; Fri, 11 Feb 2022 14:14:42 -0800 (PST) Received: from fedora.. ([2405:201:6008:6f15:d26f:133e:cd11:90dd]) by smtp.googlemail.com with ESMTPSA id j23sm20623576pgb.75.2022.02.11.14.14.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:14:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=tRy4Gi6U5+4vNluo6PbIiRmhQ3wpCAKa/CffwkfKOso=; b=E6DtpAAYiYqZS7SHmOrJ6HK9TzGFSH1rT7WC1HU3eMFs1KDsGwb1Qje8eHJN99Jc5g 4/c2LhwoNrdjXCpYfBJxuKDuhkFQgc/5A9H1/Ez6QQPBibpmwHdeilAormNu6aXvwxXm V0s8/u4GfuAVXfJRsUkEVt0esv+F9n1voIdL8aTX221PrrlHxWfWWLpZHUx0xJ49gM9v BXYyoXizr563MRnnCAvmAleh0vVZM+kwkQZU9smnClyo47NCNiOM63xQPDyr/ra3ZA3q mMWAYpeu69JaT7nrXaKKJ5A+xxOubWvvS6P9DQ7X6qX8xnFMV7twz6dEBMdfQkaqMQnK tITA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=tRy4Gi6U5+4vNluo6PbIiRmhQ3wpCAKa/CffwkfKOso=; b=IqolGwAXvjmdEBGk1llET4+C8sE/dIgbVsVm7hvgIdOemS/l0IHtyxQ/j6bc6vXHgw 9IMvKvj3eUG86yIzTiQLcana6CBsFwRFvsfRqCoX6nagZ56mX+/oPCUWbcw9j2Gu7Qhw B5YCLgMbO12j33Yo07JBTUm2ZEu4vXAp+L5GZs2lNK9jwj3XJYWjaMa/TItP54xh/fSI uXrG9p8CBG5bxhXnVaDJ48DpegHrtSkdkJK6KlU9QainQx09yh3OpSo01f7VJF4A4Y0d +WlYrw1B2hG8AdBCcshGv9tCVpCHleeGuHyLxnki50IjBQoyWSKYp3Ut83IlT9hjLptu X7GQ== X-Gm-Message-State: AOAM533TMzFw9tB6rUe48aZ181fpX5g2PYW8Z8FYgjKqoYMdkE6bjGPV UcQgnhxmdadKK8d+lmM5z2lx3LAAIaA= X-Google-Smtp-Source: ABdhPJx5ERo1FcrH6jk5JZro32XoONXdfz5ipoHowsM8cHluRMGLDinil07WLMXkH6ARg0nO/e5ASw== X-Received: by 2002:a17:902:8f92:: with SMTP id z18mr3502790plo.42.1644617681704; Fri, 11 Feb 2022 14:14:41 -0800 (PST) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com, laurent@vivier.eu Subject: [RFC PATCH 03/25] virtio-snd: Add PCM control structures Date: Sat, 12 Feb 2022 03:42:57 +0530 Message-Id: <20220211221319.193404-4-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::1032 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1032; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pj1-x1032.google.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1644618105584100001 Content-Type: text/plain; charset="utf-8" Added structures for handle PCM control requests to the heaer file. Signed-off-by: Shreyansh Chouhan --- include/hw/virtio/virtio-snd.h | 123 +++++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) diff --git a/include/hw/virtio/virtio-snd.h b/include/hw/virtio/virtio-snd.h index f58b06a949..a7828c4ab8 100644 --- a/include/hw/virtio/virtio-snd.h +++ b/include/hw/virtio/virtio-snd.h @@ -134,4 +134,127 @@ typedef struct virtio_snd_jack_remap { uint32_t sequence; } virtio_snd_jack_remap; =20 +/* PCM CONTROL MESSAGES */ + +typedef struct virtio_snd_pcm_hdr { + /* .code =3D VIRTIO_SND_R_PCM_* */ + virtio_snd_hdr hdr; + /* 0 to (virtio_snd_config.streams - 1) */ + uint32_t stream_id; +} virtio_snd_pcm_hdr; + + +/* Supported PCM stream features */ +enum { + VIRTIO_SND_PCM_F_SHMEM_HOST =3D 0, + VIRTIO_SND_PCM_F_SHMEM_GUEST, + VIRTIO_SND_PCM_F_MSG_POLLING, + VIRTIO_SND_PCM_F_EVT_SHMEM_PERIODS, + VIRTIO_SNDPCM_F_EVT_XRUNS +}; + +/* Supported sample formats */ +enum { + /* analog formats (width / physical width) */ + VIRTIO_SND_PCM_FMT_IMA_ADPCM =3D 0, /* 4 / 4 bits */ + VIRTIO_SND_PCM_FMT_MU_LAW, /* 8 / 8 bits */ + VIRTIO_SND_PCM_FMT_A_LAW, /* 8 / 8 bits */ + VIRTIO_SND_PCM_FMT_S8, /* 8 / 8 bits */ + VIRTIO_SND_PCM_FMT_U8, /* 8 / 8 bits */ + VIRTIO_SND_PCM_FMT_S16, /* 16 / 16 bits */ + VIRTIO_SND_PCM_FMT_U16, /* 16 / 16 bits */ + VIRTIO_SND_PCM_FMT_S18_3, /* 18 / 24 bits */ + VIRTIO_SND_PCM_FMT_U18_3, /* 18 / 24 bits */ + VIRTIO_SND_PCM_FMT_S20_3, /* 20 / 24 bits */ + VIRTIO_SND_PCM_FMT_U20_3, /* 20 / 24 bits */ + VIRTIO_SND_PCM_FMT_S24_3, /* 24 / 24 bits */ + VIRTIO_SND_PCM_FMT_U24_3, /* 24 / 24 bits */ + VIRTIO_SND_PCM_FMT_S20, /* 20 / 32 bits */ + VIRTIO_SND_PCM_FMT_U20, /* 20 / 32 bits */ + VIRTIO_SND_PCM_FMT_S24, /* 24 / 32 bits */ + VIRTIO_SND_PCM_FMT_U24, /* 24 / 32 bits */ + VIRTIO_SND_PCM_FMT_S32, /* 32 / 32 bits */ + VIRTIO_SND_PCM_FMT_U32, /* 32 / 32 bits */ + VIRTIO_SND_PCM_FMT_FLOAT, /* 32 / 32 bits */ + VIRTIO_SND_PCM_FMT_FLOAT64, /* 64 / 64 bits */ + /* digital formats (width / physical width) */ + VIRTIO_SND_PCM_FMT_DSD_U8, /* 8 / 8 bits */ + VIRTIO_SND_PCM_FMT_DSD_U16, /* 16 / 16 bits */ + VIRTIO_SND_PCM_FMT_DSD_U32, /* 32 / 32 bits */ + VIRTIO_SND_PCM_FMT_IEC958_SUBFRAME /* 32 / 32 bits */ +}; + +/* Supported PCM frame rates */ +enum { + VIRTIO_SND_PCM_RATE_5512 =3D 0, + VIRTIO_SND_PCM_RATE_8000, + VIRTIO_SND_PCM_RATE_11025, + VIRTIO_SND_PCM_RATE_16000, + VIRTIO_SND_PCM_RATE_22050, + VIRTIO_SND_PCM_RATE_32000, + VIRTIO_SND_PCM_RATE_44100, + VIRTIO_SND_PCM_RATE_48000, + VIRTIO_SND_PCM_RATE_64000, + VIRTIO_SND_PCM_RATE_88200, + VIRTIO_SND_PCM_RATE_96000, + VIRTIO_SND_PCM_RATE_176399, + VIRTIO_SND_PCM_RATE_192000, + VIRTIO_SND_PCM_RATE_384000 +}; + +/* PCM stream info structure */ +typedef struct virtio_snd_pcm_info { + /* common header */ + virtio_snd_info hdr; + /* supported features bitmap (1 << VIRTIO_SND_PCM_F_*) */ + uint32_t features; + /* supported sample formats bitmap (1 << VIRTIO_SND_PCM_FMT_*) */ + uint64_t formats; + /* supported sample rates bitmap (1 << VIRTIO_SND_PCM_RATE_*) */ + uint64_t rates; + /* direction of the stream (VIRTIO_SND_D_*) */ + uint8_t direction; + /* min # of supported channels */ + uint8_t channels_min; + /* max # of supported channels */ + uint8_t channels_max; + + uint8_t padding[5]; +} virtio_snd_pcm_info; + +/* set PCM stream params */ +typedef struct virtio_snd_pcm_set_params { + virtio_snd_pcm_hdr hdr; + /* size of hardware buffer in bytes */ + uint32_t buffer_bytes; + /* size of hardware period in bytes */ + uint32_t period_bytes; + /* selected feature bitmap */ + uint32_t features; + /* number of channels */ + uint8_t channel; + /* VIRTIO_SND_PCM_FMT_* */ + uint8_t format; + /* VIRTIO_SND_PCM_RATE_* */ + uint8_t rate; + + uint8_t padding; +} virtio_snd_pcm_set_params; + +/* PCM I/O MESSAGES */ + +/* I/O request header */ +typedef struct virtio_snd_pcm_xfer { + /* 0 to (virtio_snd_config.stream - 1 */ + uint32_t stream_id; +} virtio_snd_pcm_xfer; + +/* I/O request status */ +typedef struct virtio_snd_pcm_status { + /* VIRTIO_SND_S_* */ + uint32_t status; + /* current device latency */ + uint32_t latency_bytes; +} virtio_snd_pcm_status; + #endif --=20 2.31.1 From nobody Mon Feb 9 01:00:57 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1619698715; cv=none; d=zohomail.com; s=zohoarc; b=BEK8YvV1gFYu81eYjYG8HvKa42kgRrTnyqT5MklWSJI2b7T13KC0PvL5Qcz1B/AJnV5RQEQ1qr0DxQiOHuDWI55TYtE4aWalfd2Wy1CU1JyrtILnRJ3aQrj4vw8M1NIhB62gezs46Vz2mFViw2QK7o9duvoWZMUfIcmSO1XByW8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619698715; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=jBcRmevKhpsCshTshdLKiiPquZrapKxr31avgj1dYA0=; b=CbRgFg9di+j2kxO19GfWj9fvum38RK9c7WySmmXhnBbX0mRQiCFwS7lLGvzSeZdNGbbADsrgkkjLrjVky7qDU/Pg5xRnlbES9Ymyq8kR/tglqEjx323VWiFxtTxMKrkRR2vfnmICQ4Hv/2lYXwS+jRgmOCzP47dSbZK/nBUqzmU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619698715881187.67490375541968; Thu, 29 Apr 2021 05:18:35 -0700 (PDT) Received: from localhost ([::1]:51032 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lc5cp-0007uf-2o for importer@patchew.org; Thu, 29 Apr 2021 08:18:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39316) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lc5QQ-0007ib-7A for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:05:46 -0400 Received: from mail-pg1-x533.google.com ([2607:f8b0:4864:20::533]:45658) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lc5QJ-0000Fq-O3 for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:05:45 -0400 Received: by mail-pg1-x533.google.com with SMTP id d10so8602650pgf.12 for ; Thu, 29 Apr 2021 05:05:39 -0700 (PDT) Received: from localhost.localdomain ([2405:201:6008:61b4:c0b1:be0f:608e:9a45]) by smtp.gmail.com with ESMTPSA id p6sm713643pjg.35.2021.04.29.05.05.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Apr 2021 05:05:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=jBcRmevKhpsCshTshdLKiiPquZrapKxr31avgj1dYA0=; b=fQJN1u8PLVhjWjjiYH0dkNOrzcsM0wI0aRWAW6OMAidXpkTrvZF6pQXJrdGAVLl2mJ 8Aq56QpYYGkE+zAPktIk4USk23/tfRD7A1RDAFOiPC74HThg5CwtWapKqvKNmTjLNc2a ocAPbzLO78vHnBgLi2oPwU8P/TYJO2HH59dZxgTcNNi80oRz+BhL3Yciu4CMmM1qxDtz OD+Rs0k6IXrcqz/f1qZ31ec/cBtteCjP4Gg/k3edhUcpOa8OxTYsvPxouXARsnzdwsqU Y+myV56sLZKX0VZ6OEluOJtxF18SFd1yxZZerghdkT0M7EmNXjRgvJymNHrAD7XghXAc uaNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=jBcRmevKhpsCshTshdLKiiPquZrapKxr31avgj1dYA0=; b=L0s0ZcQ2HG0zd06+IC55g3h0BhdKYVVNtImZpZAcfxIkj14pAeaQGGsgxIh2Sj4NT2 mT/NVyR3Yf3bIYUdG6olBimyyPZYYo0OL7Nf8/2ve8+xM9SRZ52bMh3awO8MluyIFnxK aKRKxn5s3cUq8R1sJVCZoSEciPXQflfjN9wy8DYeAfpp+gFYopA059fA+NGaeBEuQtE8 zybVqWAE7XnhIGKGOnK4C+lfu3Z0jx3jT+gZTXt1F0E1/SQ7grCtjPKZ0Zn4hXziNBHS 1h7XMSENiexc7B2qPp3KNS83U5tbSAwS5ucAWb5Q9hNtTHz81nuBLZrAo80K52f5rsnN mD0g== X-Gm-Message-State: AOAM530EW/ch1cf1SISGl89Dgei3nWfArpMQhpwBJZEU7WW/4YJ4diuL Cro5DYmd1Frs6SjrxyycjKDZyW7hTXHba3iMPfo= X-Google-Smtp-Source: ABdhPJyM47GMxiX/SLQtVWWwrp7kMi7IaAtq/JqKc/0nSWejS+xXTZSSoo8ccFsjTgFDnzzLv4gcbg== X-Received: by 2002:a63:7f41:: with SMTP id p1mr19385522pgn.208.1619697938435; Thu, 29 Apr 2021 05:05:38 -0700 (PDT) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com Subject: [RFC PATCH 03/27] virtio-snd: Add PCM control structures Date: Thu, 29 Apr 2021 17:34:21 +0530 Message-Id: <20210429120445.694420-4-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::533; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pg1-x533.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Type: text/plain; charset="utf-8" Added structures for handle PCM control requests to the heaer file. Signed-off-by: Shreyansh Chouhan --- include/hw/virtio/virtio-snd.h | 128 +++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) diff --git a/include/hw/virtio/virtio-snd.h b/include/hw/virtio/virtio-snd.h index f58b06a949..e9a4fe3c5d 100644 --- a/include/hw/virtio/virtio-snd.h +++ b/include/hw/virtio/virtio-snd.h @@ -134,4 +134,132 @@ typedef struct virtio_snd_jack_remap { uint32_t sequence; } virtio_snd_jack_remap; =20 +/* PCM CONTROL MESSAGES */ + +typedef struct virtio_snd_pcm_hdr { + /* .code =3D VIRTIO_SND_R_PCM_* */ + virtio_snd_hdr hdr; + /* 0 to (virtio_snd_config.streams - 1) */ + uint32_t stream_id; +} virtio_snd_pcm_hdr; + + +/* Supported PCM stream features */ +enum { + VIRTIO_SND_PCM_F_SHMEM_HOST =3D 0, + VIRTIO_SND_PCM_F_SHMEM_GUEST, + VIRTIO_SND_PCM_F_MSG_POLLING, + VIRTIO_SND_PCM_F_EVT_SHMEM_PERIODS, + VIRTIO_SNDPCM_F_EVT_XRUNS +}; + +/* PCM stream flags */ +enum { + VIRTIO_SND_PCM_FL_CHMAP =3D 0 +}; + +/* Supported sample formats */ +enum { + /* analog formats (width / physical width) */ + VIRTIO_SND_PCM_FMT_IMA_ADPCM =3D 0, /* 4 / 4 bits */ + VIRTIO_SND_PCM_FMT_MU_LAW, /* 8 / 8 bits */ + VIRTIO_SND_PCM_FMT_A_LAW, /* 8 / 8 bits */ + VIRTIO_SND_PCM_FMT_S8, /* 8 / 8 bits */ + VIRTIO_SND_PCM_FMT_U8, /* 8 / 8 bits */ + VIRTIO_SND_PCM_FMT_S16, /* 16 / 16 bits */ + VIRTIO_SND_PCM_FMT_U16, /* 16 / 16 bits */ + VIRTIO_SND_PCM_FMT_S18_3, /* 18 / 24 bits */ + VIRTIO_SND_PCM_FMT_U18_3, /* 18 / 24 bits */ + VIRTIO_SND_PCM_FMT_S20_3, /* 20 / 24 bits */ + VIRTIO_SND_PCM_FMT_U20_3, /* 20 / 24 bits */ + VIRTIO_SND_PCM_FMT_S24_3, /* 24 / 24 bits */ + VIRTIO_SND_PCM_FMT_U24_3, /* 24 / 24 bits */ + VIRTIO_SND_PCM_FMT_S20, /* 20 / 32 bits */ + VIRTIO_SND_PCM_FMT_U20, /* 20 / 32 bits */ + VIRTIO_SND_PCM_FMT_S24, /* 24 / 32 bits */ + VIRTIO_SND_PCM_FMT_U24, /* 24 / 32 bits */ + VIRTIO_SND_PCM_FMT_S32, /* 32 / 32 bits */ + VIRTIO_SND_PCM_FMT_U32, /* 32 / 32 bits */ + VIRTIO_SND_PCM_FMT_FLOAT, /* 32 / 32 bits */ + VIRTIO_SND_PCM_FMT_FLOAT64, /* 64 / 64 bits */ + /* digital formats (width / physical width) */ + VIRTIO_SND_PCM_FMT_DSD_U8, /* 8 / 8 bits */ + VIRTIO_SND_PCM_FMT_DSD_U16, /* 16 / 16 bits */ + VIRTIO_SND_PCM_FMT_DSD_U32, /* 32 / 32 bits */ + VIRTIO_SND_PCM_FMT_IEC958_SUBFRAME /* 32 / 32 bits */ +}; + +/* Supported PCM frame rates */ +enum { + VIRTIO_SND_PCM_RATE_5512 =3D 0, + VIRTIO_SND_PCM_RATE_8000, + VIRTIO_SND_PCM_RATE_11025, + VIRTIO_SND_PCM_RATE_16000, + VIRTIO_SND_PCM_RATE_22050, + VIRTIO_SND_PCM_RATE_32000, + VIRTIO_SND_PCM_RATE_44100, + VIRTIO_SND_PCM_RATE_48000, + VIRTIO_SND_PCM_RATE_64000, + VIRTIO_SND_PCM_RATE_88200, + VIRTIO_SND_PCM_RATE_96000, + VIRTIO_SND_PCM_RATE_176399, + VIRTIO_SND_PCM_RATE_192000, + VIRTIO_SND_PCM_RATE_384000 +}; + +/* PCM stream info structure */ +typedef struct virtio_snd_pcm_info { + /* common header */ + virtio_snd_info hdr; + /* supported features bitmap (1 << VIRTIO_SND_PCM_F_*) */ + uint32_t features; + /* supported sample formats bitmap (1 << VIRTIO_SND_PCM_FMT_*) */ + uint64_t formats; + /* supported sample rates bitmap (1 << VIRTIO_SND_PCM_RATE_*) */ + uint64_t rates; + /* direction of the stream (VIRTIO_SND_D_*) */ + uint8_t direction; + /* min # of supported channels */ + uint8_t channels_min; + /* max # of supported channels */ + uint8_t channels_max; + + uint8_t padding[5]; +} virtio_snd_pcm_info; + +/* set PCM stream params */ +typedef struct virtio_snd_pcm_set_params { + virtio_snd_pcm_hdr hdr; + /* size of hardware buffer in bytes */ + uint32_t buffer_bytes; + /* size of hardware period in bytes */ + uint32_t period_bytes; + /* selected feature bitmap */ + uint32_t features; + /* number of channels */ + uint8_t channel; + /* VIRTIO_SND_PCM_FMT_* */ + uint8_t format; + /* VIRTIO_SND_PCM_RATE_* */ + uint8_t rate; + + uint8_t padding; +} virtio_snd_pcm_set_params; + +/* PCM I/O MESSAGES */ + +/* I/O request header */ +typedef struct virtio_snd_pcm_xfer { + /* 0 to (virtio_snd_config.stream - 1 */ + uint32_t stream_id; +} virtio_snd_pcm_xfer; + +/* I/O request status */ +typedef struct virtio_snd_pcm_status { + /* VIRTIO_SND_S_* */ + uint32_t status; + /* current device latency */ + uint32_t latency_bytes; +} virtio_snd_pcm_status; + #endif --=20 2.25.1 From nobody Mon Feb 9 01:00:57 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1619698414; cv=none; d=zohomail.com; s=zohoarc; b=REcGXZsVben2+ByT3xSvcG3+eGycqyVSWazetrtxgG9HTjfq2Dk9L7I3mfUmrr37u1S5x4/iNyu0Fzbmy9Etul62Lclzc4xn1LYplcjmLSJStPXGeAyvODeGD4UYGjwqo7134d21HtkjsfRg0HfauSoIMBbzzDhcdBFgDR7sbE0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619698414; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=8jpredQuPQQf0ushdz/KqU8uXVP1y5KeDEUfoi6lYsE=; b=LXOKW7Ye08WbBmT4AiEblsKZoWF1zHuJhjk+wNh2Y8XMTojKpETNC4D85Fy7XigKKYEMogJ5aP2ojQ/HJaUErZMlR+DxqNSjHWjRyBW4anVxquNusA7gFFqgdopg+YxiK3QqgvxK4K0ITV7iwAB9s/wM3QogQMqXIeGiM1vFGBY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619698414896918.3473055064659; Thu, 29 Apr 2021 05:13:34 -0700 (PDT) Received: from localhost ([::1]:42160 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lc5Xx-00045l-NS for importer@patchew.org; Thu, 29 Apr 2021 08:13:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39290) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lc5QN-0007fJ-UX for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:05:43 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]:37393) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lc5QM-0000JQ-8E for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:05:43 -0400 Received: by mail-pl1-x62e.google.com with SMTP id h20so34630248plr.4 for ; Thu, 29 Apr 2021 05:05:41 -0700 (PDT) Received: from localhost.localdomain ([2405:201:6008:61b4:c0b1:be0f:608e:9a45]) by smtp.gmail.com with ESMTPSA id p6sm713643pjg.35.2021.04.29.05.05.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Apr 2021 05:05:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=8jpredQuPQQf0ushdz/KqU8uXVP1y5KeDEUfoi6lYsE=; b=dTp0a0rShO+H5gD/WGzHLqxlai8hiy4fB3rMtLYQlcJV5K+UDeJN3iEwc409FmEzZ/ 74pgCM9uHt3R4PIgzcRMIb+oNPqth6g2DJdsU+PkwU8yHRLeuGixA/NvXqUlFofqR/ZN QzIrR6cpCNVp9KlbWkwDEkA//3F4pypN8YNHuTeb5XirD2h5TPT44CqEsUyPNNJA2Sbd l3eUsesvqqjK4h1d5ITCh4s8y51op/PcFHqOo0tPYJ4QwDFClUufB6p4FmXD9nkPhtfO jARsYuF0scjt2n4Rt7mBeu2m/Fn1JBqeMVnAN2MKa9pOiIUttUW9owb5g8ztgAxpexOM IvEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8jpredQuPQQf0ushdz/KqU8uXVP1y5KeDEUfoi6lYsE=; b=XsBTZgsu/7ohoPGrk9YJKSa9mE2gIbGmv8SMr04U25vWkjIcy2ftM6Kta+z/0IawSQ gQGYZd353WmAh48hFrDPJKk4hU/oJ3BQgtFK+eleElIDy4yIcCRcsm7eTnbR92LUQpAt blM+EoRLdIVPPXOseSYh0FkjNavcT8nsEuCYxEKiuxx/5Vp6Sjx5n/jjwXhjs8P7V0HX 3jkSkQyhlh8MM8WaE6Msil3SpJw9RQ3AdkSnkw5udA9bxG8A0ButC/tSHbbscPMo+M6P QfkDLyxPfeLx5BuT677VnEr56Ib8isu9RbJZiKGcsg2NQbzqGJhk+2xBPveCyvaQsYht wKOQ== X-Gm-Message-State: AOAM5311eHEgo2mgNriUZ4kC7s9GM/A/SRyIZEYECvKkASO6ne43SJrm BG0y8/jMMMY+6GQJvjAVVhM= X-Google-Smtp-Source: ABdhPJwyzAX+7hBWSqlLElnnidBtm25uaCppa0yZNkClmQ1Nk0tzGBGubx6jaZXqIfJlqXEK7S21tQ== X-Received: by 2002:a17:90b:208:: with SMTP id fy8mr25544900pjb.171.1619697940956; Thu, 29 Apr 2021 05:05:40 -0700 (PDT) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com Subject: [RFC PATCH 04/27] virtio-snd: Add chmap control structures Date: Thu, 29 Apr 2021 17:34:22 +0530 Message-Id: <20210429120445.694420-5-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pl1-x62e.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Type: text/plain; charset="utf-8" Added structures for handling channel map control requests to the header file. Signed-off-by: Shreyansh Chouhan --- include/hw/virtio/virtio-snd.h | 64 ++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/include/hw/virtio/virtio-snd.h b/include/hw/virtio/virtio-snd.h index e9a4fe3c5d..ad068e5893 100644 --- a/include/hw/virtio/virtio-snd.h +++ b/include/hw/virtio/virtio-snd.h @@ -262,4 +262,68 @@ typedef struct virtio_snd_pcm_status { uint32_t latency_bytes; } virtio_snd_pcm_status; =20 +/* CHANNEL MAP CONTROL MESSAGES */ + +typedef struct virtio_snd_chmap_hdr { + /* .code =3D VIRTIO_SND_R_CHMAP_* */ + virtio_snd_hdr hdr; + /* 0 to (virtio_snd_config.chmaps - 1) */ + uint32_t chmap_id; +} virtio_snd_chmap_hdr; + +/* standard channel position definition */ +enum { + VIRTIO_SND_CHMAP_NONE =3D 0, /* undefined */ + VIRTIO_SND_CHMAP_NA, /* silent */ + VIRTIO_SND_CHMAP_MONO, /* mono stream */ + VIRTIO_SND_CHMAP_FL, /* front left */ + VIRTIO_SND_CHMAP_FR, /* front right */ + VIRTIO_SND_CHMAP_RL, /* rear left */ + VIRTIO_SND_CHMAP_RR, /* rear right */ + VIRTIO_SND_CHMAP_FC, /* front center */ + VIRTIO_SND_CHMAP_LFE, /* low frequency (LFE) */ + VIRTIO_SND_CHMAP_SL, /* side left */ + VIRTIO_SND_CHMAP_SR, /* side right */ + VIRTIO_SND_CHMAP_RC, /* rear center */ + VIRTIO_SND_CHMAP_FLC, /* front left center */ + VIRTIO_SND_CHMAP_FRC, /* front right center */ + VIRTIO_SND_CHMAP_RLC, /* rear left center */ + VIRTIO_SND_CHMAP_RRC, /* rear right center */ + VIRTIO_SND_CHMAP_FLW, /* front left wide */ + VIRTIO_SND_CHMAP_FRW, /* front right wide */ + VIRTIO_SND_CHMAP_FLH, /* front left high */ + VIRTIO_SND_CHMAP_FCH, /* front center high */ + VIRTIO_SND_CHMAP_FRH, /* front right high */ + VIRTIO_SND_CHMAP_TC, /* top center */ + VIRTIO_SND_CHMAP_TFL, /* top front left */ + VIRTIO_SND_CHMAP_TFR, /* top front right */ + VIRTIO_SND_CHMAP_TFC, /* top front center */ + VIRTIO_SND_CHMAP_TRL, /* top rear left */ + VIRTIO_SND_CHMAP_TRR, /* top rear right */ + VIRTIO_SND_CHMAP_TRC, /* top rear center */ + VIRTIO_SND_CHMAP_TFLC, /* top front left center */ + VIRTIO_SND_CHMAP_TFRC, /* top front right center */ + VIRTIO_SND_CHMAP_TSL, /* top side left */ + VIRTIO_SND_CHMAP_TSR, /* top side right */ + VIRTIO_SND_CHMAP_LLFE, /* left LFE */ + VIRTIO_SND_CHMAP_RLFE, /* right LFE */ + VIRTIO_SND_CHMAP_BC, /* bottom center */ + VIRTIO_SND_CHMAP_BLC, /* bottom left center */ + VIRTIO_SND_CHMAP_BRC /* bottom right center */ +}; + +/* maximum possible number of channels */ +#define VIRTIO_SND_CHMAP_MAX_SIZE 18 + +typedef struct virtio_snd_chmap_info { + /* common header */ + virtio_snd_info hdr; + /* direction */ + uint8_t direction; + /* # of valid channel position values */ + uint8_t channels; + /* channel position values (VIRTIO_SND_CHMAP_*) */ + uint8_t positions[VIRTIO_SND_CHMAP_MAX_SIZE]; +} virtio_snd_chmap_info; + #endif --=20 2.25.1 From nobody Mon Feb 9 01:00:57 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1644617876; cv=none; d=zohomail.com; s=zohoarc; b=icp47O7Lw0olYi9sKrGY3S0w6DTkDuQsbX+BAXHMNJlqyjihYPNx51mLHv3WQgHxf097p0akuoGZSdeMUJUxeJ+QlojS5JSjIL4pEWimWOlpuZo9JIyb9zRgi/sg7ZxhkXpkXD1835YFmfXgj2/DIfmG23KNzh1dZMBWTCGMeg8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644617876; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=gIll8pMOvyMS9++errpNJkPxw2IkRSBXP0IKFjAtLmw=; b=AfWRPscjy7q1sW7e3yYiB8ULVx3AfPFzb8BwkEQkLeYLwmKoNzxbuoJKD/Es8o0tUDODFoiVf/0Jxnk43u/NwKul+nyHwIMkgo318C2bUeDlATBELDk3gUfrmPgm+Qb521hE0pCs1wQ8F5n3e+XoxUPE1aaLijonjTOAEuT6D1g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1644617876895200.8372652351701; Fri, 11 Feb 2022 14:17:56 -0800 (PST) Received: from localhost ([::1]:38812 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nIeEl-0007YA-Qj for importer@patchew.org; Fri, 11 Feb 2022 17:17:55 -0500 Received: from eggs.gnu.org ([209.51.188.92]:41892) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIeBl-00050C-Hf for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:14:50 -0500 Received: from [2607:f8b0:4864:20::102e] (port=52141 helo=mail-pj1-x102e.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nIeBj-0002lW-Ky for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:14:49 -0500 Received: by mail-pj1-x102e.google.com with SMTP id y9so9281743pjf.1 for ; Fri, 11 Feb 2022 14:14:47 -0800 (PST) Received: from fedora.. ([2405:201:6008:6f15:d26f:133e:cd11:90dd]) by smtp.googlemail.com with ESMTPSA id j23sm20623576pgb.75.2022.02.11.14.14.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:14:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=gIll8pMOvyMS9++errpNJkPxw2IkRSBXP0IKFjAtLmw=; b=iIvES2BkTv6he1Oeqk7OKa8Vz3YNTbnVUi86KwDVOignEMg0Vtrc0ahHddHFVN+PVc A4oEwuBlNo8RT2juSz4PujDJF86gNjdsVcN2qg7kSSyLALUPSRAbEf3aAAhMc9dpaYoF AOJAKiCmj3bV3TYUBo3v0Q59w7ncc1L/fUZVFaIB7xWH811OZ9oGO3xs0Hz8g2qjR6Rt str7JJncMSfAPK24cO//0LXIK7QLucQyj95CqdeoF+unM0SMx/g54WOcjZW1EoHovHLp 0023ez1txQx0V37mcLkC1w9defNZtT7oUB+pvIf8AxouM5wxIptIMx8eeJ7ZrLHdUCf0 2pXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=gIll8pMOvyMS9++errpNJkPxw2IkRSBXP0IKFjAtLmw=; b=7rC089ziGj3IpjgdFH/Lpm460ivANMmv2GI1BwOW2MRrpwx1qku3r9RXD1THFwl6dH mOi085dxkkxwqSO/LqLujxgWTolAuXy/hYRCbAx/K2vT673PqYQ4kfdNh/Raoj2SkJuL 6VnGpYJfwjTjWCDiwyI1hg6nf8NLv1gN1vLrROKjt8juIC8Iun62zqOAWBUS5Tq0HITB uElQ+I6dLyfqqQLxK8Q6gjMmp1aX/lt50uA2NhiDX7423sAm+JQQ6EqbyQ0mli3+AKxz egCFXfsaAc3J/WNbHoLqlp4hFY9WDxWd6w+BPXuZjojATfPmTxHHQ6ykmrflOp3n38GQ dxVw== X-Gm-Message-State: AOAM530cQw/8nlutcqFZu+TBWhpA78xpIANWEAB2N5IYJOBvjp5JStRn +0WlCFHo71gI7d8U5HO3/Aw= X-Google-Smtp-Source: ABdhPJzOj8uGKs3W1e3bX+CTyUxtauXTzT2fpvpNN56rDgKSJrhSCuOb6Y4jot+c5DqcFx9j3gcMPw== X-Received: by 2002:a17:902:cf0c:: with SMTP id i12mr3548156plg.64.1644617686514; Fri, 11 Feb 2022 14:14:46 -0800 (PST) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com, laurent@vivier.eu Subject: [RFC PATCH 04/25] virtio-snd: Add chmap control structures Date: Sat, 12 Feb 2022 03:42:58 +0530 Message-Id: <20220211221319.193404-5-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::102e (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102e; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pj1-x102e.google.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1644617879090100005 Content-Type: text/plain; charset="utf-8" Added structures for handling channel map control requests to the header file. Signed-off-by: Shreyansh Chouhan --- include/hw/virtio/virtio-snd.h | 57 ++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/include/hw/virtio/virtio-snd.h b/include/hw/virtio/virtio-snd.h index a7828c4ab8..3c16609a25 100644 --- a/include/hw/virtio/virtio-snd.h +++ b/include/hw/virtio/virtio-snd.h @@ -257,4 +257,61 @@ typedef struct virtio_snd_pcm_status { uint32_t latency_bytes; } virtio_snd_pcm_status; =20 +/* CHANNEL MAP CONTROL MESSAGES */ + +/* standard channel position definition */ +enum { + VIRTIO_SND_CHMAP_NONE =3D 0, /* undefined */ + VIRTIO_SND_CHMAP_NA, /* silent */ + VIRTIO_SND_CHMAP_MONO, /* mono stream */ + VIRTIO_SND_CHMAP_FL, /* front left */ + VIRTIO_SND_CHMAP_FR, /* front right */ + VIRTIO_SND_CHMAP_RL, /* rear left */ + VIRTIO_SND_CHMAP_RR, /* rear right */ + VIRTIO_SND_CHMAP_FC, /* front center */ + VIRTIO_SND_CHMAP_LFE, /* low frequency (LFE) */ + VIRTIO_SND_CHMAP_SL, /* side left */ + VIRTIO_SND_CHMAP_SR, /* side right */ + VIRTIO_SND_CHMAP_RC, /* rear center */ + VIRTIO_SND_CHMAP_FLC, /* front left center */ + VIRTIO_SND_CHMAP_FRC, /* front right center */ + VIRTIO_SND_CHMAP_RLC, /* rear left center */ + VIRTIO_SND_CHMAP_RRC, /* rear right center */ + VIRTIO_SND_CHMAP_FLW, /* front left wide */ + VIRTIO_SND_CHMAP_FRW, /* front right wide */ + VIRTIO_SND_CHMAP_FLH, /* front left high */ + VIRTIO_SND_CHMAP_FCH, /* front center high */ + VIRTIO_SND_CHMAP_FRH, /* front right high */ + VIRTIO_SND_CHMAP_TC, /* top center */ + VIRTIO_SND_CHMAP_TFL, /* top front left */ + VIRTIO_SND_CHMAP_TFR, /* top front right */ + VIRTIO_SND_CHMAP_TFC, /* top front center */ + VIRTIO_SND_CHMAP_TRL, /* top rear left */ + VIRTIO_SND_CHMAP_TRR, /* top rear right */ + VIRTIO_SND_CHMAP_TRC, /* top rear center */ + VIRTIO_SND_CHMAP_TFLC, /* top front left center */ + VIRTIO_SND_CHMAP_TFRC, /* top front right center */ + VIRTIO_SND_CHMAP_TSL, /* top side left */ + VIRTIO_SND_CHMAP_TSR, /* top side right */ + VIRTIO_SND_CHMAP_LLFE, /* left LFE */ + VIRTIO_SND_CHMAP_RLFE, /* right LFE */ + VIRTIO_SND_CHMAP_BC, /* bottom center */ + VIRTIO_SND_CHMAP_BLC, /* bottom left center */ + VIRTIO_SND_CHMAP_BRC /* bottom right center */ +}; + +/* maximum possible number of channels */ +#define VIRTIO_SND_CHMAP_MAX_SIZE 18 + +typedef struct virtio_snd_chmap_info { + /* common header */ + virtio_snd_info hdr; + /* direction */ + uint8_t direction; + /* # of valid channel position values */ + uint8_t channels; + /* channel position values (VIRTIO_SND_CHMAP_*) */ + uint8_t positions[VIRTIO_SND_CHMAP_MAX_SIZE]; +} virtio_snd_chmap_info; + #endif --=20 2.31.1 From nobody Mon Feb 9 01:00:57 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1644618107; cv=none; d=zohomail.com; s=zohoarc; b=Fysv47+C6YBt3YdL/+QQ+IqN/H6hqsbaFQQOYAYk6DOI3FgOEmyj0utSoqTVeJuIYStnIAX+P+5H51RBM64OautI9g5JE2TUvuQKhv2xRNQyoOQRHvhv/CdmojK0tr3fqpqlrkDJm8KVpJn/F29w6RJju5zb8plvzDLbcoUAIKk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644618107; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=WWOGkVLVwAb/2x/bKAHDTmTkcbyoqFPfG2HRBJD6ZGo=; b=ULT5UvKnOX1tYql+KNQwC/6e2xQcADxtdI1egPZb16/jWuq7lPBTGFLr3xLFSWgM7kogDQGA3NjMLvhtTVbvF0idJMbHDay3SS8dIzbstaBfE+nAawHCqjQImLGm0d/CMZrzywmn0sLlFo4OtSeAe5BZk74IMY4GmHYIwIk/wLM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1644618107757498.69670976783107; Fri, 11 Feb 2022 14:21:47 -0800 (PST) Received: from localhost ([::1]:47440 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nIeIU-00055y-Ny for importer@patchew.org; Fri, 11 Feb 2022 17:21:46 -0500 Received: from eggs.gnu.org ([209.51.188.92]:41912) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIeBw-00053G-GX for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:15:00 -0500 Received: from [2607:f8b0:4864:20::42a] (port=37547 helo=mail-pf1-x42a.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nIeBu-0002mD-0W for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:15:00 -0500 Received: by mail-pf1-x42a.google.com with SMTP id y5so18599119pfe.4 for ; Fri, 11 Feb 2022 14:14:57 -0800 (PST) Received: from fedora.. ([2405:201:6008:6f15:d26f:133e:cd11:90dd]) by smtp.googlemail.com with ESMTPSA id j23sm20623576pgb.75.2022.02.11.14.14.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:14:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=WWOGkVLVwAb/2x/bKAHDTmTkcbyoqFPfG2HRBJD6ZGo=; b=kXZD8lnVKfq3oV+I1flNqIKd/yal8d9b3u0TB57xnVeNUbCnZNllly1LX+fIWtdnlr m5GMTajnul+k9E7SEb5IScJiDe4LFiZNUjgIonBnSzX7jTDFn1ZmnOkm704l0lh+d9fa qCm9/LFNLHtquTyjpUsBBZn2bfhzbMPUAFRVn6kGBe3SnLgifwPger+wIPo2trrQoTuH 4ebUfeBYO0tovci5vzXqiImQxIXGCPyzesgYUJMxz1qfVkqyz2uQJuTTe1cyTwrvqa7y BBmtacQcaiXaGrHWFCAOD9L3N5vtcVo3sq8etdWKRYf9nLpANsCYhSISdyRgcMq3SXK5 fNSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=WWOGkVLVwAb/2x/bKAHDTmTkcbyoqFPfG2HRBJD6ZGo=; b=ORX8hGrhnbCM0nNPQlhid7VYB6e6McaIlPMQ4QXSDPIcBo/w6dTCiMKn7wMhEXLu1Y yRzgeYKk4hFKzRozKDlMCrHrWfm8XQZvSsVZaoVyGubklGasOqo86Pfqc02iniEcwHI4 GbwGk6oK/Q23enE6I1toOML1qcP1L9+Me5xB0ZgVmPtc2wtiS/OHc/E+XeKz803jdhXP hyNR87nyxhwEjpWSZBNCqFQvnm0q4IkxJF0jLZ+6A4hI7mc9AfzaOpggQDn4md9D7SKv EFo5uDGfAi1vlXG6p9yYSuszusorI5ESXtiNvfPA1EntAST+2QrPs70UKXKVVEw1/D+h tAxA== X-Gm-Message-State: AOAM532/88kLEMcKOhIxjMdXgpO+uVOipbx+Ax2Y4bE4zLrEz4qXTbfZ o2vnZ69HRkbrOX1JpNCgxQ4= X-Google-Smtp-Source: ABdhPJxANWaastschMSEZMi869/9iSf4JytMjIGbxVFYVpusMvLl/FtB05CInw496jhxFZ86TDKThw== X-Received: by 2002:a63:7103:: with SMTP id m3mr2977709pgc.501.1644617696719; Fri, 11 Feb 2022 14:14:56 -0800 (PST) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com, laurent@vivier.eu Subject: [RFC PATCH 05/25] virtio-snd: Add device implementation structures Date: Sat, 12 Feb 2022 03:42:59 +0530 Message-Id: <20220211221319.193404-6-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::42a (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42a; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pf1-x42a.google.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1644618109323100003 Content-Type: text/plain; charset="utf-8" Added jacks, pcm streams and the VirtIOSound structure for actual device implementation. Signed-off-by: Shreyansh Chouhan --- include/hw/virtio/virtio-snd.h | 66 ++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/include/hw/virtio/virtio-snd.h b/include/hw/virtio/virtio-snd.h index 3c16609a25..4d800a9626 100644 --- a/include/hw/virtio/virtio-snd.h +++ b/include/hw/virtio/virtio-snd.h @@ -13,6 +13,9 @@ =20 #define VIRTIO_ID_SOUND 25 =20 +#define TYPE_VIRTIO_SOUND "virtio-sound-device" +OBJECT_DECLARE_SIMPLE_TYPE(VirtIOSound, VIRTIO_SOUND) + /* CONFIGURATION SPACE */ =20 typedef struct virtio_snd_config { @@ -314,4 +317,67 @@ typedef struct virtio_snd_chmap_info { uint8_t positions[VIRTIO_SND_CHMAP_MAX_SIZE]; } virtio_snd_chmap_info; =20 +/* VIRTIO SOUND DEVICE */ + +/* Jacks */ +typedef struct virtio_snd_jack { + uint32_t features; /* 1 << VIRTIO_SND_JACK_F_XXX */ + uint32_t hda_fn_nid; + uint32_t hda_reg_defconf; + uint32_t hda_reg_caps; + uint8_t connected; +} virtio_snd_jack; + +/* Streams */ +typedef struct virtio_snd_pcm_stream { + uint32_t hda_fn_nid; + uint32_t buffer_bytes; + uint32_t period_bytes; + uint32_t features; /* 1 << VIRTIO_SND_PCM_F_XXX */ + uint32_t flags; /* 1 << VIRTIO_SND_PCM_FL_XXX */ + uint32_t direction; + uint8_t channels_min; + uint8_t channels_max; + uint64_t formats; /* 1 << VIRTIO_SND_PCM_FMT_XXX */ + uint64_t rates; /* 1 << VIRTIO_SND_PCM_RATE_XXX */ + uint32_t r_pos, w_pos; + bool flushing; + uint8_t chmap[VIRTIO_SND_CHMAP_MAX_SIZE]; + VirtQueueElement **elems; + VirtIOSound *s; + union { + SWVoiceIn *in; + SWVoiceOut *out; + } voice; +} virtio_snd_pcm_stream; + +/* Stream params */ +typedef struct virtio_snd_pcm_params { + uint32_t features; + uint32_t buffer_bytes; /* size of hardware buffer in bytes */ + uint32_t period_bytes; /* size of hardware period in bytes */ + uint8_t channel; + uint8_t format; + uint8_t rate; +} virtio_snd_pcm_params; + +/* Sound device */ +struct VirtIOSound { + /* Parent VirtIODevice object */ + VirtIODevice parent_obj; + virtio_snd_config snd_conf; + + VirtQueue *ctrl_vq; + VirtQueue *event_vq; + VirtQueue *tx_vq; + VirtQueue *rx_vq; + + QEMUSoundCard card; + size_t config_size; + + virtio_snd_pcm_params **pcm_params; + virtio_snd_pcm_stream **streams; + virtio_snd_jack **jacks; +}; + #endif --=20 2.31.1 From nobody Mon Feb 9 01:00:57 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1619698157; cv=none; d=zohomail.com; s=zohoarc; b=dmWpLcYUMOJhMurMwIiOLnlV6/zEAbtT+g+Srd8ardTXYkvWvIwLIvp/CBjMChJTJQp1vtUxMzMA4rH4w9PjRvjVlzygTUtoqsdOzDvxO+yaopmMaXHp98ikI9DT5xtb4KKFbzVlwr76ypTQuOKqj/6+YhTCETB14MkjOxu6Tjw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619698157; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=5FN9nObvndtv5C0B9m9+OAOTZ/gkBQLmV++IRQOVVsM=; b=RkOOM00dPqTkbMF9hjwVkL/0qH0QgGmsFuHyJ8pMswD7lghgmh85VqhyIJjyA5k+zJzt5iANVYp2MeYoEY1PIICsUqmuzLRLwuBiSlD9JnsxezPPzBoyR4UbPsCWW0+a9x5BC2/LHcQ0dcW+wTFFipgHzrvrEOa6HYVB7jZbVgg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16196981573311015.21576250524; Thu, 29 Apr 2021 05:09:17 -0700 (PDT) Received: from localhost ([::1]:34762 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lc5Tn-00010j-Q9 for importer@patchew.org; Thu, 29 Apr 2021 08:09:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39320) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lc5QQ-0007j3-Qp for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:05:46 -0400 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]:54042) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lc5QO-0000Na-UW for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:05:46 -0400 Received: by mail-pj1-x1036.google.com with SMTP id p17so6598594pjz.3 for ; Thu, 29 Apr 2021 05:05:44 -0700 (PDT) Received: from localhost.localdomain ([2405:201:6008:61b4:c0b1:be0f:608e:9a45]) by smtp.gmail.com with ESMTPSA id p6sm713643pjg.35.2021.04.29.05.05.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Apr 2021 05:05:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5FN9nObvndtv5C0B9m9+OAOTZ/gkBQLmV++IRQOVVsM=; b=Ce9N6E+srgeWBT4FXw858v17uyfXkHWwgiCQa9d3yREc6ShaxD1VHs1dNC9fdiHekG kSzBojuuIXouQF/yhZG/0mpzpTduVwtVwp6h8o53TepA7HU2emrkCb3/QyVAoMabOHYr OVZ9qFlEg2Alc/1c6i5C5ftiMkZvEndGB2KlKE4VvNTyiz/FPMCsXJwR5AQjSgUX6Gbd 5v7dW32oA1kugu5RpfiG6vBsxnyeE7t55reKcQdy/UK2wldzNDp3wqeG4PCzQo1VfCvj jKppT26YUOOPjcKeihG49gzKpvDlxwWS0Hj74JLNdzKnpKvd1wWiP7YqVTGMCmt9gV3l jpTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5FN9nObvndtv5C0B9m9+OAOTZ/gkBQLmV++IRQOVVsM=; b=om6lehWWUKa/R7eMsMKvcc5LKjLLFOzhCqkRZDhAcJnAeg855i72O57mtGK1VCKQ7T ZZNhwFuPXUZ8Yagu2+zPKA51o0h5xe2enXYdZKPxtv38Uav0EfSyk/fo8f6P1yRFeBkK OYY0r3AtGdmaxFz7ZZZ9EJ4SEomuWbRfc7G983UCOAe4eUWL0tA89JQ/+9Ik7Au7XR1E oaMVAzF/96/p5XyD/rLbhZimqYwqRTAiZtninQvdJaGVAMv708D6Q/klmp+G/yvX7qTb j2/QWYpbFeM/QrjQ+dqgN0J7gjhPqrbfMJVfUlAPQDvTx7xUpUC8L2a9lxLYzdnCnA/3 zPTg== X-Gm-Message-State: AOAM532YDt533vKnCSyUp2IfQ0Gokhx8VZRI7s/At250Fy7/SWj5bqje +8n1tGyeexcGBiMYrgNjmvE= X-Google-Smtp-Source: ABdhPJx/cYhq5X34QePoyoyqpJG1jqYuxrmbbKsJYPePspGY4Z7IW7LD2pQ3OXn7FGp9/h5mnzhr8g== X-Received: by 2002:a17:90a:8e82:: with SMTP id f2mr9082194pjo.146.1619697943698; Thu, 29 Apr 2021 05:05:43 -0700 (PDT) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com Subject: [RFC PATCH 05/27] virtio-snd: Add device implementation structures Date: Thu, 29 Apr 2021 17:34:23 +0530 Message-Id: <20210429120445.694420-6-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pj1-x1036.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Type: text/plain; charset="utf-8" Added jacks, pcm streams and the VirtIOSound structure for actual device implementation. Signed-off-by: Shreyansh Chouhan --- include/hw/virtio/virtio-snd.h | 64 ++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/include/hw/virtio/virtio-snd.h b/include/hw/virtio/virtio-snd.h index ad068e5893..6ab131db50 100644 --- a/include/hw/virtio/virtio-snd.h +++ b/include/hw/virtio/virtio-snd.h @@ -13,6 +13,9 @@ =20 #define VIRTIO_ID_SOUND 25 =20 +#define TYPE_VIRTIO_SOUND "virtio-sound-device" +OBJECT_DECLARE_SIMPLE_TYPE(VirtIOSound, VIRTIO_SOUND) + /* CONFIGURATION SPACE */ =20 typedef struct virtio_snd_config { @@ -326,4 +329,65 @@ typedef struct virtio_snd_chmap_info { uint8_t positions[VIRTIO_SND_CHMAP_MAX_SIZE]; } virtio_snd_chmap_info; =20 +/* VIRTIO SOUND DEVICE */ + +/* Jacks */ +typedef struct virtio_snd_jack { + uint32_t features; /* 1 << VIRTIO_SND_JACK_F_XXX */ + uint32_t hda_fn_nid; + uint32_t hda_reg_defconf; + uint32_t hda_reg_caps; + uint8_t connected; +} virtio_snd_jack; + +/* Streams */ +typedef struct virtio_snd_pcm_stream { + uint32_t hda_fn_nid; + uint32_t buffer_bytes; + uint32_t period_bytes; + uint32_t features; /* 1 << VIRTIO_SND_PCM_F_XXX */ + uint32_t flags; /* 1 << VIRTIO_SND_PCM_FL_XXX */ + uint32_t direction; + uint8_t channels_min; + uint8_t channels_max; + uint64_t formats; /* 1 << VIRTIO_SND_PCM_FMT_XXX */ + uint64_t rates; /* 1 << VIRTIO_SND_PCM_RATE_XXX */ + int tail, r_pos, w_pos; + VirtQueueElement **elems; + VirtIOSound *s; + union { + SWVoiceIn *in; + SWVoiceOut *out; + } voice; +} virtio_snd_pcm_stream; + +/* Stream params */ +typedef struct virtio_snd_pcm_params { + uint32_t features; + uint32_t buffer_bytes; /* size of hardware buffer in bytes */ + uint32_t period_bytes; /* size of hardware period in bytes */ + uint8_t channel; + uint8_t format; + uint8_t rate; +} virtio_snd_pcm_params; + +/* Sound device */ +struct VirtIOSound { + /* Parent VirtIODevice object */ + VirtIODevice parent_obj; + virtio_snd_config snd_conf; + + VirtQueue *ctrl_vq; + VirtQueue *event_vq; + VirtQueue *tx_vq; + VirtQueue *rx_vq; + + QEMUSoundCard card; + size_t config_size; + + virtio_snd_pcm_params **pcm_params; + virtio_snd_pcm_stream **streams; + virtio_snd_jack **jacks; +}; + #endif --=20 2.25.1 From nobody Mon Feb 9 01:00:57 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1644618372; cv=none; d=zohomail.com; s=zohoarc; b=PZhyVpa4a6qoJMc7P8mNmFjeDczCZ7QF+JhBm0oKA2l8FKI/wb37rr62mNOgSCA61o6z66MCyDg9WJ4Aq6inXp+HMAfTCbLky9gbpcs3WWwsZBvbzpLfWj3g1oXV2zrws7Eyw9AgpFXcRW8R2TUqc0tJBezcYC6yF/Ye4GiyEqA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644618372; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=aGClOHN7GG+aZ6hxDiFXoXxNY0G3eZiRVwIAS9Xw/V4=; b=KI1GiI2kfyOuNUbZg1f2dX55ISPwxyggrjLxw+nAK8rtI4oltSAa3Hrb0tT+xo6C78aIhKLnlymkWawjty5wFAVD2OmpE4ncuej6tMRdTATj95AAKOuRZdKn9RmXE32Gdv8eHFp3GuRiIOW6+fyLj/Xgvy23DuUJj+IRnfOlPDo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 164461837252919.39132628877269; Fri, 11 Feb 2022 14:26:12 -0800 (PST) Received: from localhost ([::1]:55628 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nIeMl-0002Dn-4C for importer@patchew.org; Fri, 11 Feb 2022 17:26:11 -0500 Received: from eggs.gnu.org ([209.51.188.92]:41966) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIeC2-00059f-9G for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:15:06 -0500 Received: from [2607:f8b0:4864:20::634] (port=40944 helo=mail-pl1-x634.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nIeC0-0002qy-A4 for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:15:05 -0500 Received: by mail-pl1-x634.google.com with SMTP id y17so5737839plg.7 for ; Fri, 11 Feb 2022 14:15:03 -0800 (PST) Received: from fedora.. ([2405:201:6008:6f15:d26f:133e:cd11:90dd]) by smtp.googlemail.com with ESMTPSA id j23sm20623576pgb.75.2022.02.11.14.14.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:15:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=aGClOHN7GG+aZ6hxDiFXoXxNY0G3eZiRVwIAS9Xw/V4=; b=AQbbcwemFY6b4SJb4um9B+5UYVWnAdhCmZrgLfMDP07m3dDnIb8XKi8qsCUSMrsGSq FSgpF/B46C/ZDClxfUaQopDxQ7H6ZVq0TgiQDhHB+zDfylknngnVKN0BjR4FVyXsgCG5 1KvrYDUlbeonJLg7uHi5v2f9TJkZTGURlE4V+zPchPFHpJsS4ZJ4fpvFudbyZLfa4w65 lPdnTTi1rJLgx84ljvk8m+/vrobFZs8U6W9MvnJdKFG2wMaX6Bo877pjiVuOjglJ6Apo CEYSvXhBpHolvmSnfSL42tIexd5eQ1Krz5QBNowJfGbjNISn5knX448hTrV9Wfto06q2 1sSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=aGClOHN7GG+aZ6hxDiFXoXxNY0G3eZiRVwIAS9Xw/V4=; b=IAIBGTKTeXGiI8/+7xa10eSvpPPGU1H/25XqvAaVG1v3VCa5begHQ+6VLpAH1SwVwO Vwr75ZIIqh12nwaxZAYM1RI8ejjBdxFPlcWoWlhKN/ut3nfhEbLVZY6JOZm/avuGJNT0 jWhc6+f1JdahXTsNeGKoLgapY84zFTA2L1kyYh108QFH7fTUlBl9iVBeKizzEZoRHL2s GRgi6ioalIckvRAcN6E197apXE/hO2IjMn0Xvr4aTXuUA/plwJfpNb0iXHbHzhK2qy18 hibraCzry7F7gQsRsuzPLyFrkO/dk9EOfa2CfZIws+AZZCw3136zrCti4P2EQ2WsxEhw ntOA== X-Gm-Message-State: AOAM532kjHjB9d0jCleaoYHOCubvcPTxaFotk3KhL0taQ2pSg0uraEpX YQwjUS3GduM5frLu9kxD43s= X-Google-Smtp-Source: ABdhPJxOX+CfgpuIXMquAdI7MbOZFqMyTJBP+Q3akV4FxoVJPi3et++6kF/1uKZYoR/aA7qmVYJEKQ== X-Received: by 2002:a17:90a:1a54:: with SMTP id 20mr2500254pjl.232.1644617703021; Fri, 11 Feb 2022 14:15:03 -0800 (PST) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com, laurent@vivier.eu Subject: [RFC PATCH 06/25] virtio-snd: Add PCI wrapper code for VirtIOSound Date: Sat, 12 Feb 2022 03:43:00 +0530 Message-Id: <20220211221319.193404-7-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::634 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pl1-x634.google.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1644618373343100001 Content-Type: text/plain; charset="utf-8" Added the virito-snd.c file which contains a wrapper for combining the device with the VirtIOPCIProxy. Signed-off-by: Shreyansh Chouhan --- hw/virtio/meson.build | 1 + hw/virtio/virtio-snd-pci.c | 72 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 hw/virtio/virtio-snd-pci.c diff --git a/hw/virtio/meson.build b/hw/virtio/meson.build index 521f7d64a8..86d6594c20 100644 --- a/hw/virtio/meson.build +++ b/hw/virtio/meson.build @@ -49,6 +49,7 @@ virtio_pci_ss.add(when: 'CONFIG_VIRTIO_SERIAL', if_true: = files('virtio-serial-pc virtio_pci_ss.add(when: 'CONFIG_VIRTIO_PMEM', if_true: files('virtio-pmem-= pci.c')) virtio_pci_ss.add(when: 'CONFIG_VIRTIO_IOMMU', if_true: files('virtio-iomm= u-pci.c')) virtio_pci_ss.add(when: 'CONFIG_VIRTIO_MEM', if_true: files('virtio-mem-pc= i.c')) +virtio_pci_ss.add(when: 'CONFIG_VIRTIO_SND', if_true: files('virtio-snd-pc= i.c')) =20 virtio_ss.add_all(when: 'CONFIG_VIRTIO_PCI', if_true: virtio_pci_ss) =20 diff --git a/hw/virtio/virtio-snd-pci.c b/hw/virtio/virtio-snd-pci.c new file mode 100644 index 0000000000..8d8e4ffa51 --- /dev/null +++ b/hw/virtio/virtio-snd-pci.c @@ -0,0 +1,72 @@ +/* + * Virtio sound PCI Bindings + */ + +#include "qemu/osdep.h" +#include "hw/virtio/virtio-snd.h" +#include "hw/virtio/virtio-pci.h" +#include "qapi/error.h" +#include "qemu/module.h" +#include "qom/object.h" + +typedef struct VirtIOSoundPCI VirtIOSoundPCI; + +/* + * virtio-snd-pci: This extends VirtioPCIProxy. + */ +#define TYPE_VIRTIO_SOUND_PCI "virtio-sound-pci-base" +DECLARE_INSTANCE_CHECKER(VirtIOSoundPCI, VIRTIO_SOUND_PCI, + TYPE_VIRTIO_SOUND_PCI) + +struct VirtIOSoundPCI { + VirtIOPCIProxy parent_obj; + VirtIOSound vdev; +}; + +static Property virtio_sound_properties[] =3D { + DEFINE_PROP_BIT("ioeventfd", VirtIOPCIProxy, flags, + VIRTIO_PCI_FLAG_USE_IOEVENTFD_BIT, true), + DEFINE_PROP_END_OF_LIST(), +}; + +static void virtio_snd_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp) +{ + VirtIOSoundPCI *dev =3D VIRTIO_SOUND_PCI(vpci_dev); + DeviceState *vdev =3D DEVICE(&dev->vdev); + + qdev_realize(vdev, BUS(&vpci_dev->bus), errp); +} + +static void virtio_snd_pci_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + PCIDeviceClass *k =3D PCI_DEVICE_CLASS(klass); + VirtioPCIClass *vpciklass =3D VIRTIO_PCI_CLASS(klass); + + k->class_id =3D PCI_CLASS_MULTIMEDIA_AUDIO; + set_bit(DEVICE_CATEGORY_SOUND, dc->categories); + device_class_set_props(dc, virtio_sound_properties); + vpciklass->realize =3D virtio_snd_pci_realize; +} + +static void virtio_snd_pci_instance_init(Object *obj) +{ + VirtIOSoundPCI *dev =3D VIRTIO_SOUND_PCI(obj); + virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), + TYPE_VIRTIO_SOUND); +} + +static const VirtioPCIDeviceTypeInfo virtio_snd_pci_info =3D { + .base_name =3D TYPE_VIRTIO_SOUND_PCI, + .generic_name =3D "virtio-snd-pci", + .instance_size =3D sizeof(VirtIOSoundPCI), + .instance_init =3D virtio_snd_pci_instance_init, + .class_init =3D virtio_snd_pci_class_init, +}; + +static void virtio_snd_pci_register(void) +{ + virtio_pci_types_register(&virtio_snd_pci_info); +} + +type_init(virtio_snd_pci_register); --=20 2.31.1 From nobody Mon Feb 9 01:00:57 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1619698443; cv=none; d=zohomail.com; s=zohoarc; b=NDDftb1DdumRevJnD2S2iqezJ4EaWcJ9S57mXIjlah4pTz7htImcN+wdVzeW4UAqZUvlJjXESDatLuNM19dqIu+qoqz2PpuBZMp6GpV6VRKWpmNqzC/7JfTLhAbhsZFwgry/fXOl2VcjiLIiKPwVRXWQAFAFLvhDETFXoYLWikk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619698443; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=q8CG3MTdO9ZS49CdlyZtKiyCmiwxPeoJ30Onwv+zoQs=; b=VeHBOfLmo5YE5zu0t4GTgc2IJsHwoNznSA3zOYRc7r8o8R8XDD1hIJD6Lnus91g4hidnx0hr587W/HxfKQI9olHTZ6vjxZmYLerPQ1ypWY1TvFAINmQwtt6DeD9yOygchRA4EmPV3usaAmkoTRMYSlJU+1fCuSxNiKhu36Ve7KU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619698443260828.190733676096; Thu, 29 Apr 2021 05:14:03 -0700 (PDT) Received: from localhost ([::1]:43308 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lc5YQ-0004dJ-5U for importer@patchew.org; Thu, 29 Apr 2021 08:14:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39366) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lc5QX-0007ml-Ts for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:05:54 -0400 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]:34362) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lc5QR-0000QG-Ah for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:05:53 -0400 Received: by mail-pf1-x42f.google.com with SMTP id 10so3396275pfl.1 for ; Thu, 29 Apr 2021 05:05:46 -0700 (PDT) Received: from localhost.localdomain ([2405:201:6008:61b4:c0b1:be0f:608e:9a45]) by smtp.gmail.com with ESMTPSA id p6sm713643pjg.35.2021.04.29.05.05.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Apr 2021 05:05:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=q8CG3MTdO9ZS49CdlyZtKiyCmiwxPeoJ30Onwv+zoQs=; b=FHe0ARuDhEckZVSdL49r+pbP3MP+NlU91HUcfWEoIdPBEHN7sOYoz6PD88sE7Q9Jys VBjFblY0mnryoJmLg0lOOMp2+wKD2xV21VdWnZZTckDTR4Pwcjye9tlLyE+ZUNWpe9Oq 1BJWASdoQ2nRJta6ZQV20tbs3y5PjvFH6I4nAHqKJ0EI34/DEr2UbL0Zs2A1bc+wBFcQ EUmRoU707odW+4WJVM7Qckue6tfZ+LGslmiOkJW+v9z/ELMZ0sBbfFvTJeSNqDw8leOd KK74SbA9xQJoqXIp6D2excOaNcygbBjt7DGDmCZc0s7TevwTkIt2+Q6wDiuD0bAVPBm2 y5Bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=q8CG3MTdO9ZS49CdlyZtKiyCmiwxPeoJ30Onwv+zoQs=; b=H4A67rFEDNjzQlo/K9sIf17JN5isLyxeOkF0LT+lVmQ/uLx+6r+22ijtaARkuYPl0z aUZUNBBkY7vcztaDitoYz8CEpsQRUgzZCcok0l9oBJKpQQO2dwMamrKyNqpov+vQud0w 4Wp99QvAUthtSpiHryKMVJX5YCPFIIbZcUrl3cD6HhWkGiRsIsSms0IiAejfzEt106Vd RMGpaieaX+Gt33sQ5HXrF5lwC0nIdUaIp8pc4V0KWpX1EBIa71soeQonAcYJdLyu4Wje Ji+shLVuCXS9+WEjp72fyuA+SXKUpTXtmbEMHBlYAfV1CU5z92AkaUQkrgpT+lRjL6DK PiOQ== X-Gm-Message-State: AOAM532UrOHb0M5OGzKpcsUlKMeliR4cO7Sm+mIgSUPBpwbVYE/2sWmE YpbBli7v/ohGKp52fosiXKw= X-Google-Smtp-Source: ABdhPJxIUuWkrqJB5DYEMYHGQPMGtL/y6yhi9gltXsFaw190mJok5GcEvoK2TuUsaaSzJ8g+nPREDA== X-Received: by 2002:a63:5562:: with SMTP id f34mr31964247pgm.391.1619697945950; Thu, 29 Apr 2021 05:05:45 -0700 (PDT) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com Subject: [RFC PATCH 06/27] virtio-snd: Add PCI wrapper code for VirtIOSound Date: Thu, 29 Apr 2021 17:34:24 +0530 Message-Id: <20210429120445.694420-7-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42f; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pf1-x42f.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Type: text/plain; charset="utf-8" Added the virito-snd.c file which contains a wrapper for combining the device with the VirtIOPCIProxy. Signed-off-by: Shreyansh Chouhan --- hw/virtio/meson.build | 1 + hw/virtio/virtio-snd-pci.c | 72 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 hw/virtio/virtio-snd-pci.c diff --git a/hw/virtio/meson.build b/hw/virtio/meson.build index fbff9bc9d4..a4593f7631 100644 --- a/hw/virtio/meson.build +++ b/hw/virtio/meson.build @@ -45,6 +45,7 @@ virtio_pci_ss.add(when: 'CONFIG_VIRTIO_SERIAL', if_true: = files('virtio-serial-pc virtio_pci_ss.add(when: 'CONFIG_VIRTIO_PMEM', if_true: files('virtio-pmem-= pci.c')) virtio_pci_ss.add(when: 'CONFIG_VIRTIO_IOMMU', if_true: files('virtio-iomm= u-pci.c')) virtio_pci_ss.add(when: 'CONFIG_VIRTIO_MEM', if_true: files('virtio-mem-pc= i.c')) +virtio_pci_ss.add(when: 'CONFIG_VIRTIO_SND', if_true: files('virtio-snd-pc= i.c')) =20 virtio_ss.add_all(when: 'CONFIG_VIRTIO_PCI', if_true: virtio_pci_ss) =20 diff --git a/hw/virtio/virtio-snd-pci.c b/hw/virtio/virtio-snd-pci.c new file mode 100644 index 0000000000..8d8e4ffa51 --- /dev/null +++ b/hw/virtio/virtio-snd-pci.c @@ -0,0 +1,72 @@ +/* + * Virtio sound PCI Bindings + */ + +#include "qemu/osdep.h" +#include "hw/virtio/virtio-snd.h" +#include "hw/virtio/virtio-pci.h" +#include "qapi/error.h" +#include "qemu/module.h" +#include "qom/object.h" + +typedef struct VirtIOSoundPCI VirtIOSoundPCI; + +/* + * virtio-snd-pci: This extends VirtioPCIProxy. + */ +#define TYPE_VIRTIO_SOUND_PCI "virtio-sound-pci-base" +DECLARE_INSTANCE_CHECKER(VirtIOSoundPCI, VIRTIO_SOUND_PCI, + TYPE_VIRTIO_SOUND_PCI) + +struct VirtIOSoundPCI { + VirtIOPCIProxy parent_obj; + VirtIOSound vdev; +}; + +static Property virtio_sound_properties[] =3D { + DEFINE_PROP_BIT("ioeventfd", VirtIOPCIProxy, flags, + VIRTIO_PCI_FLAG_USE_IOEVENTFD_BIT, true), + DEFINE_PROP_END_OF_LIST(), +}; + +static void virtio_snd_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp) +{ + VirtIOSoundPCI *dev =3D VIRTIO_SOUND_PCI(vpci_dev); + DeviceState *vdev =3D DEVICE(&dev->vdev); + + qdev_realize(vdev, BUS(&vpci_dev->bus), errp); +} + +static void virtio_snd_pci_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + PCIDeviceClass *k =3D PCI_DEVICE_CLASS(klass); + VirtioPCIClass *vpciklass =3D VIRTIO_PCI_CLASS(klass); + + k->class_id =3D PCI_CLASS_MULTIMEDIA_AUDIO; + set_bit(DEVICE_CATEGORY_SOUND, dc->categories); + device_class_set_props(dc, virtio_sound_properties); + vpciklass->realize =3D virtio_snd_pci_realize; +} + +static void virtio_snd_pci_instance_init(Object *obj) +{ + VirtIOSoundPCI *dev =3D VIRTIO_SOUND_PCI(obj); + virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), + TYPE_VIRTIO_SOUND); +} + +static const VirtioPCIDeviceTypeInfo virtio_snd_pci_info =3D { + .base_name =3D TYPE_VIRTIO_SOUND_PCI, + .generic_name =3D "virtio-snd-pci", + .instance_size =3D sizeof(VirtIOSoundPCI), + .instance_init =3D virtio_snd_pci_instance_init, + .class_init =3D virtio_snd_pci_class_init, +}; + +static void virtio_snd_pci_register(void) +{ + virtio_pci_types_register(&virtio_snd_pci_info); +} + +type_init(virtio_snd_pci_register); --=20 2.25.1 From nobody Mon Feb 9 01:00:57 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1644617889; cv=none; d=zohomail.com; s=zohoarc; b=InvuSXhOsQdcneU5sYN8y6opUlfld+NcWvvTaNF6yiyHYzLwJr/JTh1r1tBAbLrsF13KP7pvo74tf/uz1pB2fOpbmFx0wb5TXMLteikwOldj1vfl8YAEra5m6APpsdI7ltierNBgode5odwDrLJq0UuinrHB+0xmldHb+jqF9lQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644617889; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=v8lkpVJ8/lzhpZJxqdi8AMFNoo2dfjQmQL3y2LfyCdI=; b=D7seYk7yGmO45wLEibM1hvms/WdwJIOlNqHGCsWxG+fPjIFpK2SbIKEQ/lt9kHuKvY/imWG+51RSJwqOuUau7afWzuaI5HJ2+PtEkZaMNUZ/xyAqyF6OuchCLO5xzGSLWoK5K/qhMiINOwq/arSpl4s6pdqdeWoXwmpX8mIicSY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1644617889232549.073633385861; Fri, 11 Feb 2022 14:18:09 -0800 (PST) Received: from localhost ([::1]:39984 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nIeEy-0008U2-2D for importer@patchew.org; Fri, 11 Feb 2022 17:18:08 -0500 Received: from eggs.gnu.org ([209.51.188.92]:42054) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIeCC-0005T3-UV for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:15:16 -0500 Received: from [2607:f8b0:4864:20::42e] (port=38493 helo=mail-pf1-x42e.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nIeC9-0002zJ-RG for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:15:16 -0500 Received: by mail-pf1-x42e.google.com with SMTP id x15so16185121pfr.5 for ; Fri, 11 Feb 2022 14:15:13 -0800 (PST) Received: from fedora.. ([2405:201:6008:6f15:d26f:133e:cd11:90dd]) by smtp.googlemail.com with ESMTPSA id j23sm20623576pgb.75.2022.02.11.14.15.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:15:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=v8lkpVJ8/lzhpZJxqdi8AMFNoo2dfjQmQL3y2LfyCdI=; b=M/4aLzF7gW6VaGsrb9lvfFCGmyvm49HLIc2ysvG0Qlqra/PGydrx4Jh55m/qeqEYBJ 7d5qkGxqLEHMct60YUricyKY2ebPDtBP0kwJX1LXtgEiVRUHIJEWtO2OIO/GX74t6yC6 LqH2phiVWBHe5mzZl4crYs9bClfHxzLpZVPvHcDI7XIcXnw70vVqP28A5jDRbO3FchWe BV579I7s3tBQgAaK2nZLlxhuq7ncp4TNxo0F588N40e24dxOuzeJD9grcJgFeuHjX28T FyCQvLVUYt4dToM/xIYr2RJiDRjY3+THx4rNs4JRPrK1hAhY55foRBz292svhjC/MUdC K48A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=v8lkpVJ8/lzhpZJxqdi8AMFNoo2dfjQmQL3y2LfyCdI=; b=WM/Zfw32RRJ6n5jwqNdKR55xI2/InOYk8dJlRHXT4EbuAlMCPSxGFljOtVeG6NiQ0W UmCnqxk0cBG1aVfX7TMeq9XoWbrcJEmOZVeJn8KK7nrPaNVlS73ql6wPb00tWutRX3n6 S7UIJLMuF/COb+K7t3Z8eYnv12mumMC+Sz4uwnhOH7JI/KGeMGbeFRCZ1O/skGS2M8um Y7Cg0r0eKbvMVA9Ox6gpg6dCe4f6Rq/DBFsodvf1RUSqOjv9sgMNwaN0yf+A/w5MTbaJ JQk33g/YYZrUXLw/cTPqdfgJGCMp4xFPUpRRFue+VXxQ4zVsZE7qf7U21KUOggt4duL1 Yr8Q== X-Gm-Message-State: AOAM532CsLDUvEeDy02pjNJrYR7MAunfdAMMbXhnAyv7IIjpucSVyQEP PmlewaezYFGxAS+Vc1ypEhTTO6gOdxM= X-Google-Smtp-Source: ABdhPJzicC5POXN6V/eo2yNEZkWnetdsZBsQuHIGFSYsgOgTDfXPMK4FxB01e9TZhy7v+KMQXp/dRQ== X-Received: by 2002:a62:506:: with SMTP id 6mr3705291pff.86.1644617712630; Fri, 11 Feb 2022 14:15:12 -0800 (PST) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com, laurent@vivier.eu Subject: [RFC PATCH 07/25] virtio-snd: Add properties for class init Date: Sat, 12 Feb 2022 03:43:01 +0530 Message-Id: <20220211221319.193404-8-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::42e (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42e; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pf1-x42e.google.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1644617891150100001 Content-Type: text/plain; charset="utf-8" Added properties and function stubs for virtio sound device class init. Signed-off-by: Shreyansh Chouhan --- hw/audio/Kconfig | 5 ++ hw/audio/meson.build | 1 + hw/audio/virtio-snd.c | 126 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 132 insertions(+) create mode 100644 hw/audio/virtio-snd.c diff --git a/hw/audio/Kconfig b/hw/audio/Kconfig index e9c6fed826..d12df06699 100644 --- a/hw/audio/Kconfig +++ b/hw/audio/Kconfig @@ -50,3 +50,8 @@ config CS4231 =20 config MARVELL_88W8618 bool + +config VIRTIO_SND + bool + default y + depends on VIRTIO diff --git a/hw/audio/meson.build b/hw/audio/meson.build index e48a9fc73d..455e6a1501 100644 --- a/hw/audio/meson.build +++ b/hw/audio/meson.build @@ -12,3 +12,4 @@ softmmu_ss.add(when: 'CONFIG_PL041', if_true: files('pl04= 1.c', 'lm4549.c')) softmmu_ss.add(when: 'CONFIG_SB16', if_true: files('sb16.c')) softmmu_ss.add(when: 'CONFIG_VT82C686', if_true: files('via-ac97.c')) softmmu_ss.add(when: 'CONFIG_WM8750', if_true: files('wm8750.c')) +softmmu_ss.add(when: 'CONFIG_VIRTIO_SND', if_true: files('virtio-snd.c')) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c new file mode 100644 index 0000000000..ae438aa7ec --- /dev/null +++ b/hw/audio/virtio-snd.c @@ -0,0 +1,126 @@ +/* + * Virtio Sound device + */ + +#include "qemu/osdep.h" +#include "qemu/atomic.h" +#include "qemu/iov.h" +#include "qemu/main-loop.h" +#include "qemu/module.h" +#include "hw/virtio/virtio.h" +#include "audio/audio.h" +#include "qemu/error-report.h" +#include "qemu/timer.h" +#include "qemu/option.h" +#include "qemu/option_int.h" +#include "qemu/config-file.h" +#include "qapi/qmp/qdict.h" +#include "hw/virtio/virtio-snd.h" +#include "hw/virtio/virtio-bus.h" +#include "qapi/error.h" +#include "qapi/qapi-events-audio.h" +#include "hw/qdev-properties.h" +#include "qapi/qapi-types-migration.h" +#include "qapi/qapi-events-migration.h" +#include "migration/misc.h" +#include "standard-headers/linux/ethtool.h" +#include "sysemu/sysemu.h" +#include "trace.h" +#include "monitor/qdev.h" +#include "hw/pci/pci.h" +#include "intel-hda-defs.h" + +#define VIRTIO_SOUND_VM_VERSION 1 + +#define VIRTIO_SOUND_JACK_DEFAULT 0 +#define VIRTIO_SOUND_STREAM_DEFAULT 1 +#define VIRTIO_SOUND_CHMAP_DEFAULT 0 + +#define VIRTIO_SOUND_HDA_FN_NID_OUT 0 +#define VIRTIO_SOUND_HDA_FN_NID_IN 1 + +static void virtio_snd_get_config(VirtIODevice *vdev, uint8_t *config) +{ +} + +static void virtio_snd_set_config(VirtIODevice *vdev, const uint8_t *confi= g) +{ +} + +static const VMStateDescription vmstate_virtio_snd_device =3D { + .name =3D "virtio-snd-device", + .version_id =3D VIRTIO_SOUND_VM_VERSION, + .minimum_version_id =3D VIRTIO_SOUND_VM_VERSION, +}; + +static const VMStateDescription vmstate_virtio_snd =3D { + .name =3D "virtio-sound", + .minimum_version_id =3D VIRTIO_SOUND_VM_VERSION, + .version_id =3D VIRTIO_SOUND_VM_VERSION, + .fields =3D (VMStateField[]) { + VMSTATE_VIRTIO_DEVICE, + VMSTATE_END_OF_LIST() + }, +}; + +static Property virtio_snd_properties[] =3D { + DEFINE_AUDIO_PROPERTIES(VirtIOSound, card), + DEFINE_PROP_UINT32("jacks", VirtIOSound, snd_conf.jacks, + VIRTIO_SOUND_JACK_DEFAULT), + DEFINE_PROP_UINT32("streams", VirtIOSound, snd_conf.streams, + VIRTIO_SOUND_STREAM_DEFAULT), + DEFINE_PROP_UINT32("chmaps", VirtIOSound, snd_conf.chmaps, + VIRTIO_SOUND_CHMAP_DEFAULT), + DEFINE_PROP_END_OF_LIST(), +}; + +static uint64_t virtio_snd_get_features(VirtIODevice *vdev, uint64_t featu= res, + Error **errp) +{ + return vdev->host_features; +} + +static void virtio_snd_device_realize(DeviceState *dev, Error **errp) +{ +} + +static void virtio_snd_device_unrealize(DeviceState *dev) +{ +} + +static void virtio_snd_reset(VirtIODevice *vdev) +{ +} + +static void virtio_snd_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + VirtioDeviceClass *vdc =3D VIRTIO_DEVICE_CLASS(klass); + + device_class_set_props(dc, virtio_snd_properties); + dc->vmsd =3D &vmstate_virtio_snd; + set_bit(DEVICE_CATEGORY_SOUND, dc->categories); + vdc->realize =3D virtio_snd_device_realize; + vdc->unrealize =3D virtio_snd_device_unrealize; + vdc->get_config =3D virtio_snd_get_config; + vdc->set_config =3D virtio_snd_set_config; + vdc->get_features =3D virtio_snd_get_features; + vdc->reset =3D virtio_snd_reset; + vdc->legacy_features =3D 0; + vdc->vmsd =3D &vmstate_virtio_snd_device; +} + + +static const TypeInfo virtio_snd_dev_info =3D { + .name =3D TYPE_VIRTIO_SOUND, + .parent =3D TYPE_VIRTIO_DEVICE, + .instance_size =3D sizeof(VirtIOSound), + .class_init =3D virtio_snd_class_init, +}; + +static void virtio_register_types(void) +{ + type_register_static(&virtio_snd_dev_info); +} + +type_init(virtio_register_types) --=20 2.31.1 From nobody Mon Feb 9 01:00:57 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1619698725; cv=none; d=zohomail.com; s=zohoarc; b=QOCFTKWyxFaDsiN+t1NXPgYMWw+ndNAJjpiPNqgZRWwCYr9j59SvYmafJTsw9rFgPYhwwSctGKnHcB0m4gdmRet8P8F4HIIKVsDFWbanPa8gtFCXJBnwjkBPWoF1LWAUUPJhJC2oYR+tkj++468fSx38iJAoLVYug6Sc5OSeJZU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619698725; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=0Q6kv2VslbH0ncDkXg3ixuqMfFkJo7vcAjXCtu79UW8=; b=YhAZ6MyEsZIofQQLS29tWI506ugVxKvHRQ+hwlcS2/V+eNZRols1kGXdEpdwspAeSOUoK5MXpe/QZN37FcEDSYAvjRqudoxdpkRTBHE3lZBWgexI7y7gSHiXkvWmJRmUA5PmmKOGuyb35CHtFEDKJVWjz6F+pVPaMqwZ0k7dZQo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619698725546539.276438155879; Thu, 29 Apr 2021 05:18:45 -0700 (PDT) Received: from localhost ([::1]:51774 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lc5cw-0008E7-M9 for importer@patchew.org; Thu, 29 Apr 2021 08:18:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39382) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lc5Qb-0007n7-Eg for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:05:58 -0400 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]:38409) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lc5QU-0000SU-So for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:05:57 -0400 Received: by mail-pf1-x42e.google.com with SMTP id j6so6553259pfh.5 for ; Thu, 29 Apr 2021 05:05:49 -0700 (PDT) Received: from localhost.localdomain ([2405:201:6008:61b4:c0b1:be0f:608e:9a45]) by smtp.gmail.com with ESMTPSA id p6sm713643pjg.35.2021.04.29.05.05.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Apr 2021 05:05:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=0Q6kv2VslbH0ncDkXg3ixuqMfFkJo7vcAjXCtu79UW8=; b=Z9wsEFweuu95U1SZpIphmqC/hgxoJgnyNVqChYqglpRRG9T0kSxvHHzYZyiQNJKcYi MJSiqk7WSAsy7nmMRuYo48Dt6HhaVwnmuLDpSmtiWsdPvd/rMSgLQ4+mvysm4boq3C/Q KKQL/2lvKMsHuWhi0jZH8yTW2Sd9apSmrYCuNvjD5jiikHTLgYaHBofAzXlFV8Un46L0 IuwL0PfEfr9rRBLqH9X+w7XhL+QVD09u2Q7QggBQzkvWHTfxebQm+V9ovEkd6j2IRyiz t1nfa4p2doPAKRRgUvVoeWtFxSkn0jhmiQWzYy4VdocvDxQVeiTBKNWaUkvLzsDWjFc2 Q5cQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=0Q6kv2VslbH0ncDkXg3ixuqMfFkJo7vcAjXCtu79UW8=; b=kA/VOZiGI6D5SHthClAdH1G0fquZXeqxLIt23twp5o4KgPzr9XkHyIk39Aa4IYE92S KeOzEDAHkaMbiA7xGG/OO+UxIi02EeiK7/RiwHL5V/Whit5hojnbSqP8WtCkGXOKNpgR CrSpqJzaLYc7CLMAWgQKHWTfIs4gdlONcjVShILV8Gs2k2VQKKr+3+5bB2jZYyNSY2GP EIzisTeubhFK8Xl4G0cY0KMFENs5tONJ/yaqqzLxPmfWgs7agyvJ1lVXe4Kn/HYEc+g9 bAg8Sh6ukdRfIQdzoIVucxyzIXnt3O0wKzEjmyUFqL+8NLsPNR57FqCsRAkRYd0TOCJi dvOQ== X-Gm-Message-State: AOAM530oAyhKwQ3xdsA04tFpB1Cp189DgvdJtGoF2+XgYUo0dZnxGeob MvtsVC+qI2MeUGgFb3h7TMOZrGRluUzzhQITk9Q= X-Google-Smtp-Source: ABdhPJwqSbxYUAoXSvjoCAbJlV71dAAr+mOUHUoOWnHpqoOhcjUvMXMNYixulzeJbFhRiVqRNAKWww== X-Received: by 2002:a63:dc49:: with SMTP id f9mr31376988pgj.361.1619697948446; Thu, 29 Apr 2021 05:05:48 -0700 (PDT) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com Subject: [RFC PATCH 07/27] virtio-snd: Add properties for class init Date: Thu, 29 Apr 2021 17:34:25 +0530 Message-Id: <20210429120445.694420-8-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42e; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pf1-x42e.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Type: text/plain; charset="utf-8" Added properties and function stubs for virtio sound device class init. Signed-off-by: Shreyansh Chouhan --- hw/audio/Kconfig | 5 ++ hw/audio/meson.build | 1 + hw/audio/virtio-snd.c | 126 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 132 insertions(+) create mode 100644 hw/audio/virtio-snd.c diff --git a/hw/audio/Kconfig b/hw/audio/Kconfig index e9c6fed826..00b4e1ca88 100644 --- a/hw/audio/Kconfig +++ b/hw/audio/Kconfig @@ -50,3 +50,8 @@ config CS4231 =20 config MARVELL_88W8618 bool + +config VIRTIO_SND + bool + default y if PCI_DEVICES + depends on PCI diff --git a/hw/audio/meson.build b/hw/audio/meson.build index 32c42bdebe..8c7b8a1e46 100644 --- a/hw/audio/meson.build +++ b/hw/audio/meson.build @@ -13,3 +13,4 @@ softmmu_ss.add(when: 'CONFIG_PL041', if_true: files('pl04= 1.c', 'lm4549.c')) softmmu_ss.add(when: 'CONFIG_SB16', if_true: files('sb16.c')) softmmu_ss.add(when: 'CONFIG_VT82C686', if_true: files('via-ac97.c')) softmmu_ss.add(when: 'CONFIG_WM8750', if_true: files('wm8750.c')) +softmmu_ss.add(when: 'CONFIG_VIRTIO_SND', if_true: files('virtio-snd.c')) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c new file mode 100644 index 0000000000..ae438aa7ec --- /dev/null +++ b/hw/audio/virtio-snd.c @@ -0,0 +1,126 @@ +/* + * Virtio Sound device + */ + +#include "qemu/osdep.h" +#include "qemu/atomic.h" +#include "qemu/iov.h" +#include "qemu/main-loop.h" +#include "qemu/module.h" +#include "hw/virtio/virtio.h" +#include "audio/audio.h" +#include "qemu/error-report.h" +#include "qemu/timer.h" +#include "qemu/option.h" +#include "qemu/option_int.h" +#include "qemu/config-file.h" +#include "qapi/qmp/qdict.h" +#include "hw/virtio/virtio-snd.h" +#include "hw/virtio/virtio-bus.h" +#include "qapi/error.h" +#include "qapi/qapi-events-audio.h" +#include "hw/qdev-properties.h" +#include "qapi/qapi-types-migration.h" +#include "qapi/qapi-events-migration.h" +#include "migration/misc.h" +#include "standard-headers/linux/ethtool.h" +#include "sysemu/sysemu.h" +#include "trace.h" +#include "monitor/qdev.h" +#include "hw/pci/pci.h" +#include "intel-hda-defs.h" + +#define VIRTIO_SOUND_VM_VERSION 1 + +#define VIRTIO_SOUND_JACK_DEFAULT 0 +#define VIRTIO_SOUND_STREAM_DEFAULT 1 +#define VIRTIO_SOUND_CHMAP_DEFAULT 0 + +#define VIRTIO_SOUND_HDA_FN_NID_OUT 0 +#define VIRTIO_SOUND_HDA_FN_NID_IN 1 + +static void virtio_snd_get_config(VirtIODevice *vdev, uint8_t *config) +{ +} + +static void virtio_snd_set_config(VirtIODevice *vdev, const uint8_t *confi= g) +{ +} + +static const VMStateDescription vmstate_virtio_snd_device =3D { + .name =3D "virtio-snd-device", + .version_id =3D VIRTIO_SOUND_VM_VERSION, + .minimum_version_id =3D VIRTIO_SOUND_VM_VERSION, +}; + +static const VMStateDescription vmstate_virtio_snd =3D { + .name =3D "virtio-sound", + .minimum_version_id =3D VIRTIO_SOUND_VM_VERSION, + .version_id =3D VIRTIO_SOUND_VM_VERSION, + .fields =3D (VMStateField[]) { + VMSTATE_VIRTIO_DEVICE, + VMSTATE_END_OF_LIST() + }, +}; + +static Property virtio_snd_properties[] =3D { + DEFINE_AUDIO_PROPERTIES(VirtIOSound, card), + DEFINE_PROP_UINT32("jacks", VirtIOSound, snd_conf.jacks, + VIRTIO_SOUND_JACK_DEFAULT), + DEFINE_PROP_UINT32("streams", VirtIOSound, snd_conf.streams, + VIRTIO_SOUND_STREAM_DEFAULT), + DEFINE_PROP_UINT32("chmaps", VirtIOSound, snd_conf.chmaps, + VIRTIO_SOUND_CHMAP_DEFAULT), + DEFINE_PROP_END_OF_LIST(), +}; + +static uint64_t virtio_snd_get_features(VirtIODevice *vdev, uint64_t featu= res, + Error **errp) +{ + return vdev->host_features; +} + +static void virtio_snd_device_realize(DeviceState *dev, Error **errp) +{ +} + +static void virtio_snd_device_unrealize(DeviceState *dev) +{ +} + +static void virtio_snd_reset(VirtIODevice *vdev) +{ +} + +static void virtio_snd_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + VirtioDeviceClass *vdc =3D VIRTIO_DEVICE_CLASS(klass); + + device_class_set_props(dc, virtio_snd_properties); + dc->vmsd =3D &vmstate_virtio_snd; + set_bit(DEVICE_CATEGORY_SOUND, dc->categories); + vdc->realize =3D virtio_snd_device_realize; + vdc->unrealize =3D virtio_snd_device_unrealize; + vdc->get_config =3D virtio_snd_get_config; + vdc->set_config =3D virtio_snd_set_config; + vdc->get_features =3D virtio_snd_get_features; + vdc->reset =3D virtio_snd_reset; + vdc->legacy_features =3D 0; + vdc->vmsd =3D &vmstate_virtio_snd_device; +} + + +static const TypeInfo virtio_snd_dev_info =3D { + .name =3D TYPE_VIRTIO_SOUND, + .parent =3D TYPE_VIRTIO_DEVICE, + .instance_size =3D sizeof(VirtIOSound), + .class_init =3D virtio_snd_class_init, +}; + +static void virtio_register_types(void) +{ + type_register_static(&virtio_snd_dev_info); +} + +type_init(virtio_register_types) --=20 2.25.1 From nobody Mon Feb 9 01:00:57 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1619699041; cv=none; d=zohomail.com; s=zohoarc; b=jVDqW7MHyIYaW/R12IO0e3EvvhnonHFLlq/24q9I1aVOf86Rlw6rj4Ui9xbUnlrV7YBgFHdFF2xasvVUvNjXpldl5G9NPhgi/+la2IFuM7Zg6b0fvlpAyxUyAPbjBpZed2TVEQK63mWnkzl+1htN5Hzyt5JJ5UKRFig+GEaJwkg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619699041; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=wlYr5NYk+qncXJMOq+DUj3BiufxdWsLefx4rmBqrZwE=; b=CjTTbM83PfKT/LRIaSPnNhbfvX72weEsJPS7nye9skMLq3im5B9N8qT2KFMXE6DoZ/M2GnxoiO8Zm03nOvd3IUUgZIBjxBA1/7/UQxZ16ZDy8XMjzJeIJel8tUzdBhHSBBNoFVhgoQLQUR6nByRI1pyjxgfEvSmSGJlpuXVOpTk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 161969904190059.981762289939525; Thu, 29 Apr 2021 05:24:01 -0700 (PDT) Received: from localhost ([::1]:60388 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lc5i4-0003Q8-PO for importer@patchew.org; Thu, 29 Apr 2021 08:24:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39406) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lc5Qf-0007qc-Dw for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:01 -0400 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]:40586) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lc5QX-0000Sl-7U for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:01 -0400 Received: by mail-pl1-x62d.google.com with SMTP id 20so30676687pll.7 for ; Thu, 29 Apr 2021 05:05:51 -0700 (PDT) Received: from localhost.localdomain ([2405:201:6008:61b4:c0b1:be0f:608e:9a45]) by smtp.gmail.com with ESMTPSA id p6sm713643pjg.35.2021.04.29.05.05.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Apr 2021 05:05:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=wlYr5NYk+qncXJMOq+DUj3BiufxdWsLefx4rmBqrZwE=; b=R5BTukv+Cb6RhsvQubCEnNr/sEGGUfhDS6dAaz2YRz3y1bocXbqxwR9e+5reEzv2k3 naA4tuUGpHze1AtHl1HE4oiT+TCXOJmo4vbxE+MBmHGtTw1sjMDazEiTlZXP0aSO7RqC fAp7VCkhrEHLH1YmZ9IEpYdAT/l665NA6nE7xDRTHm7V9uAidtbfLyDaAr8BSYLkSDIX jCtsOciWP3yyjuCVQ2ncz8cYptKlsgcDb8/2J9+n6Ze+djL8tt5JFyh+JPceG3gnIYkg yFXqy1lRJ7W0It7OFBhUdtv2/KIq+TdNzf4BzWqi4h1fvo9h12x6SoVnP3zL11c1GORK IfyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=wlYr5NYk+qncXJMOq+DUj3BiufxdWsLefx4rmBqrZwE=; b=EuNrvxhKxcs5WyBeShZJnHxd60OfaVpgDhNIUH+aKhHH/sXvEJ6sCUIlrQPPlZE0XD Vetay0m/Ys4LmWT+7gYJAmZ2OrWV6DBT3o9QDG7jxhBICxbfd9KcA5f5X67m3pWzHfil twW9zT4bXpX2nbIxe5joi35g7busg1v30tlFiIUX4VverFwPdEKegZnnDhC+l+98BJqh xaV4lnopubD8v4458d64fgdlpAsPujif6jG4ABVrqlmWOzU4l/cViuRmAXNaKipiY0kQ DwJAtGT96kJUNab8GdBkq4+g0EAFpD1We7oYa9PmA18NTyjusMvqmAHo/CdzRia98eQc Iu0A== X-Gm-Message-State: AOAM530ffv+DKy6sJMV7xIbnmGTHD3vzVm338wzf3ebrjJ8xX8l3eKlY /CCl1nHw/6MoRV5DKFrwEAw= X-Google-Smtp-Source: ABdhPJw+tLohaHSk2tQLHQ8VZCoBMVPUTB+krrq8+vbRK4VV18pjyYcp+bRSgFswjiIWoTpJ6WlUsg== X-Received: by 2002:a17:90b:14c9:: with SMTP id jz9mr4273675pjb.156.1619697950768; Thu, 29 Apr 2021 05:05:50 -0700 (PDT) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com Subject: [RFC PATCH 08/27] virtio-snd: Add code for get config function Date: Thu, 29 Apr 2021 17:34:26 +0530 Message-Id: <20210429120445.694420-9-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pl1-x62d.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index ae438aa7ec..afa38adee7 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -41,6 +41,15 @@ =20 static void virtio_snd_get_config(VirtIODevice *vdev, uint8_t *config) { + VirtIOSound *s =3D VIRTIO_SOUND(vdev); + virtio_snd_config sndcfg; + + memset(&sndcfg, 0, sizeof(virtio_snd_config)); + stl_le_p(&(sndcfg.jacks), s->snd_conf.jacks); + stl_le_p(&(sndcfg.streams), s->snd_conf.streams); + stl_le_p(&(sndcfg.chmaps), s->snd_conf.chmaps); + + memcpy(config, &sndcfg, sizeof(virtio_snd_config)); } =20 static void virtio_snd_set_config(VirtIODevice *vdev, const uint8_t *confi= g) --=20 2.25.1 From nobody Mon Feb 9 01:00:57 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1644618341; cv=none; d=zohomail.com; s=zohoarc; b=PjWFaJmIIEeJhrmAFQy7V7DNZu5HZc5z8Yug9WGk7KYwSK1SGq+pxMgJDcW4dsH6zvpenKmVtrHCYcLyppqajAZvyxC8c2UnTWpIKP5X0IOReMxWVngH/BSFLV3LmYsk+UeKH4sCC4Obj0bgqxkTWnVxsGXfEhWHDLk6keCSGrs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644618341; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=/RQYujVPZDKPLUZNsz6ZhPK4h1RfDBfdVrDdj4myITg=; b=UNUcEIWjNqJ6h0+rjUVniNevLRnyTA1JcaqrtCxG7FVEvD4FNVANOZLj89Zx39KdrUHxYEJkJeZeB2hl8OeiDwVjNZba0LCZoKSN7TNer2YmDUyjnnSVhCKazTkt98+E3chsuv8oBLHs0Gk+41RUYB73JK+C6MI4skp0ZQow7io= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1644618341188855.0872109437271; Fri, 11 Feb 2022 14:25:41 -0800 (PST) Received: from localhost ([::1]:55050 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nIeMG-0001py-2d for importer@patchew.org; Fri, 11 Feb 2022 17:25:40 -0500 Received: from eggs.gnu.org ([209.51.188.92]:42082) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIeCL-0005mz-6F for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:15:25 -0500 Received: from [2607:f8b0:4864:20::1031] (port=54101 helo=mail-pj1-x1031.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nIeCI-00035L-UQ for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:15:24 -0500 Received: by mail-pj1-x1031.google.com with SMTP id qe15so9258137pjb.3 for ; Fri, 11 Feb 2022 14:15:22 -0800 (PST) Received: from fedora.. ([2405:201:6008:6f15:d26f:133e:cd11:90dd]) by smtp.googlemail.com with ESMTPSA id j23sm20623576pgb.75.2022.02.11.14.15.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:15:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/RQYujVPZDKPLUZNsz6ZhPK4h1RfDBfdVrDdj4myITg=; b=lzsBKDSh7V3uEUS09VDrb56FtUE79Im22SBVSkMLDaMQ4QX0aeip6UokFEXDw/XSUU NwYnBnZiMxswjL/OzvhWha5WVoHoHaMvgw9EMJJJFlNu0ZoHq8Lw2JcG7JEEiDYTI9FF COWQXDOzyRreNWLTNMBkJIMTEPQbQ+tjvYbyXU710OVlYbbMFis48qrQ9iBBUxijaR3q Cy7QcxmLMWOJnNTwjwFTce1cUb6IqcOiD4oTXt2ki2xAr7vz2GyjfA5PVKOvABY5UgRI vk2CZ/j6nG5Kq5eipfUBnzPh5462KIqb7DsoGqZ9RwSPYEyUXpaSUOXriGvQWZj/Vtdx fAzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/RQYujVPZDKPLUZNsz6ZhPK4h1RfDBfdVrDdj4myITg=; b=2tD7h5ElJY8J4PFAvy3qq2wTtOq7JPgoUTZ8Tx0+wzUkL58S8yjPR6A2TdJ5OHr8x6 BmAoC8tw93keaVfZsLrcgw1ymxhXBgT2cgcwIZnPvQtmHbQghwvWfbBS7zqOORSJxCe/ VaGvcpchvcB2FfllZMI4gkEV0NoF8XdfM0owQQDLnaosmfBDT/299gRPZpLp1rfj8hpD jGEZ/mu/pdTKfcpLBiJTUSfCLGIqmP7mQ/mgjYGuCSw4OwIZ/06BiIrl6lJ7G1ngCvlS CIc6XoHg5GGafBTpcAsB/ViST3WwQS6MtV2b7TTnYHLzV7cOJ/hJqyofHlb628+fNSF2 llqA== X-Gm-Message-State: AOAM530tS8TzqKWggWRbUcxQ1Zm+IJhcv6Vmo9W/Q9DSnBgHJEJri5l+ Jlna+MBFRHx6T+5x2xyhmJZxuxv7Qz4= X-Google-Smtp-Source: ABdhPJwea93P9knf7Dlb8MMuuAd0E7GLZoHwPAsHoePMLivWlRqXQiW/yhcQOaL8hQgMIraHJAJLdQ== X-Received: by 2002:a17:902:7609:: with SMTP id k9mr3430022pll.143.1644617721566; Fri, 11 Feb 2022 14:15:21 -0800 (PST) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com, laurent@vivier.eu Subject: [RFC PATCH 08/25] virtio-snd: Add code for get config function Date: Sat, 12 Feb 2022 03:43:02 +0530 Message-Id: <20220211221319.193404-9-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::1031 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1031; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pj1-x1031.google.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1644618343054100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index ae438aa7ec..afa38adee7 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -41,6 +41,15 @@ =20 static void virtio_snd_get_config(VirtIODevice *vdev, uint8_t *config) { + VirtIOSound *s =3D VIRTIO_SOUND(vdev); + virtio_snd_config sndcfg; + + memset(&sndcfg, 0, sizeof(virtio_snd_config)); + stl_le_p(&(sndcfg.jacks), s->snd_conf.jacks); + stl_le_p(&(sndcfg.streams), s->snd_conf.streams); + stl_le_p(&(sndcfg.chmaps), s->snd_conf.chmaps); + + memcpy(config, &sndcfg, sizeof(virtio_snd_config)); } =20 static void virtio_snd_set_config(VirtIODevice *vdev, const uint8_t *confi= g) --=20 2.31.1 From nobody Mon Feb 9 01:00:57 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1644618534; cv=none; d=zohomail.com; s=zohoarc; b=gnkgjNFfxnEZTZwy3agnvj7klTDFvP/9i/LWFItmTy0qeIA3HP84y45eJS6T9VsrQRittEqm4tkZFXE1R9QAJLitPey5Ry1AzX2p2LonVSffjMMxBXwMxZ/H3LlYpMkWn/3NzD6BtkQueY7o7FxfI5j/no6CTPZ++pI54ZJ6uX8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644618534; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=4TPMZja0FGIqQNg1We5peUhb5AlaSgkyeswbqRNpyQA=; b=FsFBLgoXgvxeMDQHr0XuFP2pvL8qM1qENmq55fZoxLiDML43GMT1vmFRzlnMnwRWeuBkI4aGIdXdxVWZ+PVYWlBuZ3/j+Okm+FQ2BU8lNOjy4aqSbzjFhAbM0PyJAcniGQr1UK0dl/3TT8UYZ9pElMXnQjbd4f6t3PM9kODQVMk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1644618534635319.7436163465021; Fri, 11 Feb 2022 14:28:54 -0800 (PST) Received: from localhost ([::1]:35926 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nIePN-000863-BQ for importer@patchew.org; Fri, 11 Feb 2022 17:28:53 -0500 Received: from eggs.gnu.org ([209.51.188.92]:42118) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIeCR-00061y-EW for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:15:31 -0500 Received: from [2607:f8b0:4864:20::429] (port=39788 helo=mail-pf1-x429.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nIeCP-00038N-8a for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:15:30 -0500 Received: by mail-pf1-x429.google.com with SMTP id r19so18604084pfh.6 for ; Fri, 11 Feb 2022 14:15:27 -0800 (PST) Received: from fedora.. ([2405:201:6008:6f15:d26f:133e:cd11:90dd]) by smtp.googlemail.com with ESMTPSA id j23sm20623576pgb.75.2022.02.11.14.15.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:15:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=4TPMZja0FGIqQNg1We5peUhb5AlaSgkyeswbqRNpyQA=; b=L6iTdiWT7Tl8vRqxAuJz/qwh1cKXZirecIoG9qXcIXifusxAIs7BmmyD3cTxvrLR9i LOSQXcuX76Dz/1HKjcR6Lwr3duHXoEAzaV4eElutjje3u3IQ4Ivz6ZWZ+bvnoxeMHOH/ QSToWX1Lr8gP5vCjMCVLeHD7deLC7YgfBjw+H9lySYBrQZ2JXu3V1cmJ9eUsq1jLLQ6G 43kTLVl2TH10PDIh0BccWN3k0FtFM50gVzF2PEho4hnzgBtDvkDvVHqnrdiZfpyDyidf uJTbV+VDsA6tzppgOXONnKi8UxYxQpdImyQIB7dYLpvhsV+15kweNhI99wTWTpxDQAJa KaIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=4TPMZja0FGIqQNg1We5peUhb5AlaSgkyeswbqRNpyQA=; b=pO+0akjsVr/duPUX9Y5wbhhrEVtfWhN1j2G7y0LSBBrGXdd9iU2T8xNsRq+qPBACL9 CxJfyW8LhG4kvMW6shXL8tPU/v8QRYH1TB8ylUWdvil6cKrXbdQRuCSbM4qpVpj0aahC Jre2GwV4DPjfOJKVVU07YmELfC3uJN+RBG/Binzv8R6AtAYHD+iFhBoEo/TtmbMnW7aL kuVF3SQjtqgvnwtG3rtMjrxBPMBwvweO5Y596y31gUAfAurTkbC8BXse7z8+SViO+mcN e9MsyJnmJKRXB5+1MYC5igDhsStePaKC/MJ04M5GRpKzJ/Ar0l+omN5lBbOyUKhKb0mQ 4UPw== X-Gm-Message-State: AOAM530zY0Tz32QMBG9AuwwvQHooFOka2fk9ivBv3e+tD0sdY0tMReE4 VSV0Vu369Dgr/2IaCk2PZ0fM2f2SRsM= X-Google-Smtp-Source: ABdhPJwzMgQvc/uVs1ccTroI55QDpfF1fa7vsN/VhuygkPVMzq/U5OT8MPC+NTHAHtJgOhSZ6jd7cA== X-Received: by 2002:a05:6a00:1588:: with SMTP id u8mr3638614pfk.4.1644617726869; Fri, 11 Feb 2022 14:15:26 -0800 (PST) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com, laurent@vivier.eu Subject: [RFC PATCH 09/25] virtio-snd: Add code for the realize function Date: Sat, 12 Feb 2022 03:43:03 +0530 Message-Id: <20220211221319.193404-10-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::429 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::429; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pf1-x429.google.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1644618536496100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shreyansh Chouhan --- 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 *vd= ev, uint64_t features, return vdev->host_features; } =20 +/* + * Initializes the VirtIOSound card device. Validates the configuration + * passed by the command line. Initializes the virtqueues. Allocates resou= rces + * 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 =3D VIRTIO_DEVICE(dev); + VirtIOSound *s =3D VIRTIO_SOUND(dev); + + virtio_init(vdev, "virtio-snd", VIRTIO_ID_SOUND, sizeof(virtio_snd_con= fig)); + + /* 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.stre= ams); + 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 =3D g_new0(virtio_snd_pcm_stream *, s->snd_conf.streams); + s->pcm_params =3D g_new0(virtio_snd_pcm_params *, s->snd_conf.streams); + s->jacks =3D g_new0(virtio_snd_jack *, s->snd_conf.jacks); } =20 static void virtio_snd_device_unrealize(DeviceState *dev) --=20 2.31.1 From nobody Mon Feb 9 01:00:57 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1619698712; cv=none; d=zohomail.com; s=zohoarc; b=U1VoTqkm/zwZuG6KJAIi9ZQ8zlBA9jwf3tF+UiWIJV8BofrnrCtn0t6Zl7dOHdbpIJPeec4mp8x7A13Ak1uWmBaHRfa8mC7CzSmvHoz/2vhf561nJJs/5o/g9z9fGCnE26ICmLUi51gUgNL7JPlLs2ii7LSibEnM7Ns0oeK+xRc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619698712; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=E8nv2yvyvuYnzapvFj9RI6LUgJYktalhrXkUmoXfxiI=; b=S4oKW93crfs02WQfIwl4UoXQHY9ehV22/s7FY7dBE4uFwCS4+f1xbuiHbVYnGWUzgt691lZNTFzGyxCg40BqqgLVx4khkgB4XwQndZWwIuZi3x8UTzD8mfRWt4wJcX8V0p+IYk7eOPGWvAHzhoA1r3dGV7D/xeZ1vvJOj3chI3w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619698712158304.6421163275646; Thu, 29 Apr 2021 05:18:32 -0700 (PDT) Received: from localhost ([::1]:50726 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lc5ck-0007lp-MY for importer@patchew.org; Thu, 29 Apr 2021 08:18:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39412) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lc5Qf-0007rR-Ld for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:01 -0400 Received: from mail-pg1-x52f.google.com ([2607:f8b0:4864:20::52f]:35350) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lc5QZ-0000UD-DE for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:01 -0400 Received: by mail-pg1-x52f.google.com with SMTP id q10so46972783pgj.2 for ; Thu, 29 Apr 2021 05:05:54 -0700 (PDT) Received: from localhost.localdomain ([2405:201:6008:61b4:c0b1:be0f:608e:9a45]) by smtp.gmail.com with ESMTPSA id p6sm713643pjg.35.2021.04.29.05.05.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Apr 2021 05:05:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=E8nv2yvyvuYnzapvFj9RI6LUgJYktalhrXkUmoXfxiI=; b=YlmDbPXuIrmmIMe4u00ukxM3Y5wrrmFC6vMQP4KSNfPDhK/MIr0mK+0m64Q1GWNkC6 +M5bLzGLkm/WRsVCdv55pkbFfARFffBg//b517I3l6cT8ikafnsGuXT48CmJHh2uVaEi +ACItcRp+RwQQZtCwTRXjZ23c4j+6/2NZFdzx3UDGrCEzz37uyyWVF4siAYwoFaVVMpD 2pUJik55qeYPL2H5dHqSezyAmCgq30Vct+6WLyfrTYl8OGDbjnUpMjSronB5+uFmgSU3 do8EqyUE+7167iJYTxn+aokSxVRzlmijN2K+JI9dphVusjds4WdClrgG/VJBqqF3P7Ky qpXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=E8nv2yvyvuYnzapvFj9RI6LUgJYktalhrXkUmoXfxiI=; b=T9kVfwEC4CxoZhpBPq0zVtfsYy6USdDXn3EMxuK1uFlCvZ7YEW6g115+FjSiGCFPSP cXeSJtnxrt6/yQnEM0oKz59ndBIY1lanzSbm9HVYmZuknVAb5h0dc4KmpoOTF51VyelA mC8xpKHvNqvaBSLw4G4m31OXK3mGWQDOhh/we28FKw5g/igq0DkLMoTXjAlyC/qJbWwh hInyXsrXCctbceahjRhN7RaAWBtxL+ppl8KE9phODgNlE/Z8APraUy+j0SGtYbW3Kz3D mdF8rYaJrSxC9iAv6s/e4qVzpqdP0tlD4Q/HrwKmOYVR6rvITzcgRmjcBw3mSv+Zv9FV d7lw== X-Gm-Message-State: AOAM532wKW/h5Fy9OstHSFS4d2ALglD1akxk2I71112t7AqkXC22knJp DWZP682fTNMfd4eqhwJlfDg= X-Google-Smtp-Source: ABdhPJzVcv3172fq3gBSrGzS+d9kx6yrFu1MLlcMK/dr5sWQr5kfZSbR/dUMcCXyox+GtFQC4M7Vxw== X-Received: by 2002:a63:e443:: with SMTP id i3mr32348790pgk.114.1619697953496; Thu, 29 Apr 2021 05:05:53 -0700 (PDT) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com Subject: [RFC PATCH 09/27] virtio-snd: Add code for set config function Date: Thu, 29 Apr 2021 17:34:27 +0530 Message-Id: <20210429120445.694420-10-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52f; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pg1-x52f.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index afa38adee7..edaeffd6b7 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -54,6 +54,14 @@ static void virtio_snd_get_config(VirtIODevice *vdev, ui= nt8_t *config) =20 static void virtio_snd_set_config(VirtIODevice *vdev, const uint8_t *confi= g) { + VirtIOSound *s =3D VIRTIO_SOUND(vdev); + virtio_snd_config sndcfg; + + memcpy(&sndcfg, config, sizeof(virtio_snd_config)); + + memcpy(&s->snd_conf.jacks, &sndcfg.jacks, sizeof(uint32_t)); + memcpy(&s->snd_conf.streams, &sndcfg.streams, sizeof(uint32_t)); + memcpy(&s->snd_conf.chmaps, &sndcfg.streams, sizeof(uint32_t)); } =20 static const VMStateDescription vmstate_virtio_snd_device =3D { --=20 2.25.1 From nobody Mon Feb 9 01:00:57 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1644618527; cv=none; d=zohomail.com; s=zohoarc; b=jrja6ChINJPga1Y4CGDVXxCWe/KIzfpUFmp8jENMLOtW7LML4Fe6+hvMXinWGQ8iyPtJfQ0d3NktuyZUKYgSShQBxbSOAbSRTJJm5ILL5FUnwpb4ZGobKQpJ5fede6hS+1gFF6mkE2vrnFuEJuVZqmoGMky7qzeJXEdqLA+FxD4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644618527; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=/uWUv1eupKx5wHlbkeEWQZ9uHP33Krw7Pt1rcv//zR4=; b=mTKCnvy7w+TigkzFTRSIZX4Rezg0BLJphU7ZQRqnxmVnzRisdhzoj9L6VdnzQhSFrs84QQc1Y6sUNEh/VwW7njiWtzuoM3+qU7XsyDeIa2cUI2jVr8fPoeVzTwtn0tA0GO9KPnzDl5DeB2RDsHoSkXdqncUUkyqJh9RB9MpvbOc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1644618527737292.12803377501587; Fri, 11 Feb 2022 14:28:47 -0800 (PST) Received: from localhost ([::1]:35176 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nIePH-0007bS-HN for importer@patchew.org; Fri, 11 Feb 2022 17:28:47 -0500 Received: from eggs.gnu.org ([209.51.188.92]:42160) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIeCU-0006CF-KN for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:15:34 -0500 Received: from [2607:f8b0:4864:20::42b] (port=46889 helo=mail-pf1-x42b.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nIeCS-0003Ct-Lf for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:15:34 -0500 Received: by mail-pf1-x42b.google.com with SMTP id i21so17124064pfd.13 for ; Fri, 11 Feb 2022 14:15:32 -0800 (PST) Received: from fedora.. ([2405:201:6008:6f15:d26f:133e:cd11:90dd]) by smtp.googlemail.com with ESMTPSA id j23sm20623576pgb.75.2022.02.11.14.15.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:15:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/uWUv1eupKx5wHlbkeEWQZ9uHP33Krw7Pt1rcv//zR4=; b=hurCi/aKTMp0jOo7KnfpjEFPHjqDFlp2FL3JZFLotBLo3Hw5ehF63kJIQ9cn2BWjx7 0RDjQa1IkVqRKnUS81MnMQEGVKy0YemNcnEcZwCnut+l3FKYrOevKszZGcVB6qddQZu1 4bDC4xV6N9wcBWg1JCJ89kGY34A9VE0DMkkrY3kKi3vnm34+wO5cx43XFJiClwfNxE4i i+LeqMkPcfRljzZw6ymRSSgGACiCjf4+GurU8hMcCd7ULiWd9RYKNdHHaxy1EPuUnTny qJk2jxC8BK/eFwvKaIZ1VBdGUed3jtUxTmBOrlxNgusa++sCGX9zpQKm/njjQ0N9QjSH bqgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/uWUv1eupKx5wHlbkeEWQZ9uHP33Krw7Pt1rcv//zR4=; b=WKy1xyUTGe8WOLAo3lvqXLosX+7WJpLobebQ7qO8FBmKhgPwcZtqGB6OCz4fEzfcU8 m8tx6W8pzl5WOM1s7zaS47uGtsva6dETVmFs9qNmuawotCcjhJRmkfvDT6vtRz8FyKJN Z7ReMknU3aB9aKvh67nYR67q5fbmhxP1R2mBWnYttjw7FadePmgpwTxF/xba1Qzg0XyA eLHmvR2XR37OAYFmRL74xqKXNRo4r4s1oaGUG6W6eyFcR8GkrKxdtVBX1kmlzfy1eqfP 8lHsrlJLSaPxxRMGjt1zCiaTZRATih8v/yk7irWT6zLqdH+F0bYfM5sx6zrXQtj6BRMK e4og== X-Gm-Message-State: AOAM533ccDqR2K83P6UlHsWhaWRw03Hs/Y2JVIJIV8Ql++htTMT0w2Zo y2mp9BckUg9fdil60Y7DA5U= X-Google-Smtp-Source: ABdhPJwlyrISXPJrJ5WxCDLKhNrThbmoZteNY4K0DRkwN7axIeIb3BNfDl7DxriokaBRl5JfluLG7Q== X-Received: by 2002:a63:6c46:: with SMTP id h67mr2993053pgc.493.1644617731416; Fri, 11 Feb 2022 14:15:31 -0800 (PST) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com, laurent@vivier.eu Subject: [RFC PATCH 10/25] virtio-snd: Add macros for logging Date: Sat, 12 Feb 2022 03:43:04 +0530 Message-Id: <20220211221319.193404-11-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::42b (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42b; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pf1-x42b.google.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1644618531842100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index b51f6c7523..40829fa329 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -39,6 +39,10 @@ #define VIRTIO_SOUND_HDA_FN_NID_OUT 0 #define VIRTIO_SOUND_HDA_FN_NID_IN 1 =20 +#define virtio_snd_log(...) AUD_log("virtio sound info", __VA_ARGS__) +#define virtio_snd_warn(...) AUD_log("virtio sound warn", __VA_ARGS__) +#define virtio_snd_err(...) AUD_log("virtio sound err", __VA_ARGS__) + static void virtio_snd_get_config(VirtIODevice *vdev, uint8_t *config) { VirtIOSound *s =3D VIRTIO_SOUND(vdev); @@ -167,4 +171,8 @@ static void virtio_register_types(void) type_register_static(&virtio_snd_dev_info); } =20 +#undef virtio_snd_log +#undef virtio_snd_warn +#undef virtio_snd_err + type_init(virtio_register_types) --=20 2.31.1 From nobody Mon Feb 9 01:00:57 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1619699297; cv=none; d=zohomail.com; s=zohoarc; b=fqF7ZzEyT1mwKsxgzI7C6PV2hkjtyw3vi+VNYFb3MKhYAbLDnxmbprwic687fycq8eBfdsFU6bHa6ae+wG5YXaEC8IRwR/yoLGBllrqiTpqxgRzjFtthiHVHY84bMWAOz94vwECX7sPHMHVi6upeYloT4e65P8KEEj/KHXcxrII= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619699297; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=gwpABH7Q/RCzO/0p2BVP3Xs7gCzcoNuIVG636eSZ3cI=; b=efo2MljfkedYaWFSluWAGuwYTdjURz8F7I+NcAZd81oklZCV1rKYDsXIqlIDu2ALKdXLM4gd47PXBVWRDKp7aAW2dTutET2vkyLWUl5vSr9wMLnewDruFOFimfMPWx/kQPWRWudoZlF5uDcyB8qeNFNzjGB3xyDJCRfTFcaiW4U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619699297230324.9696439704344; Thu, 29 Apr 2021 05:28:17 -0700 (PDT) Received: from localhost ([::1]:40704 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lc5mC-0006zu-A1 for importer@patchew.org; Thu, 29 Apr 2021 08:28:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39426) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lc5Qg-0007sV-3C for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:02 -0400 Received: from mail-pg1-x531.google.com ([2607:f8b0:4864:20::531]:33782) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lc5Qb-0000VU-EL for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:01 -0400 Received: by mail-pg1-x531.google.com with SMTP id t22so11732264pgu.0 for ; Thu, 29 Apr 2021 05:05:56 -0700 (PDT) Received: from localhost.localdomain ([2405:201:6008:61b4:c0b1:be0f:608e:9a45]) by smtp.gmail.com with ESMTPSA id p6sm713643pjg.35.2021.04.29.05.05.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Apr 2021 05:05:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=gwpABH7Q/RCzO/0p2BVP3Xs7gCzcoNuIVG636eSZ3cI=; b=Z4Rmk0l6rdo5x/MMoWHpsFjRGt90PnqygQCyOVyy+aSMkVWA6Pm9HqzV8df1DhoQTi TykVPgZBDhB5RG1O3aJR3z3N4tXY5hFIANOH2rm5vsvBKNJdhjydD8jKoEq3zVSQrrZL Qjk5Kj1h6inNcVyPDI3kfsUT/gVKcKHm7s36EyrNnPv63BK5RAIv0L5C38D2mjM1CdZZ IXX0Iwe8r3Usu3l9kSY+En0zfq+H6qTSE62wRIYGUOLvZLw2GcL7ZbH7fpR0htJvICIx 1wkCBaeVltaZtybp+gPcZvMRX1FjRzy1gPplVwdXvR19HRuAwvwPMoDzYmKqo+uPd5Ao Jk9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=gwpABH7Q/RCzO/0p2BVP3Xs7gCzcoNuIVG636eSZ3cI=; b=tXnqCrji8iCMogRD4k/KHN+uPlVBOgXm9flEtM1EfbSPq4TnqxIxo4IOCfOVOlGkjI TbK8MxQKylyXrFk4buT065mYwjqGwPwXDoqxGHqi3y3LtolMaiQK/CNe9ezq9tQvPmNV i9c4kwNwiuUKp7yn9tu4w/QzKTQ+hvz3MZLHXmJ3fuCijfid+IQAWxakLjDid2YwS47B QZqYZp/eLNz/OOrFWISRkL+B7mgwic2cTtbOwG8aDhD4FfSvegCCXdbNY75rPUxoIYiz riIAZ+vQcuLtAIOX+vL/6zxLDB1kT+Sa/LF51N2+VheoAzrKx4qYWPZcnhTaMwf9pOji /WZw== X-Gm-Message-State: AOAM530eTgbWa5805L04BG68gS2YMzOH8215v+BYbOmFi4d/R5H4vTw4 CrIedpJTKXyL7vvtGQDfH2k= X-Google-Smtp-Source: ABdhPJyQK4qpHMFLWwEtlzgR6qX95Gvf/0LY+xXs+qiUjHLf23olUEq6WZwMaet5ewfEF30I2nMvcQ== X-Received: by 2002:a62:5ec7:0:b029:227:3253:3f62 with SMTP id s190-20020a625ec70000b029022732533f62mr32664234pfb.54.1619697956009; Thu, 29 Apr 2021 05:05:56 -0700 (PDT) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com Subject: [RFC PATCH 10/27] virtio-snd: Add code for the realize function Date: Thu, 29 Apr 2021 17:34:28 +0530 Message-Id: <20210429120445.694420-11-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::531; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pg1-x531.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Shreyansh Chouhan --- 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 edaeffd6b7..caad157705 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -97,8 +97,43 @@ static uint64_t virtio_snd_get_features(VirtIODevice *vd= ev, uint64_t features, return vdev->host_features; } =20 +/* + * Initializes the VirtIOSound card device. Validates the configuration + * passed by the command line. Initializes the virtqueues. Allocates resou= rces + * 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 =3D VIRTIO_DEVICE(dev); + VirtIOSound *s =3D VIRTIO_SOUND(dev); + + virtio_init(vdev, "virtio-snd", VIRTIO_ID_SOUND, sizeof(virtio_snd_con= fig)); + + /* 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.stre= ams); + 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 =3D g_new0(virtio_snd_pcm_stream *, s->snd_conf.streams); + s->pcm_params =3D g_new0(virtio_snd_pcm_params *, s->snd_conf.streams); + s->jacks =3D g_new0(virtio_snd_jack *, s->snd_conf.jacks); } =20 static void virtio_snd_device_unrealize(DeviceState *dev) --=20 2.25.1 From nobody Mon Feb 9 01:00:57 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1619698975; cv=none; d=zohomail.com; s=zohoarc; b=HnwHTnjNY+6PiT1hBSvtbFzDf+Hp/iu9h39xk1u8jriDY4WIaTAtrvdw5CPmxh4L2AclRgQhpzD29JtBaZnP8qPJkXGY0jCTP3GDIS2VjLAvMEGgeArZ61rreNlpfZbuWcKBT+irpW23xrvt5jtQNJuXc47qg5M8fFPcqaJLYeU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619698975; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=MY3Eyo8BOW5/bnFZwe0nuVTvNJ6IL5ISEGXVEww/96g=; b=b0HmOBUfK3fvIV8hGF44gHipMCp/etm7b8EzUXHMLT4u5+204pThlLAEiKU2ksITdKY32GNyEqDdTL3JlgDKDXZCF4iWed7jdx7Hk1I2cMm5lcofCSCBKEKsDLFYfQr5oF3lw7w88EQJ8SzUoCIVHywtZhf5okhazXW/9dUIM4E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619698975719541.6918867491894; Thu, 29 Apr 2021 05:22:55 -0700 (PDT) Received: from localhost ([::1]:59252 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lc5h0-0002wK-Mm for importer@patchew.org; Thu, 29 Apr 2021 08:22:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39446) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lc5Qi-0007xP-6Z for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:04 -0400 Received: from mail-pg1-x535.google.com ([2607:f8b0:4864:20::535]:43006) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lc5Qf-0000Ve-08 for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:03 -0400 Received: by mail-pg1-x535.google.com with SMTP id m12so6239118pgr.9 for ; Thu, 29 Apr 2021 05:05:59 -0700 (PDT) Received: from localhost.localdomain ([2405:201:6008:61b4:c0b1:be0f:608e:9a45]) by smtp.gmail.com with ESMTPSA id p6sm713643pjg.35.2021.04.29.05.05.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Apr 2021 05:05:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=MY3Eyo8BOW5/bnFZwe0nuVTvNJ6IL5ISEGXVEww/96g=; b=UkX45I7m8OQG0Zgpqkw3uTIbRIt6ppKIqGmJALAW9u8+KIBGWSoHwEimdXdMNsbjKi Mlscm+LUBMLKzaKdyMAfWLJ0pBDS3I2BS3JJ2JJJAYPdBrr1CC7AahYJVhDGkCIUpfBm IWblxuzr1ymJL9F73RIlZZFwAQ2YRzR1bD9yRucQh/0ad+EfnIGYDa9AZCqNokVvZjJC 3HuRrNN/RqfSdYqbWpfpOuRrF38AxV4f/QLewi7ENpvBO26eP+aE8AV4t6BI3nt3UDVy VnvDnZsmPuDUQYSrtQTPy6MuWNX+RcaNh1HNi+vliuHrTv8+CQouv7XL87UeB9B/wxWx Uayw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=MY3Eyo8BOW5/bnFZwe0nuVTvNJ6IL5ISEGXVEww/96g=; b=VxRjQGDYb+OHbJrahZD5hnDuqP24jKZqxdfGkTrzmBZ+B14pJ2Qoo1FavQjsdOlbE6 SJSTaYktUikDTjfu+PydhUzACIs2OckkdV/QYHXLnDYzcCVwtRkm4ovCTcKCl7fYpyp7 YNB4Gg2jjhrtHGOfvWEnAH1dpGKn9rl/UXBfhqiRe0uSU79l6Nko7Ams3ZYrqVhI/nPV S3QhPK7o1bSI4eBEWhSHCMM/cSUMoYm7Nxh/l0UuX7BpP+F8xWwadPqAmulXV/DWIzFE gZYusAOX0P0Q6VO4p5R6dRSdWXLCTMl5neE0lZUkPLAIq4IXz+EPRVWtn8pk+hkrIWlh FtCw== X-Gm-Message-State: AOAM532V3Ky63Ji6cXS1nS6V8k8uRYnUCM/FZLPpuLpVJLdxnuXvtGiz rpZLlOq2hAAPwYbAc/GYnlGEluVmRNrAcHexYwA= X-Google-Smtp-Source: ABdhPJwENxyHlbxOUo9JHKW4njQ0KSi8ChNyUHjf6BDzPKYqnC45161W9PN+p4SUe1WHHXPpUF64fg== X-Received: by 2002:a65:4341:: with SMTP id k1mr8594477pgq.178.1619697958283; Thu, 29 Apr 2021 05:05:58 -0700 (PDT) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com Subject: [RFC PATCH 11/27] virtio-snd: Add macros for logging Date: Thu, 29 Apr 2021 17:34:29 +0530 Message-Id: <20210429120445.694420-12-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::535; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pg1-x535.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index caad157705..a93674ea72 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -39,6 +39,10 @@ #define VIRTIO_SOUND_HDA_FN_NID_OUT 0 #define VIRTIO_SOUND_HDA_FN_NID_IN 1 =20 +#define virtio_snd_log(...) AUD_log("virtio sound info", __VA_ARGS__) +#define virtio_snd_warn(...) AUD_log("virtio sound warn", __VA_ARGS__) +#define virtio_snd_err(...) AUD_log("virtio sound err", __VA_ARGS__) + static void virtio_snd_get_config(VirtIODevice *vdev, uint8_t *config) { VirtIOSound *s =3D VIRTIO_SOUND(vdev); @@ -175,4 +179,8 @@ static void virtio_register_types(void) type_register_static(&virtio_snd_dev_info); } =20 +#undef virtio_snd_log +#undef virtio_snd_warn +#undef virtio_snd_err + type_init(virtio_register_types) --=20 2.25.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1644618689; cv=none; d=zohomail.com; s=zohoarc; b=J2TakDgJyRTDW+q0H08tExiVLxToJnAqcD/QD/EqUueil90AfYMy976swOcjfEjlFv05v3T8f7ms9WUm7Mof4lyqQquPWAHzm7+zJwIE4lsGjF5O3EVZW/i4mY9rsvImoL1P4Ct/PUA1F/3+q408pnZu0HGiHzLNitjeThOr/BU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644618689; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=iceLQWqrwhvZQY4LbzeSdb7PUfk0jiwUs6JgPBejn/4=; b=ezzGTOTkDL8JZRtjllRHCwbAn9i7m/kEFZgrTP/qQCIZroKyUd+CbVPC+TpnO/tmpCM8nm1KDQD2UbkuOA1HQ2VoKmWjcpnFXUaQ/kYQ+6hhUewE6X0Ia0u7tUsKGR1XUv9T/ofBY1jAklnUm1gIFOLE6A3lG3IjG7h4YoawJEU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1644618689936529.3828391174674; Fri, 11 Feb 2022 14:31:29 -0800 (PST) Received: from localhost ([::1]:42362 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nIeRs-00043Q-Pp for importer@patchew.org; Fri, 11 Feb 2022 17:31:28 -0500 Received: from eggs.gnu.org ([209.51.188.92]:42198) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIeCf-0006i7-3m for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:15:45 -0500 Received: from [2607:f8b0:4864:20::632] (port=44589 helo=mail-pl1-x632.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nIeCc-0003Ig-OE for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:15:44 -0500 Received: by mail-pl1-x632.google.com with SMTP id y18so5734036plb.11 for ; Fri, 11 Feb 2022 14:15:42 -0800 (PST) Received: from fedora.. ([2405:201:6008:6f15:d26f:133e:cd11:90dd]) by smtp.googlemail.com with ESMTPSA id j23sm20623576pgb.75.2022.02.11.14.15.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:15:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=iceLQWqrwhvZQY4LbzeSdb7PUfk0jiwUs6JgPBejn/4=; b=Kyajiu++W5if+VoVElHnijP8e2tTptO53MVxgcUGc7vydnwUm8Nfz0FEwOoH6Kh7DB ta4ptH6TESKIdF6Lgsu8OxWftIIPeJ54J8vQCUtxJcLSwRmscPU17Jgn4dt8hcmYAWgL StdoDAwysoX6evDF1b+Lp7jcUb+zTPfybo7DD9ofvOdyq2kG1BmcAmrP2XzWgixo7H+a NP7G/M5Vjvwz1eNC7hpOTvMBIbj6rQQ0gRDJ2ha9PjoJ92tUGtxI2cxGzgLy0v2ilBWJ 7fqB/gQKZA3isnq5JYg384mw0PPBsY9sPhg6ezyJ0umV4f/f718/CRSTfiApswKUKSqm 5jeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=iceLQWqrwhvZQY4LbzeSdb7PUfk0jiwUs6JgPBejn/4=; b=xDc5O3DIufkDarGHjNOZ8cjoHfocyIDIVv56L6nOzq5h5gS0tW3QP7g/vhA0iwhVYT 9Y153pT1CXsgtaeA3bnADEb+5GN6QX34dVZ2QffkF74pCsZBUC9bGri09beAwjtxxZvV RsjDwp0vaqzI4jaf5z/ZB/7bHGBHWh84b5h6Ctk4+g0n/TP4UgVVWvnNWbK3ytA4EQxi m+InqXxmc++vbF1t+E4wuUXydPtSddXUPtaZlTF5+5k7ywiG8ph0WTekjN98CsYZ0Cox 1kGasxo1133vAL4XxtJK1IoAb2CtGn7vsph+09AwDFhhJNchF9fFt2n2gk1gL3Iejh7K nzIg== X-Gm-Message-State: AOAM531yroFtgr2Tmv/A3OdzafMhV9MK5OCDDQzr02qEBKYYGg3U7PIr oU7FRLlXTSQAWyZuBjCDzBrpxWoZ+O4= X-Google-Smtp-Source: ABdhPJxPe484hFqJbDQht7tC+yJSH5ltK/5/usrasaHxLHVvBgi4KyLOBEpqe+dcDsoo2oR2Lv6qnw== X-Received: by 2002:a17:902:d4c1:: with SMTP id o1mr3582593plg.167.1644617741394; Fri, 11 Feb 2022 14:15:41 -0800 (PST) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com, laurent@vivier.eu Subject: [RFC PATCH 11/25] virtio-snd: Add control virtqueue handler Date: Sat, 12 Feb 2022 03:43:05 +0530 Message-Id: <20220211221319.193404-12-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::632 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pl1-x632.google.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1644618691728100001 Content-Type: text/plain; charset="utf-8" The handler prints the requests that came in the ctrl virtqueue. Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 73 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index 40829fa329..a87922f91b 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -93,6 +93,77 @@ static uint64_t virtio_snd_get_features(VirtIODevice *vd= ev, uint64_t features, return vdev->host_features; } =20 +/* The control queue handler. Pops an element from the control virtqueue, + * checks the header and performs the requested action. Finally marks the + * element as used. + * + * @vdev: VirtIOSound card device + * @vq: Control virtqueue + */ +static void virtio_snd_handle_ctrl(VirtIODevice *vdev, VirtQueue *vq) +{ + virtio_snd_hdr ctrl; + + VirtQueueElement *elem =3D NULL; + size_t sz; + struct iovec *iov, *iov2; + unsigned int iov_cnt; + + for (;;) { + elem =3D virtqueue_pop(vq, sizeof(VirtQueueElement)); + if (!elem) { + break; + } + if (iov_size(elem->in_sg, elem->in_num) < sizeof(ctrl) || + iov_size(elem->out_sg, elem->out_num) < sizeof(ctrl)) { + virtio_snd_err("virtio-snd ctrl missing headers\n"); + virtqueue_detach_element(vq, elem, 0); + g_free(elem); + break; + } + + iov_cnt =3D elem->out_num; + iov2 =3D iov =3D g_memdup(elem->out_sg, + sizeof(struct iovec) * elem->out_num); + sz =3D iov_to_buf(iov, iov_cnt, 0, &ctrl, sizeof(ctrl)); + iov_discard_front(&iov, &iov_cnt, sizeof(ctrl)); + if (sz !=3D sizeof(ctrl)) { + /* error */ + virtio_snd_err("virtio snd ctrl could not read header\n"); + } else if (ctrl.code =3D=3D VIRTIO_SND_R_JACK_INFO) { + virtio_snd_log("VIRTIO_SND_R_JACK_INFO"); + } else if (ctrl.code =3D=3D VIRTIO_SND_R_JACK_REMAP) { + virtio_snd_log("VIRTIO_SND_R_JACK_REMAP"); + } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_INFO) { + virtio_snd_log("VIRTIO_SND_R_PCM_INFO"); + } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_SET_PARAMS) { + virtio_snd_log("VIRTIO_SND_R_PCM_SET_PARAMS"); + } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_PREPARE) { + virtio_snd_log("VIRTIO_SND_R_PCM_PREPARE"); + } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_START) { + virtio_snd_log("VIRTIO_SND_R_PCM_START"); + } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_STOP) { + virtio_snd_log("VIRTIO_SND_R_PCM_STOP"); + } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_RELEASE) { + virtio_snd_log("VIRTIO_SND_R_PCM_RELEASE"); + } else if (ctrl.code =3D=3D VIRTIO_SND_R_CHMAP_INFO) { + virtio_snd_log("VIRTIO_SND_R_CHMAP_INFO"); + } else { + /* error */ + virtio_snd_err("virtio snd header not recognized: %d\n", ctrl.= code); + } + + virtio_snd_hdr resp; + resp.code =3D VIRTIO_SND_S_OK; + sz =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &resp, sizeof(re= sp)); + virtqueue_push(vq, elem, sz); + + virtio_notify(vdev, vq); + g_free(iov2); + g_free(elem); + } +} + /* * Initializes the VirtIOSound card device. Validates the configuration * passed by the command line. Initializes the virtqueues. Allocates resou= rces @@ -127,6 +198,8 @@ static void virtio_snd_device_realize(DeviceState *dev,= Error **errp) /* set up QEMUSoundCard and audiodev */ AUD_register_card ("virtio_snd_card", &s->card); =20 + s->ctrl_vq =3D virtio_add_queue(vdev, 64, virtio_snd_handle_ctrl); + s->streams =3D g_new0(virtio_snd_pcm_stream *, s->snd_conf.streams); s->pcm_params =3D g_new0(virtio_snd_pcm_params *, s->snd_conf.streams); s->jacks =3D g_new0(virtio_snd_jack *, s->snd_conf.jacks); --=20 2.31.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1619699521; cv=none; d=zohomail.com; s=zohoarc; b=g2cMKeKWAa2fBColmlYqYokJlfqXIUQ0vAXORhLSiG9kw/FyaEIdtdRGUr+Ra6if6zC41VGYcRnZfskGpx5a118U3ZD8HzHdZRRsrPuyentUKzSkZ3U213hURVMfNjuyCt0ZYt8QWApOUVjKYM8P/otV2fndUBz5I4RUXOumolA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619699521; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=3xR38+NzyThoRVU0jSAuoCwnc7m9ZjPRZZg+WXMtU14=; b=IiPmcEQu4v5K7s6Bx5l+gtpUQjRCb+iMFuFSIABMt3BWE4U3fry+WrfNQggrWo6LKIwuYT1SuytynAI5HNB7/dlgU5Xjc5uKj7xiIrfTd0Dc9FD5oijOa0HFmaElx9eLpyaUQL9cTQM6G/6WkteiQKIPxYgPTmZ9l73Sd4yRcPE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619699521121562.149220766462; Thu, 29 Apr 2021 05:32:01 -0700 (PDT) Received: from localhost ([::1]:49274 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lc5pn-0002A8-Sk for importer@patchew.org; Thu, 29 Apr 2021 08:31:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39456) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lc5Qi-0007yN-Os for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:04 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]:33602) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lc5Qg-0000X3-DG for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:04 -0400 Received: by mail-pl1-x62e.google.com with SMTP id b21so6124242plz.0 for ; Thu, 29 Apr 2021 05:06:01 -0700 (PDT) Received: from localhost.localdomain ([2405:201:6008:61b4:c0b1:be0f:608e:9a45]) by smtp.gmail.com with ESMTPSA id p6sm713643pjg.35.2021.04.29.05.05.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Apr 2021 05:06:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=3xR38+NzyThoRVU0jSAuoCwnc7m9ZjPRZZg+WXMtU14=; b=nm6mKVoR3XbiBGMCe1yKRlvZKzWVyIZYydKAF1rA3E/UQ8ghC/K9T75i9JlWWSXJ5C O9XX4mwhgmU88vFHiHEgBv5eFBlDfp7/W1zpdKSqz3o46R5drpivRX+kHzwJidZnOg/v pFcYYjB8oSxmj9v/WXpAPlAS7dlsae+xy8lY+hAMJ3C+WN4fPr1/S5tY/WQWuw+O5Ki6 9+YSWRsk2kxQEPzlH/8s0AzMfxJoPFsNzWsGe4i9lpJt8CfZb+86W6zZeoUlasWl6Qkj SM/xsSL80K/Xrv+C3FgB/BHpEo6Em00Vw2FdVNEOtGCJPn75S+2eea3cssBr3pKDKFi6 +yPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3xR38+NzyThoRVU0jSAuoCwnc7m9ZjPRZZg+WXMtU14=; b=Luwv/tz9Agv3/NHQFZemG4r4WvjGwqvOQth4ReAIy22kSe0QvzM8b/F+q6HeCgkLLx TDDIKpaoUqCnWTv46KBqjB2FDXu19tDzaXiBkY5mQ6T2BU3dmcbFVxc3pJ/6ZHSqYWy9 5TxWXRCP+QmD7i3n8dxKNlho+Z/hSB/ksvo9J7m1cwzHaOY0cDex3raT6NppFIZL9tYq aEdw2x3Oiv/SvncDiit464jvVIJ4Tt+0NlR9YI8lPjkPxf0dWZ5ZHmWk9KPC//W8u/2e 4iBxNeRzbtElHNcoYjBy0H/Yavh1+/4baV54Eqh23bVc1liCBTZy7jMzG5nG9bRUUgO+ CEFA== X-Gm-Message-State: AOAM533m9qtyagVzSo9f+Ss2yXuPRknLxUhtcjA8YRN6R5SaBYC3itg4 Z7mbKcLQ6XK0ZQFCwt2apxI= X-Google-Smtp-Source: ABdhPJwVeM4RD6MHddiOszTHgDUoaYs1tbUc3eHp/PeyeQ3PoQ3VWDUj+jZROKQe+kkkyxK4VSjiFw== X-Received: by 2002:a17:90b:1995:: with SMTP id mv21mr9520896pjb.19.1619697961157; Thu, 29 Apr 2021 05:06:01 -0700 (PDT) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com Subject: [RFC PATCH 12/27] virtio-snd: Add control virtqueue handler Date: Thu, 29 Apr 2021 17:34:30 +0530 Message-Id: <20210429120445.694420-13-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pl1-x62e.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Type: text/plain; charset="utf-8" The handler prints the requests that came in the ctrl virtqueue. Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 71 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index a93674ea72..435870e3ba 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -101,6 +101,75 @@ static uint64_t virtio_snd_get_features(VirtIODevice *= vdev, uint64_t features, return vdev->host_features; } =20 +/* The control queue handler. Pops an element from the control virtqueue, + * checks the header and performs the requested action. Finally marks the + * element as used. + * + * @vdev: VirtIOSound card device + * @vq: Control virtqueue + */ +static void virtio_snd_handle_ctrl(VirtIODevice *vdev, VirtQueue *vq) +{ + virtio_snd_hdr ctrl; + + VirtQueueElement *elem =3D NULL; + size_t sz; + struct iovec *iov, *iov2; + unsigned int iov_cnt; + + for (;;) { + elem =3D virtqueue_pop(vq, sizeof(VirtQueueElement)); + if (!elem) { + break; + } + if (iov_size(elem->in_sg, elem->in_num) < sizeof(ctrl) || + iov_size(elem->out_sg, elem->out_num) < sizeof(ctrl)) { + virtio_snd_err("virtio-snd ctrl missing headers\n"); + virtqueue_detach_element(vq, elem, 0); + g_free(elem); + break; + } + + iov_cnt =3D elem->out_num; + iov2 =3D iov =3D g_memdup(elem->out_sg, + sizeof(struct iovec) * elem->out_num); + sz =3D iov_to_buf(iov, iov_cnt, 0, &ctrl, sizeof(ctrl)); + iov_discard_front(&iov, &iov_cnt, sizeof(ctrl)); + if (sz !=3D sizeof(ctrl)) { + /* error */ + virtio_snd_err("virtio snd ctrl could not read header\n"); + } else if (ctrl.code =3D=3D VIRTIO_SND_R_JACK_INFO) { + virtio_snd_log("VIRTIO_SND_R_JACK_INFO"); + } else if (ctrl.code =3D=3D VIRTIO_SND_R_JACK_REMAP) { + virtio_snd_log("VIRTIO_SND_R_JACK_REMAP"); + } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_INFO) { + virtio_snd_log("VIRTIO_SND_R_PCM_INFO"); + } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_SET_PARAMS) { + virtio_snd_log("VIRTIO_SND_R_PCM_SET_PARAMS"); + } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_PREPARE) { + virtio_snd_log("VIRTIO_SND_R_PCM_PREPARE"); + } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_START) { + virtio_snd_log("VIRTIO_SND_R_PCM_START"); + } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_STOP) { + virtio_snd_log("VIRTIO_SND_R_PCM_STOP"); + } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_RELEASE) { + virtio_snd_log("VIRTIO_SND_R_PCM_RELEASE"); + } else { + /* error */ + virtio_snd_err("virtio snd header not recognized: %d\n", ctrl.= code); + } + + virtio_snd_hdr resp; + resp.code =3D VIRTIO_SND_S_OK; + sz =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &resp, sizeof(re= sp)); + virtqueue_push(vq, elem, sz); + + virtio_notify(vdev, vq); + g_free(iov2); + g_free(elem); + } +} + /* * Initializes the VirtIOSound card device. Validates the configuration * passed by the command line. Initializes the virtqueues. Allocates resou= rces @@ -135,6 +204,8 @@ static void virtio_snd_device_realize(DeviceState *dev,= Error **errp) /* set up QEMUSoundCard and audiodev */ AUD_register_card ("virtio_snd_card", &s->card); =20 + s->ctrl_vq =3D virtio_add_queue(vdev, 64, virtio_snd_handle_ctrl); + s->streams =3D g_new0(virtio_snd_pcm_stream *, s->snd_conf.streams); s->pcm_params =3D g_new0(virtio_snd_pcm_params *, s->snd_conf.streams); s->jacks =3D g_new0(virtio_snd_jack *, s->snd_conf.jacks); --=20 2.25.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1644618868; cv=none; d=zohomail.com; s=zohoarc; b=fN7RWsSQZCXmPdDWsAfhJBdhCSRn8O5muuj0EYxSmnhyzZDl0gOWzpMRvzZaDL0cz6ZK2QD5oqTRa9qOqT6M0sMeVrAaLEGyduY5zGmg7+WwhLBp6Mr63DUnOArSik+/RtIlmFQ8ntJOi6IYmnMiURA4oSUtJSCm9J13c73BS+E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644618868; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=EhwfTETSqRp9VzRZcb3UZ06FGN6/7kr1VwlJIC0IPZw=; b=EVqsGfeMgfqzN1y3OVTnJM+quKi5sPIZr65PwDQ62tXuZHwS/FrUqHml6x9d82tRTfWy8LO8QrMoJf7crD4t9xnler3AMEO2nNMvpD7EAJ3hvRq2roS+ldggKb6ZH6qE7h5Nu/dvQx0CT+IHyr9e4+A61p51YsdJf15HiizMFoI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1644618868362708.5357548790932; Fri, 11 Feb 2022 14:34:28 -0800 (PST) Received: from localhost ([::1]:49080 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nIeUl-0000O2-8P for importer@patchew.org; Fri, 11 Feb 2022 17:34:27 -0500 Received: from eggs.gnu.org ([209.51.188.92]:42218) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIeCi-0006uU-RB for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:15:48 -0500 Received: from [2607:f8b0:4864:20::633] (port=38413 helo=mail-pl1-x633.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nIeCg-0003Jh-Qq for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:15:48 -0500 Received: by mail-pl1-x633.google.com with SMTP id c3so5758615pls.5 for ; Fri, 11 Feb 2022 14:15:46 -0800 (PST) Received: from fedora.. ([2405:201:6008:6f15:d26f:133e:cd11:90dd]) by smtp.googlemail.com with ESMTPSA id j23sm20623576pgb.75.2022.02.11.14.15.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:15:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=EhwfTETSqRp9VzRZcb3UZ06FGN6/7kr1VwlJIC0IPZw=; b=l+VaAWLTjj8XuWrwaSp87EtwP+D2MEMX0M+gMQjFE3tz51NeLKvNv4H2ibwAmv2cAL xwUbh6IXsfKbWS5+n3B4FKQ+OJCjAc86oX8KgJJF182VE2+a7VDVAwKOefeVEwcTjXaR 9Rwdx41AYNvOjC3VW8XoOGwMnsmzj8j67mnlzWRA2TeeCxNilEi55OL26O8lJjP4g3J8 oAHfP96TXjkh+CVHOeOMJdxmSE2eEnDZ4L6QoerLorHfVgOR1tLqpuy7JnQ1SaNLE4Yd 6X3kwtM4RGvCM43HOlq03VBXhdDcFvCQdTZ9RQHur1o6MI7J7LlvoCikN0AAD79OkwtI 1Myg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=EhwfTETSqRp9VzRZcb3UZ06FGN6/7kr1VwlJIC0IPZw=; b=Y+PdEBif91fYIgYHrOxTtcGwLdvCZFlTciIvnEKrcAqL88lw+9VHWf1U0Ur0al5sm3 o6O1IgoDyiTKNkId379YZFOr/2D9kTbUbfWZCrRN23GHYuO38sg/OhOxz5Lw87wwxq7u RtuVM2tWNFGP3DdogLVLV4Pa1H/UuRvMSlY6M5UHHpvcDw0+HrAGhtSZim84nyYAMYXy bW0Olge+AuFBMmyycwBRNr0SsIEWKBKV2DqpYqhiJKxbroIhwqIU2DsysuPxzYPK88jD UXUshbKJCk9NMFnxbbBSUk1IsDGiwjWoHglPJn1ZUyVLqN7RLUgzpJzpD3gw8b9fonTg Srng== X-Gm-Message-State: AOAM530bIxW1k6c1efpdi7dUct13AVmKRWOr6Nx/FpIpMscCju8CsCqA QobTW1k7xamJYxSsyXbhM+T6KXgFgtI= X-Google-Smtp-Source: ABdhPJx7y/E/5y+PIttRH3yqZAAu+DAkqKnRveFvwqLcOIbi9pj8iWHVrW3+d+hHDe2/6OMsLtt0cg== X-Received: by 2002:a17:903:41ce:: with SMTP id u14mr3448178ple.49.1644617745568; Fri, 11 Feb 2022 14:15:45 -0800 (PST) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com, laurent@vivier.eu Subject: [RFC PATCH 12/25] virtio-snd: Add VIRTIO_SND_R_JACK_INFO handler Date: Sat, 12 Feb 2022 03:43:06 +0530 Message-Id: <20220211221319.193404-13-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::633 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pl1-x633.google.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1644618869447100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 81 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 79 insertions(+), 2 deletions(-) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index a87922f91b..c2af26f3cb 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -92,6 +92,80 @@ static uint64_t virtio_snd_get_features(VirtIODevice *vd= ev, uint64_t features, { return vdev->host_features; } +/* + * Get a specific jack from the VirtIOSound card. + * + * @s: VirtIOSound card device. + * @id: Jack id + */ +static virtio_snd_jack *virtio_snd_get_jack(VirtIOSound *s, uint32_t id) +{ + if (id >=3D s->snd_conf.jacks) { + return NULL; + } + return s->jacks[id]; +} + +/* + * Handles VIRTIO_SND_R_JACK_INFO. + * The function writes the info structs and response to the virtqueue elem= ent. + * Returns the used size in bytes. + * + * @s: VirtIOSound card + * @elem: The request element from control queue + */ +static uint32_t virtio_snd_handle_jack_info(VirtIOSound *s, + VirtQueueElement *elem) +{ + virtio_snd_query_info req; + size_t sz =3D iov_to_buf(elem->out_sg, elem->out_num, 0, &req, sizeof(= req)); + assert(sz =3D=3D sizeof(virtio_snd_query_info)); + + virtio_snd_hdr resp; + + if (iov_size(elem->in_sg, elem->in_num) < + sizeof(virtio_snd_hdr) + req.count * req.size) { + virtio_snd_err("jack info: buffer too small got: %lu needed: %lu\n= ", + iov_size(elem->in_sg, elem->in_num), + sizeof(virtio_snd_hdr) + req.count * req.size); + resp.code =3D VIRTIO_SND_S_BAD_MSG; + goto done; + } + + virtio_snd_jack_info *jack_info =3D g_new0(virtio_snd_jack_info, req.c= ount); + for (int i =3D req.start_id; i < req.count + req.start_id; i++) { + virtio_snd_jack *jack =3D virtio_snd_get_jack(s, i); + if (!jack) { + virtio_snd_err("Invalid jack id: %d\n", i); + resp.code =3D VIRTIO_SND_S_BAD_MSG; + goto done; + } + + jack_info[i - req.start_id].hdr.hda_fn_nid =3D jack->hda_fn_nid; + jack_info[i - req.start_id].features =3D jack->features; + jack_info[i - req.start_id].hda_reg_defconf =3D jack->hda_reg_defc= onf; + jack_info[i - req.start_id].hda_reg_caps =3D jack->hda_reg_caps; + jack_info[i - req.start_id].connected =3D jack->connected; + memset(jack_info[i - req.start_id].padding, 0, + sizeof(jack_info[i - req.start_id].padding)); + } + + resp.code =3D VIRTIO_SND_S_OK; +done: + sz =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &resp, sizeof(resp)); + assert(sz =3D=3D sizeof(virtio_snd_hdr)); + + if (resp.code =3D=3D VIRTIO_SND_S_BAD_MSG) { + g_free(jack_info); + return sz; + } + + sz =3D iov_from_buf(elem->in_sg, elem->in_num, sizeof(virtio_snd_hdr), + jack_info, sizeof(virtio_snd_jack_info) * req.count); + assert(sz =3D=3D req.count * req.size); + g_free(jack_info); + return sizeof(virtio_snd_hdr) + sz; +} =20 /* The control queue handler. Pops an element from the control virtqueue, * checks the header and performs the requested action. Finally marks the @@ -102,6 +176,7 @@ static uint64_t virtio_snd_get_features(VirtIODevice *v= dev, uint64_t features, */ static void virtio_snd_handle_ctrl(VirtIODevice *vdev, VirtQueue *vq) { + VirtIOSound *s =3D VIRTIO_SOUND(vdev); virtio_snd_hdr ctrl; =20 VirtQueueElement *elem =3D NULL; @@ -131,7 +206,8 @@ static void virtio_snd_handle_ctrl(VirtIODevice *vdev, = VirtQueue *vq) /* error */ virtio_snd_err("virtio snd ctrl could not read header\n"); } else if (ctrl.code =3D=3D VIRTIO_SND_R_JACK_INFO) { - virtio_snd_log("VIRTIO_SND_R_JACK_INFO"); + sz =3D virtio_snd_handle_jack_info(s, elem); + goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_JACK_REMAP) { virtio_snd_log("VIRTIO_SND_R_JACK_REMAP"); } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_INFO) { @@ -156,8 +232,9 @@ static void virtio_snd_handle_ctrl(VirtIODevice *vdev, = VirtQueue *vq) virtio_snd_hdr resp; resp.code =3D VIRTIO_SND_S_OK; sz =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &resp, sizeof(re= sp)); - virtqueue_push(vq, elem, sz); =20 +done: + virtqueue_push(vq, elem, sz); virtio_notify(vdev, vq); g_free(iov2); g_free(elem); --=20 2.31.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1619698171; cv=none; d=zohomail.com; s=zohoarc; b=bI8BeIlhYoaazIdXpf06V9JjhdV4tqUSXWVziPsswUifQ7zYFCkA3ZSpF5DdRT5IqJ7Da39NgpmJJJIo2398ymJLB7mQEPvg6IAec0dCCwN2/qzGIHAwjHSuQ9EIKRL1nu5QKPJGcvvFePDs3je4+qR5u0wi5vLxZWyuv67L6sc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619698171; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=fhUCjea0Osiy4d9haQy+05RIOPgeL7lswjdR+LAtpC0=; b=HVa2x5umfHgHXSVVtdZShlVKBmAsKumjTlg2h7LRPFwTT3QRLA51tJ15jl3dX3JVJwNYdhvFlOd6dTg21FIvyMMe/R0CiK2fYc1EGe8kXSNh+40IGgq6ihyzHun79bDGIXDyp/10b3IkvKzsmiT/5hRH7i/wAgCLqagwqNhvoJc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 161969817123840.14866266008892; Thu, 29 Apr 2021 05:09:31 -0700 (PDT) Received: from localhost ([::1]:35792 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lc5Tz-0001QM-4k for importer@patchew.org; Thu, 29 Apr 2021 08:09:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39478) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lc5Ql-00082V-RV for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:08 -0400 Received: from mail-pg1-x52a.google.com ([2607:f8b0:4864:20::52a]:39438) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lc5Qj-0000YZ-Sx for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:07 -0400 Received: by mail-pg1-x52a.google.com with SMTP id s22so25870533pgk.6 for ; Thu, 29 Apr 2021 05:06:05 -0700 (PDT) Received: from localhost.localdomain ([2405:201:6008:61b4:c0b1:be0f:608e:9a45]) by smtp.gmail.com with ESMTPSA id p6sm713643pjg.35.2021.04.29.05.06.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Apr 2021 05:06:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=fhUCjea0Osiy4d9haQy+05RIOPgeL7lswjdR+LAtpC0=; b=NHMmanD4xwwW/dZSgXzPjkad2qlbOoND5a9IDkrkCNEYgDQpkSzG+ChK4TGJEJz+8i w8zmKuF/Z/8KR1yHVIhvGr8JAuq+Z9VeiOBbfbVg4dvtg36aCrhPHdp+ZoWbfpHj7FDQ WKoF0s1+A9eNdzaDSLgU3U2wXAp/m8q1TZw9c+cQvojCbB3pGyVe48r961XBn55c048C LcYxx7PgH+YVwT2NRC1l7fV095x1XhUqcAWYxYt884//PHAyW1h3SMZQ3ay1tNHWxaTi REVlZLkJ9INB0K0k0kmLx+zAZhv4sClJcBPfl6RdzX/4iXapeeZICMkBJkzg2KqGrfOR SK+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=fhUCjea0Osiy4d9haQy+05RIOPgeL7lswjdR+LAtpC0=; b=DifZUBSp7fXXmYuz2fhRIJ8f5ISCJfz5EvKZFObrEaEuQP5WGWNWgqdU29bUAeZTh6 Ay9c7KUMFtnsmyi83v+wLTL3dYo062pHHHexca90L7kvZC+dh4HBSCdLCFVDVJvYn/eO eltMInjL6hmVorZVFoMhLIa9JdNeSfzV8UftTGZWaWD8IEkz6jsvHn2K8iWbcbyuc09d Yj8+3cFtnm2gHWEqFYZhkqGJpPtqY0rZSFzFpx5MuzZULdyZjngFMVe2VfsolNvJlM5n Ho4p1Cg91ZW3FUvpIYBowIjqcCf6dElUld0iYiJsvg1SMrwlN9zsPprrlrMq5c6GxXT2 8qNg== X-Gm-Message-State: AOAM533Wlac9reb5Xw0J/otZAhiZ6zVwfsF1wGrx96V+gECQYRkL8B/0 vZd3H6nIUQbCldmAUE8PZIRw3IQ8ORaGowne+tY= X-Google-Smtp-Source: ABdhPJxnKZ8We9gH9S2ftxCLzqZte6/w1e+AhFaKpKWGKz75CsasQj61Adhc2RhGyAoQCeioaGtP4Q== X-Received: by 2002:a63:4d50:: with SMTP id n16mr30987930pgl.237.1619697964397; Thu, 29 Apr 2021 05:06:04 -0700 (PDT) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com Subject: [RFC PATCH 13/27] virtio-snd: Add VIRTIO_SND_R_JACK_INFO handler Date: Thu, 29 Apr 2021 17:34:31 +0530 Message-Id: <20210429120445.694420-14-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52a; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pg1-x52a.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 81 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 79 insertions(+), 2 deletions(-) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index 435870e3ba..d50234f9a8 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -100,6 +100,80 @@ static uint64_t virtio_snd_get_features(VirtIODevice *= vdev, uint64_t features, { return vdev->host_features; } +/* + * Get a specific jack from the VirtIOSound card. + * + * @s: VirtIOSound card device. + * @id: Jack id + */ +static virtio_snd_jack *virtio_snd_get_jack(VirtIOSound *s, uint32_t id) +{ + if (id >=3D s->snd_conf.jacks) { + return NULL; + } + return s->jacks[id]; +} + +/* + * Handles VIRTIO_SND_R_JACK_INFO. + * The function writes the info structs and response to the virtqueue elem= ent. + * Returns the used size in bytes. + * + * @s: VirtIOSound card + * @elem: The request element from control queue + */ +static uint32_t virtio_snd_handle_jack_info(VirtIOSound *s, + VirtQueueElement *elem) +{ + virtio_snd_query_info req; + size_t sz =3D iov_to_buf(elem->out_sg, elem->out_num, 0, &req, sizeof(= req)); + assert(sz =3D=3D sizeof(virtio_snd_query_info)); + + virtio_snd_hdr resp; + + if (iov_size(elem->in_sg, elem->in_num) < + sizeof(virtio_snd_hdr) + req.count * req.size) { + virtio_snd_err("jack info: buffer too small got: %lu needed: %lu\n= ", + iov_size(elem->in_sg, elem->in_num), + sizeof(virtio_snd_hdr) + req.count * req.size); + resp.code =3D VIRTIO_SND_S_BAD_MSG; + goto done; + } + + virtio_snd_jack_info *jack_info =3D g_new0(virtio_snd_jack_info, req.c= ount); + for (int i =3D req.start_id; i < req.count + req.start_id; i++) { + virtio_snd_jack *jack =3D virtio_snd_get_jack(s, i); + if (!jack) { + virtio_snd_err("Invalid jack id: %d\n", i); + resp.code =3D VIRTIO_SND_S_BAD_MSG; + goto done; + } + + jack_info[i - req.start_id].hdr.hda_fn_nid =3D jack->hda_fn_nid; + jack_info[i - req.start_id].features =3D jack->features; + jack_info[i - req.start_id].hda_reg_defconf =3D jack->hda_reg_defc= onf; + jack_info[i - req.start_id].hda_reg_caps =3D jack->hda_reg_caps; + jack_info[i - req.start_id].connected =3D jack->connected; + memset(jack_info[i - req.start_id].padding, 0, + sizeof(jack_info[i - req.start_id].padding)); + } + + resp.code =3D VIRTIO_SND_S_OK; +done: + sz =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &resp, sizeof(resp)); + assert(sz =3D=3D sizeof(virtio_snd_hdr)); + + if (resp.code =3D=3D VIRTIO_SND_S_BAD_MSG) { + g_free(jack_info); + return sz; + } + + sz =3D iov_from_buf(elem->in_sg, elem->in_num, sizeof(virtio_snd_hdr), + jack_info, sizeof(virtio_snd_jack_info) * req.count); + assert(sz =3D=3D req.count * req.size); + g_free(jack_info); + return sizeof(virtio_snd_hdr) + sz; +} =20 /* The control queue handler. Pops an element from the control virtqueue, * checks the header and performs the requested action. Finally marks the @@ -110,6 +184,7 @@ static uint64_t virtio_snd_get_features(VirtIODevice *v= dev, uint64_t features, */ static void virtio_snd_handle_ctrl(VirtIODevice *vdev, VirtQueue *vq) { + VirtIOSound *s =3D VIRTIO_SOUND(vdev); virtio_snd_hdr ctrl; =20 VirtQueueElement *elem =3D NULL; @@ -139,7 +214,8 @@ static void virtio_snd_handle_ctrl(VirtIODevice *vdev, = VirtQueue *vq) /* error */ virtio_snd_err("virtio snd ctrl could not read header\n"); } else if (ctrl.code =3D=3D VIRTIO_SND_R_JACK_INFO) { - virtio_snd_log("VIRTIO_SND_R_JACK_INFO"); + sz =3D virtio_snd_handle_jack_info(s, elem); + goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_JACK_REMAP) { virtio_snd_log("VIRTIO_SND_R_JACK_REMAP"); } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_INFO) { @@ -162,8 +238,9 @@ static void virtio_snd_handle_ctrl(VirtIODevice *vdev, = VirtQueue *vq) virtio_snd_hdr resp; resp.code =3D VIRTIO_SND_S_OK; sz =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &resp, sizeof(re= sp)); - virtqueue_push(vq, elem, sz); =20 +done: + virtqueue_push(vq, elem, sz); virtio_notify(vdev, vq); g_free(iov2); g_free(elem); --=20 2.25.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1644618658; cv=none; d=zohomail.com; s=zohoarc; b=a7tR7mu99OmMpDzqAJ3O8JP1MVkfvFINkpDRqoqHV+bvfIt207Lk/c2VFmoDNjE5QT5fI3cBkfSiFrG5zBjzifIuM/NbXFy2vugZw3GaO9Hh/gzkT+rO+VqlgAT9OfegJL/4oSpFgUjHLkdMMZ7kbYbJfxcDaumKkUXeyRzx+I0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644618658; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=KE39jHISQAB6cFkovEdp7pF20zS0czcpSv+GYIJ8aWA=; b=Vb6g6ULtJaLCbtj5oNk7tD0UDzogFO5enzjr3zpieYpdMgn+39gG4DYEk049ewT+mqMd6KXIx7BH2P0BWecOeepmCJ8jo9eqRdXSYDOJ1kCePQs9LMS0qeZdZM6+pBXZkgjfuP6DlGYFfhd8hId4s5Ed+o2y61wxd5D7jiVfnk4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1644618658796186.6296414511396; Fri, 11 Feb 2022 14:30:58 -0800 (PST) Received: from localhost ([::1]:41816 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nIeRN-0003fh-Pe for importer@patchew.org; Fri, 11 Feb 2022 17:30:57 -0500 Received: from eggs.gnu.org ([209.51.188.92]:42256) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIeCw-0007IX-2I for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:16:05 -0500 Received: from [2607:f8b0:4864:20::102b] (port=56225 helo=mail-pj1-x102b.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nIeCq-0003L6-St for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:16:01 -0500 Received: by mail-pj1-x102b.google.com with SMTP id om7so9249759pjb.5 for ; Fri, 11 Feb 2022 14:15:56 -0800 (PST) Received: from fedora.. ([2405:201:6008:6f15:d26f:133e:cd11:90dd]) by smtp.googlemail.com with ESMTPSA id j23sm20623576pgb.75.2022.02.11.14.15.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:15:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=KE39jHISQAB6cFkovEdp7pF20zS0czcpSv+GYIJ8aWA=; b=AVwdh87bVvX5ZlCREaWTbEnzG3eiAApMjUbTqm/mf74Cyd8PAb5w7FPcPHLQPE6zbt +js0jg2OxCr21ZB6IVIOf1jpcYYU8mPgA5eBcu8JtJ+qGDoDNYx97jo2TURmqjCM90tO uydV0n3Bx+AFEPtMO+vCsessXKVnjJWDudG68k88LRBNckdoAilUwVy+8++ovA2j/7+Y ZUqWHoQB6vvWKYlKl7KYEKKQx+WWis/SZhPRjUlTsVkduPjsnnw6uMgTUep1D+evNjs+ SD2bO9klDnvrRa8e0KK3vQ8SxPnXan2WNNzdVKqEixfHgDD/cVXWBV4a09UewbvL8hPQ NijQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=KE39jHISQAB6cFkovEdp7pF20zS0czcpSv+GYIJ8aWA=; b=gbp+3DPvDQGq2QXifK+I6/7AySFJ+GwA3Mr+R2bFqGYozW34Wq/X8LUuS/rYBnqgt3 4mxy6wMpS0q7IEbstJz/IgGuztAK2ZysgRx/pDGjWdCR3KymO2sG+RD3S78qzGxDQzxO JiuVe7zCS3Ae+WFQkEsKk1yKWP0B6f29segRs3ZlUGl/O6QtYSQwj/2NXuH5B/e3TjFk Xg0EXGHgTMmiq11Gs5zHrYtd/Wjn8KiOmme+XW0kBAEXblh4GZHEIbRbuy0NR3nI4mDS bQTDbobfHx3Qhk+kD2ArM0BlT38FEJgiphVU2R7sxXjqhhcBli6zb2I5yutUmg6l0ZXY /JJg== X-Gm-Message-State: AOAM532LAlZD1+Jxyj8c1CTPwyMVaqqMVlcreyIJMICMRhJhuZ3Bnswv wO1zaCKXTGKDqJ6aEBrqzic= X-Google-Smtp-Source: ABdhPJxQfLvF9oHYolDBeA0q9Q/68pzHOqLKjDgImw7YyBUF1xYcLfsJVGkSLfzDMtbdEbMTJdneCA== X-Received: by 2002:a17:90b:4c91:: with SMTP id my17mr2508032pjb.221.1644617755653; Fri, 11 Feb 2022 14:15:55 -0800 (PST) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com, laurent@vivier.eu Subject: [RFC PATCH 13/25] virtio-snd: Add stub for VIRTIO_SND_R_JACK_REMAP handler Date: Sat, 12 Feb 2022 03:43:07 +0530 Message-Id: <20220211221319.193404-14-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::102b (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102b; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pj1-x102b.google.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1644618659658100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index c2af26f3cb..aec3e86db2 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -167,6 +167,27 @@ done: return sizeof(virtio_snd_hdr) + sz; } =20 +/* + * Handles VIRTIO_SND_R_JACK_REMAP. + * Not implemented yet. + * + * @s: VirtIOSound card + * @elem: The request element from control queue + */ +static uint32_t virtio_snd_handle_jack_remap(VirtIOSound *s, + VirtQueueElement *elem) +{ + virtio_snd_hdr resp; + resp.code =3D VIRTIO_SND_S_OK; + + /* TODO: implement remap */ + + size_t sz; + sz =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &resp, sizeof(resp)); + assert(sz =3D=3D sizeof(virtio_snd_hdr)); + return sz; +} + /* The control queue handler. Pops an element from the control virtqueue, * checks the header and performs the requested action. Finally marks the * element as used. @@ -209,7 +230,8 @@ static void virtio_snd_handle_ctrl(VirtIODevice *vdev, = VirtQueue *vq) sz =3D virtio_snd_handle_jack_info(s, elem); goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_JACK_REMAP) { - virtio_snd_log("VIRTIO_SND_R_JACK_REMAP"); + sz =3D virtio_snd_handle_jack_remap(s, elem); + goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_INFO) { virtio_snd_log("VIRTIO_SND_R_PCM_INFO"); } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_SET_PARAMS) { --=20 2.31.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1644619070; cv=none; d=zohomail.com; s=zohoarc; b=QyeWab/o/8KZISiPCTbe3WjEMpMUwaf/RAq/J94fD+1CMSMO3gJkcwqx6W5iFtBymyFvmKc7grBBH9wtQTOGCSyK5WoU8QL4pWXEM0kLatRApJMx/lcYor6YjQOhIa6DfXgxqprYxcyzYJbQlHSZh1sAXVxAG37GXUfuc9nlWXY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644619070; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=q5eYOOn7M4bFWzYVkQXLPOt/0HOarT7RU0dsGoD8OIg=; b=CbJGLHkr27CAIGxIJxUjMts0B7Q1JSUW3xSVW8z7uoe7qybhEEMl7vj3W/wQgCMrCS3cn65dsR5vaxwKXH+IGZ181h4QW07qwfm8AQr9/TbZhS2UCFyyG0HaZuThQiXaMxyZADPVwU3ki0DeH7907offHWhLyHn9UFbR73UL/kY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1644619070849546.272970076431; Fri, 11 Feb 2022 14:37:50 -0800 (PST) Received: from localhost ([::1]:54328 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nIeY1-0004Mm-PX for importer@patchew.org; Fri, 11 Feb 2022 17:37:49 -0500 Received: from eggs.gnu.org ([209.51.188.92]:42266) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIeCx-0007Im-24 for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:16:06 -0500 Received: from [2607:f8b0:4864:20::1034] (port=54107 helo=mail-pj1-x1034.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nIeCu-0003LT-PI for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:16:02 -0500 Received: by mail-pj1-x1034.google.com with SMTP id qe15so9259208pjb.3 for ; Fri, 11 Feb 2022 14:16:00 -0800 (PST) Received: from fedora.. ([2405:201:6008:6f15:d26f:133e:cd11:90dd]) by smtp.googlemail.com with ESMTPSA id j23sm20623576pgb.75.2022.02.11.14.15.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:15:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=q5eYOOn7M4bFWzYVkQXLPOt/0HOarT7RU0dsGoD8OIg=; b=hnRLOigjwdaXmTziorK1KzXfUom9dMUH+3kNflmAsC84aUaDjJAXsvFYz83ulqthdZ jAJ3Cvte+RSSac9WSoNLxyuDj1H9j2x6I8Q4Ch7VMtjxnBivayn8r+LzmyO7l3PoJhOB a/CuhnX4f+5TP57jP10+1a52Ts84YOdFubBPSHLts6Xd7Y33waIhrSE2CdrtQNEQkb2+ pyda5FSca/c1GzvtGeJ0DilbhziFgk71bQrJTDDu6REgC3fum9S3pkhECmYYTB7JNzmK VZtEOyWPEmjqS3Z5TD04BAI5P5pXTzn+fvBpEdQL9dBQ4JABvhNktpQoSE93DO9949U/ 9+OA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=q5eYOOn7M4bFWzYVkQXLPOt/0HOarT7RU0dsGoD8OIg=; b=ckgr0bi55RvjauYH51ay/BZKEOAQorvQQ3kXsGGkpF46M2H7t61URN4TK2SwdGGaCI /6cKbGeY07ZFst4FiF5yAu0wGO9+ALCE5W0Z3X2CxCduLTe/dmjwt/948eaGC7THAKtX 9g5milGV38MUVj1rI05Uajc2AFo/66/993YtPYTwpc6bC7Ko+ZKiUHDhfJIzp6N37YhU 5KD8tQKnhGWhtE+QHWX7J8FaEL/QkC0HKfi7sw/Z3DC+8LhsuOHXGYPi1BNUHR+eL93I 9P+U7v1ClGJWUzPfMw/3Zcrw2FBe2TeLuuvtaboRjHWSdZKf9cTfsqlQVC1h9EmrtiFQ fxTQ== X-Gm-Message-State: AOAM5303QaS5KgoT5yA101em8uI3p2pNj5C9X5y+yDIfVuxDPpInVHtl t5p8lBT/kDIkCqK3VoK8T5/MiH4x6tg= X-Google-Smtp-Source: ABdhPJw6cF93BOsPPiEWU73A/hhdotCOx9z4LqMzXpNCJhyJiXBH0a+ie4BjAdUkYm5ddKRb5lpGhA== X-Received: by 2002:a17:902:b487:: with SMTP id y7mr3485726plr.81.1644617759613; Fri, 11 Feb 2022 14:15:59 -0800 (PST) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com, laurent@vivier.eu Subject: [RFC PATCH 14/25] virtio-snd: Add VIRTIO_SND_R_PCM_INFO handler Date: Sat, 12 Feb 2022 03:43:08 +0530 Message-Id: <20220211221319.193404-15-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::1034 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1034; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pj1-x1034.google.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1644619072581100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 88 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 87 insertions(+), 1 deletion(-) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index aec3e86db2..a53a6be168 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -188,6 +188,91 @@ static uint32_t virtio_snd_handle_jack_remap(VirtIOSou= nd *s, return sz; } =20 +/* + * Get a specific stream from the virtio sound card device. + * + * @s: VirtIOSound card device + * @stream: Stream id + * + * Returns NULL if function fails. + * TODO: Make failure more explicit. Output can be NULL if the stream numb= er + * is valid but the stream hasn't been allocated yet. + */ +static virtio_snd_pcm_stream *virtio_snd_pcm_get_stream(VirtIOSound *s, + uint32_t stream) +{ + if (stream >=3D s->snd_conf.streams) { + virtio_snd_err("Invalid stream request %d\n", stream); + return NULL; + } + return s->streams[stream]; +} + +/* + * Handle the VIRTIO_SND_R_PCM_INFO request. + * The function writes the info structs to the request element. + * Returns the used size in bytes. + * + * @s: VirtIOSound card device + * @elem: The request element from control queue + */ +static uint32_t virtio_snd_handle_pcm_info(VirtIOSound *s, + VirtQueueElement *elem) +{ + virtio_snd_query_info req; + uint32_t sz; + sz =3D iov_to_buf(elem->out_sg, elem->out_num, 0, &req, sizeof(req)); + assert(sz =3D=3D sizeof(virtio_snd_query_info)); + + virtio_snd_hdr resp; + if (iov_size(elem->in_sg, elem->in_num) < + sizeof(virtio_snd_hdr) + req.size * req.count) { + virtio_snd_err("pcm info: buffer too small, got: %lu, needed: %lu\= n", + iov_size(elem->in_sg, elem->in_num), + sizeof(virtio_snd_pcm_info)); + resp.code =3D VIRTIO_SND_S_BAD_MSG; + goto done; + } + + virtio_snd_pcm_stream *stream; + virtio_snd_pcm_info *pcm_info =3D g_new0(virtio_snd_pcm_info, req.coun= t); + for (int i =3D req.start_id; i < req.start_id + req.count; i++) { + stream =3D virtio_snd_pcm_get_stream(s, i); + + if (!stream) { + virtio_snd_err("Invalid stream id: %d\n", i); + resp.code =3D VIRTIO_SND_S_BAD_MSG; + goto done; + } + + pcm_info[i - req.start_id].hdr.hda_fn_nid =3D stream->hda_fn_nid; + pcm_info[i - req.start_id].features =3D stream->features; + pcm_info[i - req.start_id].formats =3D stream->formats; + pcm_info[i - req.start_id].rates =3D stream->rates; + pcm_info[i - req.start_id].direction =3D stream->direction; + pcm_info[i - req.start_id].channels_min =3D stream->channels_min; + pcm_info[i - req.start_id].channels_max =3D stream->channels_max; + + memset(&pcm_info[i].padding, 0, sizeof(pcm_info[i].padding)); + } + + resp.code =3D VIRTIO_SND_S_OK; +done: + sz =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &resp, sizeof(resp)); + assert(sz =3D=3D sizeof(virtio_snd_hdr)); + + if (resp.code =3D=3D VIRTIO_SND_S_BAD_MSG) { + g_free(pcm_info); + return sz; + } + + sz =3D iov_from_buf(elem->in_sg, elem->in_num, sizeof(virtio_snd_hdr), + pcm_info, sizeof(virtio_snd_pcm_info) * req.count); + assert(sz =3D=3D req.size * req.count); + g_free(pcm_info); + return sizeof(virtio_snd_hdr) + sz; +} + /* The control queue handler. Pops an element from the control virtqueue, * checks the header and performs the requested action. Finally marks the * element as used. @@ -233,7 +318,8 @@ static void virtio_snd_handle_ctrl(VirtIODevice *vdev, = VirtQueue *vq) sz =3D virtio_snd_handle_jack_remap(s, elem); goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_INFO) { - virtio_snd_log("VIRTIO_SND_R_PCM_INFO"); + sz =3D virtio_snd_handle_pcm_info(s, elem); + goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_SET_PARAMS) { virtio_snd_log("VIRTIO_SND_R_PCM_SET_PARAMS"); } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_PREPARE) { --=20 2.31.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1619699741; cv=none; d=zohomail.com; s=zohoarc; b=i5wWcrsXVcVr1lmNbTpOXGBi/q+Kjgli90iQ42fs4eBJkqi4D229rY1q4keL2Ee2MmT6O97a2W2gALY4aqTr9zfmq4eY0mmeDyJygbtdFaxuASRV2OLY/yt1jd1J/tmAoiyPsXhL15uVDkd1WemYDoXrCTzDFY7XAQHaKjUCnlA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619699741; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=tg/U2oK8rUw630cKi7xvIBA7fZI+pAobioAzHX/Tt4E=; b=Fdmqjq2NijvQRogskOM89u79F6AZiS/kwOBrJ3qbEC4hKmJbQLxbltTqSHml1Dq5jha/arfUfrb9RFyo1LuGIJpWKFGUYHXgwStKMCr1SqaJhSKuMLflVGo00Q5Ati1S+Qgv6KfRpZ/x7SVC9CACkypTv8aLl0NLGyHOMaNY6zw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619699741753357.5465253252371; Thu, 29 Apr 2021 05:35:41 -0700 (PDT) Received: from localhost ([::1]:56206 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lc5tM-00051t-LR for importer@patchew.org; Thu, 29 Apr 2021 08:35:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39584) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lc5Qy-00088X-4j for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:20 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]:34367) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lc5Qm-0000Zp-6G for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:19 -0400 Received: by mail-pf1-x432.google.com with SMTP id 10so3396833pfl.1 for ; Thu, 29 Apr 2021 05:06:07 -0700 (PDT) Received: from localhost.localdomain ([2405:201:6008:61b4:c0b1:be0f:608e:9a45]) by smtp.gmail.com with ESMTPSA id p6sm713643pjg.35.2021.04.29.05.06.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Apr 2021 05:06:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=tg/U2oK8rUw630cKi7xvIBA7fZI+pAobioAzHX/Tt4E=; b=tLS9efXMRVcao+CvXfV1rjNKK+RNfkeutNHIfJidUW41WgH56RcFrpCLQs/xJYKrW6 yG5uXXTIJHg0k9DjeL7fze+XdnPfw4gXAK9iw5mIfmuY5tja5HsIDJAdK9mnhdLplQKW dU7IGzUYQdjovZ5AaZPrjy3xqIEJlwwb7WU7hTtOBSIF2OxJPPDWXi0t9erCKksgBqlQ sXocQPPqG/kw1ggmgUVjZvyVXOYeX8P/+z0cvfBgLaFyL+xidwXyTvefQXBjvGKjn6Ff qjg8O3I44f2a6bQtKFxViyif26qQCg4yTqyhrPy65NIfq1tHYh/M4ohV3h0NeSNRYh+Z S8yg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=tg/U2oK8rUw630cKi7xvIBA7fZI+pAobioAzHX/Tt4E=; b=QFaMm/RGF5vplvxgOZetR8QginkPf6LzKILvfv1ThE1F+FqJxQWt78m8vqcx6z+NdD 0mSQtoBfIxzT6SDqvHGQo8zDxZjLnmVCbGXqDpFqy63hsVLuwgW0ILD3Ii82k11DE/jw Oa3FNUVY13qOnWFfl3AyvFy4a1WDg+8PD2CkJ9sWo7paKfb04GduzfSqcWCDzbe1C6oY SrEYkzIkiK+8voY8sc+lviFfiwVvnpUfQL51oECiL6eAk6/9iHAmVzcnDQeTQH3fRSVv 9J/rt72gP4aBrT5V2kSoPjJFM9kaoLLGHHS3fm8YPesSetA0kLOX2xk4uyd6xTxIa6LJ Zrqw== X-Gm-Message-State: AOAM5339wDX26yFWWheGzqNrcGj6Zrnod/pBATg9SpY/FJ8Lywe/ubeX 17kgN9tokOYir/gkyV+j21R3r2++r2X8sOqWwDc= X-Google-Smtp-Source: ABdhPJxVkaqbIfeqVsXM2TDt9ZjrgL9DmWH0JihpnHh0aTQXWGXWaa6pJVmbiy9IjTCiAXmdSdXWxQ== X-Received: by 2002:a65:624e:: with SMTP id q14mr15734121pgv.90.1619697966880; Thu, 29 Apr 2021 05:06:06 -0700 (PDT) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com Subject: [RFC PATCH 14/27] virtio-snd: Add stub for VIRTIO_SND_R_JACK_REMAP handler Date: Thu, 29 Apr 2021 17:34:32 +0530 Message-Id: <20210429120445.694420-15-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pf1-x432.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index d50234f9a8..527eed6132 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -175,6 +175,27 @@ done: return sizeof(virtio_snd_hdr) + sz; } =20 +/* + * Handles VIRTIO_SND_R_JACK_REMAP. + * Not implemented yet. + * + * @s: VirtIOSound card + * @elem: The request element from control queue + */ +static uint32_t virtio_snd_handle_jack_remap(VirtIOSound *s, + VirtQueueElement *elem) +{ + virtio_snd_hdr resp; + resp.code =3D VIRTIO_SND_S_OK; + + /* TODO: implement remap */ + + size_t sz; + sz =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &resp, sizeof(resp)); + assert(sz =3D=3D sizeof(virtio_snd_hdr)); + return sz; +} + /* The control queue handler. Pops an element from the control virtqueue, * checks the header and performs the requested action. Finally marks the * element as used. @@ -217,7 +238,8 @@ static void virtio_snd_handle_ctrl(VirtIODevice *vdev, = VirtQueue *vq) sz =3D virtio_snd_handle_jack_info(s, elem); goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_JACK_REMAP) { - virtio_snd_log("VIRTIO_SND_R_JACK_REMAP"); + sz =3D virtio_snd_handle_jack_remap(s, elem); + goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_INFO) { virtio_snd_log("VIRTIO_SND_R_PCM_INFO"); } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_SET_PARAMS) { --=20 2.25.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1644618139; cv=none; d=zohomail.com; s=zohoarc; b=HHwwvoJ1o1gjMu07icyWWm6BbJhKJmZYdtIQFB/l6fa9uqOpsIaLv0QE8oLfEBfxhS0A0y/ubYKHI2Av38zxhU1iQmw8sXaW1azL8lDPIA/LkWFg5WqGLYI37jX4yRV02HbEcD78HbAsFJq4MBYrY0+F7xxmzPrr/CCfwaMbcuo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644618139; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=5TxdZfLtr0hZzhian8fAyxP70Y+8r0ytCkNVdMsflFY=; b=aKXwKUvHzcQRcEobn4Cee1SavI0l14l5XRDs6DihE9FF2FhPm8Qc6nIFjHSBNiCGsLcs1TzLWNQFJKNrq1rjvB4diaE1tima/t/10lPFlDSv1M8AEowvbhQ/FQQnnT6JNdesOXLY26xJFjfM0lofLly+xMe0Eg5Ktck1ewpi9yI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1644618139983924.6512092920171; Fri, 11 Feb 2022 14:22:19 -0800 (PST) Received: from localhost ([::1]:48726 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nIeJ1-0005yb-NN for importer@patchew.org; Fri, 11 Feb 2022 17:22:19 -0500 Received: from eggs.gnu.org ([209.51.188.92]:42298) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIeD3-0007Kh-4j for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:16:11 -0500 Received: from [2607:f8b0:4864:20::102d] (port=45915 helo=mail-pj1-x102d.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nIeD0-0003MJ-3c for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:16:07 -0500 Received: by mail-pj1-x102d.google.com with SMTP id q11-20020a17090a304b00b001b94d25eaecso5571844pjl.4 for ; Fri, 11 Feb 2022 14:16:05 -0800 (PST) Received: from fedora.. ([2405:201:6008:6f15:d26f:133e:cd11:90dd]) by smtp.googlemail.com with ESMTPSA id j23sm20623576pgb.75.2022.02.11.14.15.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:16:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5TxdZfLtr0hZzhian8fAyxP70Y+8r0ytCkNVdMsflFY=; b=cuHWCZFRWGyGohHTS0LXA6RdLI0fUlHgKLneVdhyvZBEY0TBdgWv0zPZDsz6khhVOc Pm8tdSHerNaRQIDswzErqNE92mB1Nn/5+r3Pgd+jtQs3+fSlKZMwHeC2aCbt1v9xI2+d 2uPWoMe1ikqmk9KyfXfcpWnW+Psyfylcw4IkK6CTv1SWtG1HfUOBrDjv3sUpNiZh30Ou JD/F0TJQj/Zc6BOaZxoseT+N6X2gp/FzIwHznw0wZFcDq0ahJ9W3U+fW1ibV9qCl70XB rliIBmAFYUvI6aT1BwFuXrnJGiPMwOpT/zI4pM3/rhsAmeeqgmK32T/Dti0Rp0bu2ogi WLbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5TxdZfLtr0hZzhian8fAyxP70Y+8r0ytCkNVdMsflFY=; b=zKH/XoLhBjdvqD1DimhY4aqS5+12SMaBhMtjcQ5trjxEdmKvW4M/zRMqz8Ly3WlC0X FO+iy/3h5ll4j+tQ9axFfFy4JYy7Pfe2P5p9ThQEHcpFX8wbr4zA7WYqmk+RSHUbAZ0t cbDnlKHorPlFeADoV6mzWXc64GJRXwkqG+uI6uJLHHy21VMGrdu+NQyiGvh0e0BNJnPl cf9rEy3aTSRGOQns9Z1gsP3+F+eLDw5IV/VAg25RQUPeWGxJNW21u7+2xyx+iJ09Q1JV Cu1geHJwM6S1IVEFihvZ/9etX0fIRiM2puz2d+lGpzWn0+fuoZhBmFnhUPSshBzu9YAw NzPw== X-Gm-Message-State: AOAM5300Fx9puAm0MX644KFc/6VQ9TSztyyYAGPr7lBqN39rB6wVPb6h SMB22Ge7EI0V8tUHPT4F0jQTagXBmCs= X-Google-Smtp-Source: ABdhPJx53zf+0hkC7TyD4LePS5nCtHT3680scmhLvGMld5fpINb9N7BEADmNwyRglR06YR58Koe1Qw== X-Received: by 2002:a17:90b:1c06:: with SMTP id oc6mr2528956pjb.213.1644617764891; Fri, 11 Feb 2022 14:16:04 -0800 (PST) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com, laurent@vivier.eu Subject: [RFC PATCH 15/25] virtio-snd: Add VIRITO_SND_R_PCM_SET_PARAMS handle Date: Sat, 12 Feb 2022 03:43:09 +0530 Message-Id: <20220211221319.193404-16-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::102d (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102d; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pj1-x102d.google.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1644618141550100001 Content-Type: text/plain; charset="utf-8" Added handler for the VIRTIO_SND_R_PCM_SET_PARAMS control request. The handler was split up into two functions in so that the code could be reused in the realize function. Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 116 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 115 insertions(+), 1 deletion(-) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index a53a6be168..acb126f392 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -208,6 +208,22 @@ static virtio_snd_pcm_stream *virtio_snd_pcm_get_strea= m(VirtIOSound *s, return s->streams[stream]; } =20 +/* + * Get params for a sepific stream. + * + * @s: VirtIOSound card device + * @stream: Stream id + */ +static virtio_snd_pcm_params *virtio_snd_pcm_get_params(VirtIOSound *s, + uint32_t stream) +{ + if (stream >=3D s->snd_conf.streams) { + virtio_snd_err("Invalid stream request %d\n", stream); + return NULL; + } + return s->pcm_params[stream]; +} + /* * Handle the VIRTIO_SND_R_PCM_INFO request. * The function writes the info structs to the request element. @@ -273,6 +289,103 @@ done: return sizeof(virtio_snd_hdr) + sz; } =20 +/* + * Set the given stream params. + * Called by both virtio_snd_handle_pcm_set_params and during device + * initialization. + * Returns a virtio sound status VIRTIO_SND_S_* + * + * @s: VirtIOSound card device + * @params: The PCM params as defined in the virtio specification + */ +static uint32_t virtio_snd_pcm_set_params_impl(VirtIOSound *s, + virtio_snd_pcm_set_params *= params) +{ + uint32_t st =3D params->hdr.stream_id; + if (st > s->snd_conf.streams || !(s->pcm_params)) { + virtio_error(VIRTIO_DEVICE(s), "Streams not initalized\n"); + return VIRTIO_SND_S_BAD_MSG; + } + + if (!s->pcm_params[st]) { + s->pcm_params[st] =3D g_new0(virtio_snd_pcm_params, 1); + } + virtio_snd_pcm_params *st_params =3D virtio_snd_pcm_get_params(s, st); + + st_params->features =3D params->features; + st_params->buffer_bytes =3D params->buffer_bytes; + st_params->period_bytes =3D params->period_bytes; + + if (params->channel < 1 || params->channel > AUDIO_MAX_CHANNELS) { + virtio_snd_err("Number of channels not supported\n"); + return VIRTIO_SND_S_NOT_SUPP; + } + st_params->channel =3D params->channel; + + uint32_t supported_formats =3D 1 << VIRTIO_SND_PCM_FMT_S8 | + 1 << VIRTIO_SND_PCM_FMT_U8 | + 1 << VIRTIO_SND_PCM_FMT_S16 | + 1 << VIRTIO_SND_PCM_FMT_U16 | + 1 << VIRTIO_SND_PCM_FMT_S32 | + 1 << VIRTIO_SND_PCM_FMT_U32 | + 1 << VIRTIO_SND_PCM_FMT_FLOAT; + + uint32_t supported_rates =3D 1 << VIRTIO_SND_PCM_RATE_5512 | + 1 << VIRTIO_SND_PCM_RATE_8000 | + 1 << VIRTIO_SND_PCM_RATE_11025 | + 1 << VIRTIO_SND_PCM_RATE_16000 | + 1 << VIRTIO_SND_PCM_RATE_22050 | + 1 << VIRTIO_SND_PCM_RATE_32000 | + 1 << VIRTIO_SND_PCM_RATE_44100 | + 1 << VIRTIO_SND_PCM_RATE_48000 | + 1 << VIRTIO_SND_PCM_RATE_64000 | + 1 << VIRTIO_SND_PCM_RATE_88200 | + 1 << VIRTIO_SND_PCM_RATE_96000 | + 1 << VIRTIO_SND_PCM_RATE_176399 | + 1 << VIRTIO_SND_PCM_RATE_192000 | + 1 << VIRTIO_SND_PCM_RATE_384000; + + if (!(supported_formats & (1 << params->format))) { + virtio_snd_err("Stream format not supported\n"); + return VIRTIO_SND_S_NOT_SUPP; + } + st_params->format =3D params->format; + + if (!(supported_rates & (1 << params->rate))) { + virtio_snd_err("Stream rate not supported\n"); + return VIRTIO_SND_S_NOT_SUPP; + } + st_params->rate =3D params->rate; + + st_params->period_bytes =3D params->period_bytes; + st_params->buffer_bytes =3D params->buffer_bytes; + return VIRTIO_SND_S_OK; +} + +/* + * Handles the VIRTIO_SND_R_PCM_SET_PARAMS request. + * The function writes the response to the virtqueue element. + * Returns the used size in bytes. + * + * @s: VirtIOSound card device + * @elem: The request element from control queue + */ +static uint32_t virtio_snd_handle_pcm_set_params(VirtIOSound *s, + VirtQueueElement *elem) +{ + virtio_snd_pcm_set_params req; + uint32_t sz; + sz =3D iov_to_buf(elem->out_sg, elem->out_num, 0, &req, sizeof(req)); + assert(sz =3D=3D sizeof(virtio_snd_pcm_set_params)); + + virtio_snd_hdr resp; + resp.code =3D virtio_snd_pcm_set_params_impl(s, &req); + + sz =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &resp, sizeof(resp)); + assert(sz =3D=3D sizeof(virtio_snd_hdr)); + return sz; +} + /* The control queue handler. Pops an element from the control virtqueue, * checks the header and performs the requested action. Finally marks the * element as used. @@ -321,7 +434,8 @@ static void virtio_snd_handle_ctrl(VirtIODevice *vdev, = VirtQueue *vq) sz =3D virtio_snd_handle_pcm_info(s, elem); goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_SET_PARAMS) { - virtio_snd_log("VIRTIO_SND_R_PCM_SET_PARAMS"); + sz =3D virtio_snd_handle_pcm_set_params(s, elem); + goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_PREPARE) { virtio_snd_log("VIRTIO_SND_R_PCM_PREPARE"); } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_START) { --=20 2.31.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1619698470; cv=none; d=zohomail.com; s=zohoarc; b=ULffBbM3qoD6Zx9aZxUkme4j/h7rl/tFf2M4wF1qcRoK2JAb2KiBgSWHAnfBvJvrF5BA2h10l9irSWqswYNOCxMBnTty13jIFIcW6RmfLVdCzxK/g4PfMQqdAhdTtJD8AIc9lkYKxCkEIAsnnd17aaKllPFV4Vc9vd1VURk+R5s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619698470; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=FUwTYo4Bm975EnC5JO2hCKsveB8utELXrho2hxTNlIs=; b=k/Fvrx2I5nHDrsSuHoa7PpdWr4Jvx4TSAp22p1eSHFbK2A1wjSpodPcclcd5Z20RfVkLdvAXRdfIF6bXt1gv7HdmtuQbsTXMcvHU0WyILMvW4KF/1lvHMGXmuGkRWwlFAZ2l53BHY9nRCB/Z8+9ne2tBU4VjKz50sfHkNLaNP8w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619698470979812.4515712920465; Thu, 29 Apr 2021 05:14:30 -0700 (PDT) Received: from localhost ([::1]:44372 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lc5Yr-00053H-Pu for importer@patchew.org; Thu, 29 Apr 2021 08:14:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39570) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lc5Qs-00087N-T3 for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:16 -0400 Received: from mail-pj1-x102e.google.com ([2607:f8b0:4864:20::102e]:43916) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lc5Qo-0000bD-If for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:14 -0400 Received: by mail-pj1-x102e.google.com with SMTP id f6-20020a17090a6546b029015088cf4a1eso10829291pjs.2 for ; Thu, 29 Apr 2021 05:06:10 -0700 (PDT) Received: from localhost.localdomain ([2405:201:6008:61b4:c0b1:be0f:608e:9a45]) by smtp.gmail.com with ESMTPSA id p6sm713643pjg.35.2021.04.29.05.06.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Apr 2021 05:06:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=FUwTYo4Bm975EnC5JO2hCKsveB8utELXrho2hxTNlIs=; b=BLKOs7bnYq36gzkpR9w57P5pqMcpng4xPW91M9/+0D5VvLc0tG2VduOIUgCad0DTgd vGLbTZgj5N/3kPC4XjuOKkkj5NZk0OT/P0Td91SZXH/pv6lN4oBexS7u0kb0pHs0ln04 27b+HVWxRTL0hi3/93ZE4WADQ4B6/NInv2rzDdIHBwqdfM6c0Hafv687wo/Vn8ubwxtC 3IMA3uUN1LyQvl8VQF05eFywCIml1ByuA0Znq2wSJYq5Wmhr2zR5J4YcJ9afeyM9IFJz zfqnRbPvY9khl2RILMsCo8C/hEvLnJzPxT58uXf+ajO8Gh6F7rqzspdok2E6YQa61IVq 7Chg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=FUwTYo4Bm975EnC5JO2hCKsveB8utELXrho2hxTNlIs=; b=Hc6UD5uSEvoaNcx752Trwx8LeaNElmacAuYNDibxzZTylmsDA9cXgNPdgEucdVmCdL FjrGqOKX+826yQbxlKY3Rgb0F8ATOvh81EppGbga28ZPzhlwDcLwDXmPMFURU1NLx17G 6imDNETwLEBAl8tymPesktRaiTAImZg9MX0tCTV9iy7yavPl7BBc2FYhe8+wgegxKA6x VMMVCR2Pmx45BL3OoS3ederPYU3VWPERFUNpZSpfwl82nKsUcZhL6Vue6mTe6zTitor1 58sWtMr0WFI2fDzlQC7kgYAIPstvPaYUuOSMThpTA4E6Bqe9czWTwUZcsFFWs0KhcvbO 2Rrg== X-Gm-Message-State: AOAM5331JoP2zMPVVsHitTsQLrmrCquy9O1N0GjvqDZ2+PrVFiTiVvE8 nkwAQC6Twe7orll/CvEjMs8= X-Google-Smtp-Source: ABdhPJyuERrK+7ev+eBqpXkN+T5A1hUuY1qqeVd7Y7dpduyVEn6Dgxk8oxPyix/vSKZPrfh1Rx46Wg== X-Received: by 2002:a17:90a:ce92:: with SMTP id g18mr9079916pju.214.1619697969302; Thu, 29 Apr 2021 05:06:09 -0700 (PDT) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com Subject: [RFC PATCH 15/27] virtio-snd: Add VIRTIO_SND_R_PCM_INFO handler Date: Thu, 29 Apr 2021 17:34:33 +0530 Message-Id: <20210429120445.694420-16-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102e; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pj1-x102e.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 88 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 87 insertions(+), 1 deletion(-) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index 527eed6132..bc99cd58d6 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -196,6 +196,91 @@ static uint32_t virtio_snd_handle_jack_remap(VirtIOSou= nd *s, return sz; } =20 +/* + * Get a specific stream from the virtio sound card device. + * + * @s: VirtIOSound card device + * @stream: Stream id + * + * Returns NULL if function fails. + * TODO: Make failure more explicit. Output can be NULL if the stream numb= er + * is valid but the stream hasn't been allocated yet. + */ +static virtio_snd_pcm_stream *virtio_snd_pcm_get_stream(VirtIOSound *s, + uint32_t stream) +{ + if (stream >=3D s->snd_conf.streams) { + virtio_snd_err("Invalid stream request %d\n", stream); + return NULL; + } + return s->streams[stream]; +} + +/* + * Handle the VIRTIO_SND_R_PCM_INFO request. + * The function writes the info structs to the request element. + * Returns the used size in bytes. + * + * @s: VirtIOSound card device + * @elem: The request element from control queue + */ +static uint32_t virtio_snd_handle_pcm_info(VirtIOSound *s, + VirtQueueElement *elem) +{ + virtio_snd_query_info req; + uint32_t sz; + sz =3D iov_to_buf(elem->out_sg, elem->out_num, 0, &req, sizeof(req)); + assert(sz =3D=3D sizeof(virtio_snd_query_info)); + + virtio_snd_hdr resp; + if (iov_size(elem->in_sg, elem->in_num) < + sizeof(virtio_snd_hdr) + req.size * req.count) { + virtio_snd_err("pcm info: buffer too small, got: %lu, needed: %lu\= n", + iov_size(elem->in_sg, elem->in_num), + sizeof(virtio_snd_pcm_info)); + resp.code =3D VIRTIO_SND_S_BAD_MSG; + goto done; + } + + virtio_snd_pcm_stream *stream; + virtio_snd_pcm_info *pcm_info =3D g_new0(virtio_snd_pcm_info, req.coun= t); + for (int i =3D req.start_id; i < req.start_id + req.count; i++) { + stream =3D virtio_snd_pcm_get_stream(s, i); + + if (!stream) { + virtio_snd_err("Invalid stream id: %d\n", i); + resp.code =3D VIRTIO_SND_S_BAD_MSG; + goto done; + } + + pcm_info[i - req.start_id].hdr.hda_fn_nid =3D stream->hda_fn_nid; + pcm_info[i - req.start_id].features =3D stream->features; + pcm_info[i - req.start_id].formats =3D stream->formats; + pcm_info[i - req.start_id].rates =3D stream->rates; + pcm_info[i - req.start_id].direction =3D stream->direction; + pcm_info[i - req.start_id].channels_min =3D stream->channels_min; + pcm_info[i - req.start_id].channels_max =3D stream->channels_max; + + memset(&pcm_info[i].padding, 0, sizeof(pcm_info[i].padding)); + } + + resp.code =3D VIRTIO_SND_S_OK; +done: + sz =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &resp, sizeof(resp)); + assert(sz =3D=3D sizeof(virtio_snd_hdr)); + + if (resp.code =3D=3D VIRTIO_SND_S_BAD_MSG) { + g_free(pcm_info); + return sz; + } + + sz =3D iov_from_buf(elem->in_sg, elem->in_num, sizeof(virtio_snd_hdr), + pcm_info, sizeof(virtio_snd_pcm_info) * req.count); + assert(sz =3D=3D req.size * req.count); + g_free(pcm_info); + return sizeof(virtio_snd_hdr) + sz; +} + /* The control queue handler. Pops an element from the control virtqueue, * checks the header and performs the requested action. Finally marks the * element as used. @@ -241,7 +326,8 @@ static void virtio_snd_handle_ctrl(VirtIODevice *vdev, = VirtQueue *vq) sz =3D virtio_snd_handle_jack_remap(s, elem); goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_INFO) { - virtio_snd_log("VIRTIO_SND_R_PCM_INFO"); + sz =3D virtio_snd_handle_pcm_info(s, elem); + goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_SET_PARAMS) { virtio_snd_log("VIRTIO_SND_R_PCM_SET_PARAMS"); } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_PREPARE) { --=20 2.25.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1644618377; cv=none; d=zohomail.com; s=zohoarc; b=Kv0LkHr9/vDK1FaJ3GxQnwA/+Sz/V2gtpGM/IzxKZbS6Cfi0K4pO3DCJMprqdtOacRrNt3bF4H4gh/tCrj33ZUE0BZQn/Ftu9GsQ9LcvExIESjaQrrV/UTLgsUfNhqnlCTd3wX4miJso7dgnfgGQ1nosquoKjkL/a9LFd4njYe0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644618377; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=rKiWY6YdEhJQCXe0WvxM2zvB0qdzAuQNjewtFe18rH0=; b=Ioeexu9TQW1bY3FKOR/rhi4WE7J0Hzcbs1+NNfI3lGM4qcpbPrr2ZGt7WhhMhNQ3Ksw4j7nt1hsYjqkWIbtlV8QtyHTztGCNn4whbzWudqfwcKIfb/nl2VrtVQpO9TTB12aKi3SWwQ8squd0gX+HuOTfHRBkjQHOVMEMGRwhsmo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1644618377239114.08405474315191; Fri, 11 Feb 2022 14:26:17 -0800 (PST) Received: from localhost ([::1]:56042 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nIeMp-0002Wo-P6 for importer@patchew.org; Fri, 11 Feb 2022 17:26:15 -0500 Received: from eggs.gnu.org ([209.51.188.92]:42350) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIeDD-0007Ur-BL for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:16:19 -0500 Received: from [2607:f8b0:4864:20::433] (port=36470 helo=mail-pf1-x433.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nIeDB-0003NR-If for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:16:19 -0500 Received: by mail-pf1-x433.google.com with SMTP id u16so12901471pfg.3 for ; Fri, 11 Feb 2022 14:16:17 -0800 (PST) Received: from fedora.. ([2405:201:6008:6f15:d26f:133e:cd11:90dd]) by smtp.googlemail.com with ESMTPSA id j23sm20623576pgb.75.2022.02.11.14.16.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:16:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=rKiWY6YdEhJQCXe0WvxM2zvB0qdzAuQNjewtFe18rH0=; b=FBQ2hnH0RtqqFesOrvg85LHY+2XSh1RjZkvscTEa7+pBQlnZS8dt70fWegP1/XrkVf wYOJbfgVvVUG3JfO7NEMO2XUqiS5aPn+KM3HEE+tsD7Qdp8uGQUBDzjJe4ZVyq8wlvUM yil6Sml+oX1qWzjWbOkMl95asb4laklgk/Ldp86t3IOj4Y1KZr43SuHRdmK8l0JtP+fW XYhUey+HoCQycCeK3pxWpfTroWBo2EZVlHTQorSNjOVfM1Eqi4QzecPE8EiNQooaxbYi lLN3cclGaIN41YT0zvI6hzHO04W2B1ClAIx/HIfPjqwmkLmIUlOJnrSXbGT0c4Pmq0mc tBPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=rKiWY6YdEhJQCXe0WvxM2zvB0qdzAuQNjewtFe18rH0=; b=h5nzpwB9f22nZ1B4WioI9IGcDtHkgyy5mcBteXTqpzY8l18++dZu+vljPiFhLL5H7Q E3enMcd4cXptqo3n+k2f4ccMxIAspgJwPQAOsv+tWRQz8C/yag4OgUEOH52g12hIF+fD vbCD8VghEUZoPag3ZUR1ZOFyQljvDvcHfienr+2kzsEomYFXqPp/gr/nte9PTPEaijUn TCHGG9ErNwNMpmtKKh23hhV3Kriszdt2tW+gW70unqSnMmzIL1yxBnULB6eWfKczqHBp IHYaS3kuYf/LaLPKCzHx2Tbjp8/FmnA8/A8RTYwEhqR/+vE+KGcNrkQdfFCNO054zX+T EhSQ== X-Gm-Message-State: AOAM533ToY4KT1FyLKcGeBWjf4X1acSCTBLbWQ9/a/XAjUDFCg8uEDK0 Hp/J//r/BTK3gjDXUuLppoGBagyCmrE= X-Google-Smtp-Source: ABdhPJwzRpki7UYPDt1NI3i6ljyowhhLX8gi8YS1+jSo6R0aepm3npaK6TH13PMNM9Ui8qs/iLbW1A== X-Received: by 2002:a62:3603:: with SMTP id d3mr3679022pfa.2.1644617776328; Fri, 11 Feb 2022 14:16:16 -0800 (PST) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com, laurent@vivier.eu Subject: [RFC PATCH 16/25] virtio-snd: Add VIRTIO_SND_R_PCM_PREPARE handler Date: Sat, 12 Feb 2022 03:43:10 +0530 Message-Id: <20220211221319.193404-17-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::433 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pf1-x433.google.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1644618379274100001 Content-Type: text/plain; charset="utf-8" The handler doesn't intialize the SWVoiceOut streams for now. Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 203 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 202 insertions(+), 1 deletion(-) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index acb126f392..b7c4dc691d 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -386,6 +386,206 @@ static uint32_t virtio_snd_handle_pcm_set_params(Virt= IOSound *s, return sz; } =20 +/* + * Get a QEMU Audiosystem compatible format value from a VIRTIO_SND_PCM_FM= T_* + */ +static AudioFormat virtio_snd_get_qemu_format(uint32_t format) +{ + switch (format) { + case VIRTIO_SND_PCM_FMT_U8: + return AUDIO_FORMAT_U8; + case VIRTIO_SND_PCM_FMT_S8: + return AUDIO_FORMAT_S8; + case VIRTIO_SND_PCM_FMT_U16: + return AUDIO_FORMAT_U16; + case VIRTIO_SND_PCM_FMT_S16: + return AUDIO_FORMAT_S16; + case VIRTIO_SND_PCM_FMT_U32: + return AUDIO_FORMAT_U32; + case VIRTIO_SND_PCM_FMT_S32: + return AUDIO_FORMAT_S32; + case VIRTIO_SND_PCM_FMT_FLOAT: + return AUDIO_FORMAT_F32; + default: + return -1; + } +} + +/* + * Get a QEMU Audiosystem compatible frequency value from a + * VIRTIO_SND_PCM_RATE_* + */ +static uint32_t virtio_snd_get_qemu_freq(uint32_t rate) +{ + switch (rate) { + case VIRTIO_SND_PCM_RATE_5512: + return 5512; + case VIRTIO_SND_PCM_RATE_8000: + return 8000; + case VIRTIO_SND_PCM_RATE_11025: + return 11025; + case VIRTIO_SND_PCM_RATE_16000: + return 16000; + case VIRTIO_SND_PCM_RATE_22050: + return 22050; + case VIRTIO_SND_PCM_RATE_32000: + return 32000; + case VIRTIO_SND_PCM_RATE_44100: + return 44100; + case VIRTIO_SND_PCM_RATE_48000: + return 48000; + case VIRTIO_SND_PCM_RATE_64000: + return 64000; + case VIRTIO_SND_PCM_RATE_88200: + return 88200; + case VIRTIO_SND_PCM_RATE_96000: + return 96000; + case VIRTIO_SND_PCM_RATE_176399: + return 176399; + case VIRTIO_SND_PCM_RATE_192000: + return 192000; + case VIRTIO_SND_PCM_RATE_384000: + return 384000; + default: + return -1; + } +} + +/* + * Get QEMU Audiosystem compatible audsettings from virtio based pcm stream + * params. + */ +static void virtio_snd_get_qemu_audsettings(audsettings *as, + virtio_snd_pcm_params *params) +{ + as->nchannels =3D params->channel; + as->fmt =3D virtio_snd_get_qemu_format(params->format); + as->freq =3D virtio_snd_get_qemu_freq(params->rate); + as->endianness =3D AUDIO_HOST_ENDIANNESS; +} + +/* + * Get the maximum number of virtqueue elements that can be inserted + * into a virtio sound pcm stream + * + * @st: virtio sound pcm stream + */ +static int virtio_snd_pcm_get_nelems(virtio_snd_pcm_stream *st) +{ + return st->buffer_bytes / st->period_bytes + + !!(st->buffer_bytes % st->period_bytes); +} + +/* + * Prepares a VirtIOSound card stream. + * Returns a virtio sound status (VIRTIO_SND_S_*). + * + * @s: VirtIOSound card + * @stream: stream id + */ +static uint32_t virtio_snd_pcm_prepare_impl(VirtIOSound *s, uint32_t strea= m) +{ + if (!s->streams || !s->pcm_params || !s->pcm_params[stream]) { + virtio_snd_err("Cannot prepare stream %d without params.\n", strea= m); + return VIRTIO_SND_S_BAD_MSG; + } + + uint32_t supported_formats =3D 1 << VIRTIO_SND_PCM_FMT_S8 | + 1 << VIRTIO_SND_PCM_FMT_U8 | + 1 << VIRTIO_SND_PCM_FMT_S16 | + 1 << VIRTIO_SND_PCM_FMT_U16 | + 1 << VIRTIO_SND_PCM_FMT_S32 | + 1 << VIRTIO_SND_PCM_FMT_U32 | + 1 << VIRTIO_SND_PCM_FMT_FLOAT; + + uint32_t supported_rates =3D 1 << VIRTIO_SND_PCM_RATE_5512 | + 1 << VIRTIO_SND_PCM_RATE_8000 | + 1 << VIRTIO_SND_PCM_RATE_11025 | + 1 << VIRTIO_SND_PCM_RATE_16000 | + 1 << VIRTIO_SND_PCM_RATE_22050 | + 1 << VIRTIO_SND_PCM_RATE_32000 | + 1 << VIRTIO_SND_PCM_RATE_44100 | + 1 << VIRTIO_SND_PCM_RATE_48000 | + 1 << VIRTIO_SND_PCM_RATE_64000 | + 1 << VIRTIO_SND_PCM_RATE_88200 | + 1 << VIRTIO_SND_PCM_RATE_96000 | + 1 << VIRTIO_SND_PCM_RATE_176399 | + 1 << VIRTIO_SND_PCM_RATE_192000 | + 1 << VIRTIO_SND_PCM_RATE_384000; + + virtio_snd_pcm_params *params =3D virtio_snd_pcm_get_params(s, stream); + virtio_snd_pcm_stream *st =3D g_new0(virtio_snd_pcm_stream, 1); + st->hda_fn_nid =3D VIRTIO_SOUND_HDA_FN_NID_OUT; + st->features =3D 0; + st->direction =3D stream < s->snd_conf.streams / 2 + (s->snd_conf.stre= ams & 1) ? + VIRTIO_SND_D_OUTPUT : VIRTIO_SND_D_INPUT; + st->channels_min =3D 1; + st->channels_max =3D AUDIO_MAX_CHANNELS; + st->formats =3D supported_formats; + st->rates =3D supported_rates; + st->s =3D s; + + st->buffer_bytes =3D params->buffer_bytes; + st->period_bytes =3D params->period_bytes; + + st->chmap[0] =3D VIRTIO_SND_CHMAP_FL; + st->chmap[1] =3D VIRTIO_SND_CHMAP_FR; + + st->flushing =3D false; + + audsettings as; + virtio_snd_get_qemu_audsettings(&as, params); + + if (st->direction =3D=3D VIRTIO_SND_D_OUTPUT) { + /* st->voice.out =3D AUD_open_out(&s->card, + * st->voice.out, + * "virtio_snd_card", + * st, + * virtio_snd_output_cb, &as); + */ + } else { + /* st->voice.in =3D AUD_open_in(&s->card, + * st->voice.in, + * "virtio_snd_card", + * st, + * virtio_snd_input_cb, + * &as); + */ + } + + uint32_t nelems =3D virtio_snd_pcm_get_nelems(st); + st->elems =3D g_new0(VirtQueueElement *, nelems); + st->w_pos =3D 0; + st->r_pos =3D 0; + s->streams[stream] =3D st; + + return VIRTIO_SND_S_OK; +} + +/* + * Handles VIRTIO_SND_R_PCM_PREPARE. + * The function writes the response to the virtqueue element. + * Returns the used size in bytes. + * + * @s: VirtIOSound card + * @elem: The request element from control queue + */ +static uint32_t virtio_snd_handle_pcm_prepare(VirtIOSound *s, + VirtQueueElement *elem) +{ + virtio_snd_pcm_hdr req; + size_t sz; + + sz =3D iov_to_buf(elem->out_sg, elem->out_num, 0, &req, sizeof(req)); + assert(sz =3D=3D sizeof(virtio_snd_pcm_hdr)); + + virtio_snd_hdr resp; + resp.code =3D virtio_snd_pcm_prepare_impl(s, req.stream_id); + sz =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &resp, sizeof(resp)); + assert(sz =3D=3D sizeof(virtio_snd_hdr)); + return sz; +} + /* The control queue handler. Pops an element from the control virtqueue, * checks the header and performs the requested action. Finally marks the * element as used. @@ -437,7 +637,8 @@ static void virtio_snd_handle_ctrl(VirtIODevice *vdev, = VirtQueue *vq) sz =3D virtio_snd_handle_pcm_set_params(s, elem); goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_PREPARE) { - virtio_snd_log("VIRTIO_SND_R_PCM_PREPARE"); + sz =3D virtio_snd_handle_pcm_prepare(s, elem); + goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_START) { virtio_snd_log("VIRTIO_SND_R_PCM_START"); } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_STOP) { --=20 2.31.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1619699350; cv=none; d=zohomail.com; s=zohoarc; b=Zr80ppmkHmw/tXM7TToVnM6+mmv4AUfBzrGJYoto7jLxZ+DrPg+mp01a0Sapxy3ElabF0gg0AI5IrWcRkqutdc4mgTT3sf3RKO0rk53CPBsVps8tIVUUpNDOCapwqYwZChnW5hP7Hne90Cy3VqoY50GKnfl80ZiaWT6Lt5hxQJM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619699350; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=uLBtfbqH8J3EHVhSF1F5M9+NmnEaU+y5Z8djRQCP00Q=; b=G/K63JwIMtEVAehioOZB7N+RhAqFzP8ARzKj/zh5TBVLOPh3uSrOR8oaQm9SQjlju1stXFEQ8CjVdrdF93UXJ/0gfGFNXPCzhwEBWnXiVRgnKPVHFgwGLb1n3OfsfaM/Up4RRS4u2yPSfzK4ikQkLmbYcTiBbD9O/rDF4a8oPAM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619699350766308.829472510472; Thu, 29 Apr 2021 05:29:10 -0700 (PDT) Received: from localhost ([::1]:42700 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lc5n3-0007oo-Mg for importer@patchew.org; Thu, 29 Apr 2021 08:29:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39634) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lc5R2-00089m-UH for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:25 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]:40760) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lc5Qr-0000bV-59 for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:24 -0400 Received: by mail-pf1-x433.google.com with SMTP id a12so3619880pfc.7 for ; Thu, 29 Apr 2021 05:06:12 -0700 (PDT) Received: from localhost.localdomain ([2405:201:6008:61b4:c0b1:be0f:608e:9a45]) by smtp.gmail.com with ESMTPSA id p6sm713643pjg.35.2021.04.29.05.06.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Apr 2021 05:06:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=uLBtfbqH8J3EHVhSF1F5M9+NmnEaU+y5Z8djRQCP00Q=; b=UR0LbY8uistU7Y5d0p135bc4tF1uQs5j08NcGFqnZAbtyx/GOWGeSCs1uiKSlTgtDx QFiW6ZRLeQVuJlN2hity1PtGmlpAU058KUI6YcnCokCmA2OxK6Ve86/WYyXpaQOamXDE E6E3WTfr+mR8ZNxnvvjeHiAP+waj2T4WsW+lyPXHTyn0xLWIZKIN+XKZvxfC96dZBMoz YYdRkU4eKa8ft0usVIoUSxpeIS7J6nwK3Rx19VU/MvWprGhykKFi85BTyUGLKGV1NVRW 84pCE4yinhSvz3a9FvM9VmW1rTsJ71Sd8bcwW1ToI5RqaiILthvpZkUHqGogMaP8thDe UN/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=uLBtfbqH8J3EHVhSF1F5M9+NmnEaU+y5Z8djRQCP00Q=; b=KhnqXh667MSbzFLWitrclTtCqzXP4Bw5Jd0xYrt3dZHSNbx94IPKms8Bdpz0nyiVHo WSeMqD0UYuxx8mK6QGbfOg/gMoV+onSiH/kH+BiqADiWI2CBecdCYir3HY59PoFUHq4z TVpC0eIaGnprR4FPrqVbBgwW8PN+DF/T4rdm5oXoI/RcSe8q6oIquJwXoZB5gBdy1LiK hx7GGt92rprzHac2qcC6dUiT4JGefYrgClzXCE89V+uF7Gx08AXLy//95d9ybWJVogUG W64LfwcU/YkNie4Y1sdePC0lcysfmJkeRCzWrcw9bx/nO7G3D3KyeDKpaT+cWApIJTfk a62A== X-Gm-Message-State: AOAM532aZbSjnfam/ZkPpp5JxrfLkU/AhFTgyVkoNDIPwysBLVukWXRG 4V01rpdMsmhbN6cjPcg3OOM= X-Google-Smtp-Source: ABdhPJwSTTsZn4GZ77Y/d3Zpuiz7p7wR1J6YRA5NTFIw/hax8D9AEuSKfLxNXjtYkx4FXvNjH91KgQ== X-Received: by 2002:a63:4866:: with SMTP id x38mr31865597pgk.135.1619697971655; Thu, 29 Apr 2021 05:06:11 -0700 (PDT) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com Subject: [RFC PATCH 16/27] virtio-snd: Add VIRITO_SND_R_PCM_SET_PARAMS handle Date: Thu, 29 Apr 2021 17:34:34 +0530 Message-Id: <20210429120445.694420-17-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pf1-x433.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Type: text/plain; charset="utf-8" Added handler for the VIRTIO_SND_R_PCM_SET_PARAMS control request. The handler was split up into two functions in so that the code could be reused in the realize function. Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 100 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 99 insertions(+), 1 deletion(-) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index bc99cd58d6..4e9764de08 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -281,6 +281,103 @@ done: return sizeof(virtio_snd_hdr) + sz; } =20 +/* + * Set the given stream params. + * Called by both virtio_snd_handle_pcm_set_params and during device + * initialization. + * Returns a virtio sound status VIRTIO_SND_S_* + * + * @s: VirtIOSound card device + * @params: The PCM params as defined in the virtio specification + */ +static uint32_t virtio_snd_pcm_set_params_impl(VirtIOSound *s, + virtio_snd_pcm_set_params *= params) +{ + uint32_t st =3D params->hdr.stream_id; + if (st > s->snd_conf.streams || !(s->pcm_params)) { + virtio_error(VIRTIO_DEVICE(s), "Streams not initalized\n"); + return VIRTIO_SND_S_BAD_MSG; + } + + if (!s->pcm_params[st]) { + s->pcm_params[st] =3D g_new0(virtio_snd_pcm_params, 1); + } + virtio_snd_pcm_params *st_params =3D s->pcm_params[st]; + + st_params->features =3D params->features; + st_params->buffer_bytes =3D params->buffer_bytes; + st_params->period_bytes =3D params->period_bytes; + + if (params->channel < 1 || params->channel > AUDIO_MAX_CHANNELS) { + virtio_snd_err("Number of channels not supported\n"); + return VIRTIO_SND_S_NOT_SUPP; + } + st_params->channel =3D params->channel; + + uint32_t supported_formats =3D 1 << VIRTIO_SND_PCM_FMT_S8 | + 1 << VIRTIO_SND_PCM_FMT_U8 | + 1 << VIRTIO_SND_PCM_FMT_S16 | + 1 << VIRTIO_SND_PCM_FMT_U16 | + 1 << VIRTIO_SND_PCM_FMT_S32 | + 1 << VIRTIO_SND_PCM_FMT_U32 | + 1 << VIRTIO_SND_PCM_FMT_FLOAT; + + uint32_t supported_rates =3D 1 << VIRTIO_SND_PCM_RATE_5512 | + 1 << VIRTIO_SND_PCM_RATE_8000 | + 1 << VIRTIO_SND_PCM_RATE_11025 | + 1 << VIRTIO_SND_PCM_RATE_16000 | + 1 << VIRTIO_SND_PCM_RATE_22050 | + 1 << VIRTIO_SND_PCM_RATE_32000 | + 1 << VIRTIO_SND_PCM_RATE_44100 | + 1 << VIRTIO_SND_PCM_RATE_48000 | + 1 << VIRTIO_SND_PCM_RATE_64000 | + 1 << VIRTIO_SND_PCM_RATE_88200 | + 1 << VIRTIO_SND_PCM_RATE_96000 | + 1 << VIRTIO_SND_PCM_RATE_176399 | + 1 << VIRTIO_SND_PCM_RATE_192000 | + 1 << VIRTIO_SND_PCM_RATE_384000; + + if (!(supported_formats & (1 << params->format))) { + virtio_snd_err("Stream format not supported\n"); + return VIRTIO_SND_S_NOT_SUPP; + } + st_params->format =3D params->format; + + if (!(supported_rates & (1 << params->rate))) { + virtio_snd_err("Stream rate not supported\n"); + return VIRTIO_SND_S_NOT_SUPP; + } + st_params->rate =3D params->rate; + + st_params->period_bytes =3D params->period_bytes; + st_params->buffer_bytes =3D params->buffer_bytes; + return VIRTIO_SND_S_OK; +} + +/* + * Handles the VIRTIO_SND_R_PCM_SET_PARAMS request. + * The function writes the response to the virtqueue element. + * Returns the used size in bytes. + * + * @s: VirtIOSound card device + * @elem: The request element from control queue + */ +static uint32_t virtio_snd_handle_pcm_set_params(VirtIOSound *s, + VirtQueueElement *elem) +{ + virtio_snd_pcm_set_params req; + uint32_t sz; + sz =3D iov_to_buf(elem->out_sg, elem->out_num, 0, &req, sizeof(req)); + assert(sz =3D=3D sizeof(virtio_snd_pcm_set_params)); + + virtio_snd_hdr resp; + resp.code =3D virtio_snd_pcm_set_params_impl(s, &req); + + sz =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &resp, sizeof(resp)); + assert(sz =3D=3D sizeof(virtio_snd_hdr)); + return sz; +} + /* The control queue handler. Pops an element from the control virtqueue, * checks the header and performs the requested action. Finally marks the * element as used. @@ -329,7 +426,8 @@ static void virtio_snd_handle_ctrl(VirtIODevice *vdev, = VirtQueue *vq) sz =3D virtio_snd_handle_pcm_info(s, elem); goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_SET_PARAMS) { - virtio_snd_log("VIRTIO_SND_R_PCM_SET_PARAMS"); + sz =3D virtio_snd_handle_pcm_set_params(s, elem); + goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_PREPARE) { virtio_snd_log("VIRTIO_SND_R_PCM_PREPARE"); } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_START) { --=20 2.25.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1619699851; cv=none; d=zohomail.com; s=zohoarc; b=TlAbabY1dxH3+PDQX8DLltkA0qnIRB+ovQFwGlyW28noaLeZPaF4LEV7BSXdJajvqqGNPU6AS7rBzqn8d597N3pw7IEcQvDWxLJMeFhZJV3UtQ9Ynsf56PsMhX+WfgYF2WC2PW2ZWaUnxyZ3ZcFyqQSoU0YAV5Ev+lfesGHo+7Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619699851; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ZeWvOpI4hMofN2MRXV5vwzCRjmyAQtHko1ftmTNmoLw=; b=DxpLOgNBPuoDXBqQ3y/NzzcqncD03LGff4k3AkQX0V2FI/Brm9zY53wKeHBT901QXZgnz9/xd2rHkTHZMfR7Ik1ys5kMTbVGvZUWmwzeUsZZOctYvH2em8iFc92ysCrJ1gxKlZxHEIMowf36/kNlZ8ehCj6zwOwBMERYTFepT9I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619699851198548.5645935995979; Thu, 29 Apr 2021 05:37:31 -0700 (PDT) Received: from localhost ([::1]:34050 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lc5v7-0007Xj-HE for importer@patchew.org; Thu, 29 Apr 2021 08:37:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39648) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lc5R4-0008AO-Eu for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:26 -0400 Received: from mail-pg1-x52c.google.com ([2607:f8b0:4864:20::52c]:41599) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lc5Qu-0000cN-Kr for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:25 -0400 Received: by mail-pg1-x52c.google.com with SMTP id m37so4410305pgb.8 for ; Thu, 29 Apr 2021 05:06:15 -0700 (PDT) Received: from localhost.localdomain ([2405:201:6008:61b4:c0b1:be0f:608e:9a45]) by smtp.gmail.com with ESMTPSA id p6sm713643pjg.35.2021.04.29.05.06.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Apr 2021 05:06:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ZeWvOpI4hMofN2MRXV5vwzCRjmyAQtHko1ftmTNmoLw=; b=bkog44gXzim1+hP+3Au9pfIBEH7/rgGnyDpSmh5o1SnqKwlpkUEQTHkbV4qDLbLvy5 q4pI66TYL9Me+0e9ektyv1D0OXpnQXufMCdnWQV0aJTzaYkBucYss2TSum0TjjD1sfJd dVQxN0Yz0kezMIj9Tm9lUrI59DO7D10JOHuMVq4EaCxuaQgFQ2bBKYbn0Hra21Jyv1Dh uLMmk6Pna7ibp9c+fGg5l66cn2pvP1tGIFDqQWZj1kh7zn75LTbHHq4JiZAIpPkXvsYf 1UFDPgN17wxwOuxy/STDBg9cTp2fMdHOxkfe/j0uX/qCukT+u53GUWlVU3h44JEf/de1 UosA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ZeWvOpI4hMofN2MRXV5vwzCRjmyAQtHko1ftmTNmoLw=; b=KaWTcQuvOmvxrqv/XVx7Xen0PbIHHwrreaepatOuWjgAydw5YQin20OvT6ItJDxZ/j aM4nUZwsDco4ckelwpSAt8/ahrQJAX2gg9fNle+JBDfQvTh4xwqQjgcaIH7Bz1Kcbua2 OrBHT9LSlksaBCFHU+oiyDAB3u0aSk6/uj6Ck2kdm131qHKCVcfMcIg4rJAYoLMUg8Ux l+jvEPUDYcUoETXlqWHtHJJ8pcajL7pVe0MGolzjnlDfle/AQAeQ/a+9h/+Damp1lAfU Z3DdvMDTNrhIX+vmgStPJB7SMjUVEQdyE7JDN4EwQxXo0rkwpjkrmu35b9SrQPsKr48w WGug== X-Gm-Message-State: AOAM5318ks/qShl3bQHDdxx0EHQKAoRmhLZeDP36gMQifOJXg2nFe3sY be/Yj0paTVASLxQT4+HnAUiCETvksUYp6M2b/t0= X-Google-Smtp-Source: ABdhPJxG09c5LyQ3cZvYS5aYdkrta6BF4+x93E/sv5qTzjU8LFTjl2KsSvDePS0RXNi5ISL91VSnEg== X-Received: by 2002:a63:9d0d:: with SMTP id i13mr20293337pgd.197.1619697974156; Thu, 29 Apr 2021 05:06:14 -0700 (PDT) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com Subject: [RFC PATCH 17/27] virtio-snd: Add VIRTIO_SND_R_PCM_PREPARE handler Date: Thu, 29 Apr 2021 17:34:35 +0530 Message-Id: <20210429120445.694420-18-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52c; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pg1-x52c.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Type: text/plain; charset="utf-8" The handler doesn't intialize the SWVoiceOut streams for now. Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 198 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 197 insertions(+), 1 deletion(-) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index 4e9764de08..dba90cc4a7 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -378,6 +378,201 @@ static uint32_t virtio_snd_handle_pcm_set_params(Virt= IOSound *s, return sz; } =20 +/* + * Get a QEMU Audiosystem compatible format value from a VIRTIO_SND_PCM_FM= T_* + */ +static AudioFormat virtio_snd_get_qemu_format(uint32_t format) +{ + switch (format) { + case VIRTIO_SND_PCM_FMT_U8: + return AUDIO_FORMAT_U8; + case VIRTIO_SND_PCM_FMT_S8: + return AUDIO_FORMAT_S8; + case VIRTIO_SND_PCM_FMT_U16: + return AUDIO_FORMAT_U16; + case VIRTIO_SND_PCM_FMT_S16: + return AUDIO_FORMAT_S16; + case VIRTIO_SND_PCM_FMT_U32: + return AUDIO_FORMAT_U32; + case VIRTIO_SND_PCM_FMT_S32: + return AUDIO_FORMAT_S32; + case VIRTIO_SND_PCM_FMT_FLOAT: + return AUDIO_FORMAT_F32; + default: + return -1; + } +} + +/* + * Get a QEMU Audiosystem compatible frequency value from a + * VIRTIO_SND_PCM_RATE_* + */ +static uint32_t virtio_snd_get_qemu_freq(uint32_t rate) +{ + switch (rate) { + case VIRTIO_SND_PCM_RATE_5512: + return 5512; + case VIRTIO_SND_PCM_RATE_8000: + return 8000; + case VIRTIO_SND_PCM_RATE_11025: + return 11025; + case VIRTIO_SND_PCM_RATE_16000: + return 16000; + case VIRTIO_SND_PCM_RATE_22050: + return 22050; + case VIRTIO_SND_PCM_RATE_32000: + return 32000; + case VIRTIO_SND_PCM_RATE_44100: + return 44100; + case VIRTIO_SND_PCM_RATE_48000: + return 48000; + case VIRTIO_SND_PCM_RATE_64000: + return 64000; + case VIRTIO_SND_PCM_RATE_88200: + return 88200; + case VIRTIO_SND_PCM_RATE_96000: + return 96000; + case VIRTIO_SND_PCM_RATE_176399: + return 176399; + case VIRTIO_SND_PCM_RATE_192000: + return 192000; + case VIRTIO_SND_PCM_RATE_384000: + return 384000; + default: + return -1; + } +} + +/* + * Get QEMU Audiosystem compatible audsettings from virtio based pcm stream + * params. + */ +static void virtio_snd_get_qemu_audsettings(audsettings *as, + virtio_snd_pcm_params *params) +{ + as->nchannels =3D params->channel; + as->fmt =3D virtio_snd_get_qemu_format(params->format); + as->freq =3D virtio_snd_get_qemu_freq(params->rate); + as->endianness =3D AUDIO_HOST_ENDIANNESS; +} + +/* + * Get the maximum number of virtqueue elements that can be inserted + * into a virtio sound pcm stream + * + * @st: virtio sound pcm stream + */ +static int virtio_snd_pcm_get_nelems(virtio_snd_pcm_stream *st) +{ + return st->buffer_bytes / st->period_bytes + + !!(st->buffer_bytes % st->period_bytes); +} + +/* + * Prepares a VirtIOSound card stream. + * Returns a virtio sound status (VIRTIO_SND_S_*). + * + * @s: VirtIOSound card + * @stream: stream id + */ +static uint32_t virtio_snd_pcm_prepare_impl(VirtIOSound *s, uint32_t strea= m) +{ + if (!s->streams || !s->pcm_params || !s->pcm_params[stream]) { + virtio_snd_err("Cannot prepare stream %d without params.\n", strea= m); + return VIRTIO_SND_S_BAD_MSG; + } + + uint32_t supported_formats =3D 1 << VIRTIO_SND_PCM_FMT_S8 | + 1 << VIRTIO_SND_PCM_FMT_U8 | + 1 << VIRTIO_SND_PCM_FMT_S16 | + 1 << VIRTIO_SND_PCM_FMT_U16 | + 1 << VIRTIO_SND_PCM_FMT_S32 | + 1 << VIRTIO_SND_PCM_FMT_U32 | + 1 << VIRTIO_SND_PCM_FMT_FLOAT; + + uint32_t supported_rates =3D 1 << VIRTIO_SND_PCM_RATE_5512 | + 1 << VIRTIO_SND_PCM_RATE_8000 | + 1 << VIRTIO_SND_PCM_RATE_11025 | + 1 << VIRTIO_SND_PCM_RATE_16000 | + 1 << VIRTIO_SND_PCM_RATE_22050 | + 1 << VIRTIO_SND_PCM_RATE_32000 | + 1 << VIRTIO_SND_PCM_RATE_44100 | + 1 << VIRTIO_SND_PCM_RATE_48000 | + 1 << VIRTIO_SND_PCM_RATE_64000 | + 1 << VIRTIO_SND_PCM_RATE_88200 | + 1 << VIRTIO_SND_PCM_RATE_96000 | + 1 << VIRTIO_SND_PCM_RATE_176399 | + 1 << VIRTIO_SND_PCM_RATE_192000 | + 1 << VIRTIO_SND_PCM_RATE_384000; + + virtio_snd_pcm_stream *st =3D g_new0(virtio_snd_pcm_stream, 1); + st->hda_fn_nid =3D VIRTIO_SOUND_HDA_FN_NID_OUT; + st->features =3D 0; + st->direction =3D stream <=3D s->snd_conf.streams / 2 ? + VIRTIO_SND_D_OUTPUT : VIRTIO_SND_D_INPUT; + st->channels_min =3D 1; + st->channels_max =3D AUDIO_MAX_CHANNELS; + st->formats =3D supported_formats; + st->rates =3D supported_rates; + st->s =3D s; + + st->buffer_bytes =3D s->pcm_params[stream]->buffer_bytes; + st->period_bytes =3D s->pcm_params[stream]->period_bytes; + + audsettings as; + virtio_snd_get_qemu_audsettings(&as, s->pcm_params[stream]); + + if (st->direction =3D=3D VIRTIO_SND_D_OUTPUT) { + /* st->voice.out =3D AUD_open_out(&s->card, + * st->voice.out, + * "virtio_snd_card", + * st, + * virtio_snd_output_cb, &as); + */ + } else { + /* st->voice.in =3D AUD_open_in(&s->card, + * st->voice.in, + * "virtio_snd_card", + * st, + * virtio_snd_input_cb, + * &as); + */ + } + + uint32_t nelems =3D virtio_snd_pcm_get_nelems(st); + st->elems =3D g_new0(VirtQueueElement *, nelems); + st->tail =3D -1; + st->w_pos =3D 0; + st->r_pos =3D 0; + s->streams[stream] =3D st; + + return VIRTIO_SND_S_OK; +} + +/* + * Handles VIRTIO_SND_R_PCM_PREPARE. + * The function writes the response to the virtqueue element. + * Returns the used size in bytes. + * + * @s: VirtIOSound card + * @elem: The request element from control queue + */ +static uint32_t virtio_snd_handle_pcm_prepare(VirtIOSound *s, + VirtQueueElement *elem) +{ + virtio_snd_pcm_hdr req; + size_t sz; + + sz =3D iov_to_buf(elem->out_sg, elem->out_num, 0, &req, sizeof(req)); + assert(sz =3D=3D sizeof(virtio_snd_pcm_hdr)); + + virtio_snd_hdr resp; + resp.code =3D virtio_snd_pcm_prepare_impl(s, req.stream_id); + sz =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &resp, sizeof(resp)); + assert(sz =3D=3D sizeof(virtio_snd_hdr)); + return sz; +} + /* The control queue handler. Pops an element from the control virtqueue, * checks the header and performs the requested action. Finally marks the * element as used. @@ -429,7 +624,8 @@ static void virtio_snd_handle_ctrl(VirtIODevice *vdev, = VirtQueue *vq) sz =3D virtio_snd_handle_pcm_set_params(s, elem); goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_PREPARE) { - virtio_snd_log("VIRTIO_SND_R_PCM_PREPARE"); + sz =3D virtio_snd_handle_pcm_prepare(s, elem); + goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_START) { virtio_snd_log("VIRTIO_SND_R_PCM_START"); } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_STOP) { --=20 2.25.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1644619356; cv=none; d=zohomail.com; s=zohoarc; b=i3wzDtK0LcPbCQkmBeLzsY/dzef6a8xs1EocvTD1dKyv5RgT5oyx9Xc5y0R6kLm+gcbTIjzSEpDRBMe1EoEO4LCiAdy2/LFLotu6nLrJOtrt2oLHGjOv24kNJmNAukGJVvqU4pbwmSD3ItyOktE01JmMVLzkoi3Snm/S/pqr5ro= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644619356; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=E83Brsv/ZX7EJNa/yMq06fa7RFTe6RXLvK84/G6qotg=; b=h7OobB08v9oVc04/n6i4KvFgYoA3mMvZmOfIyNZTEsnGQs9U3ZTiIqskO0wVZfE+csF9Dx6cEapxYHO9iRTqzhhEzT1n/gdb/XTcdyHusZl3+PVRPT3DdyBd2Rj9nH8+dGWSNPwlROqYp4lRAKLXI0teEw1DozF5g3wREeFewi4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1644619356605530.542192120184; Fri, 11 Feb 2022 14:42:36 -0800 (PST) Received: from localhost ([::1]:58786 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nIecd-0007YD-Tb for importer@patchew.org; Fri, 11 Feb 2022 17:42:35 -0500 Received: from eggs.gnu.org ([209.51.188.92]:42384) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIeDO-0007nR-4G for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:16:30 -0500 Received: from [2607:f8b0:4864:20::633] (port=36428 helo=mail-pl1-x633.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nIeDL-0003O5-22 for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:16:29 -0500 Received: by mail-pl1-x633.google.com with SMTP id x3so5756982pll.3 for ; Fri, 11 Feb 2022 14:16:26 -0800 (PST) Received: from fedora.. ([2405:201:6008:6f15:d26f:133e:cd11:90dd]) by smtp.googlemail.com with ESMTPSA id j23sm20623576pgb.75.2022.02.11.14.16.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:16:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=E83Brsv/ZX7EJNa/yMq06fa7RFTe6RXLvK84/G6qotg=; b=nq7R5vDFsYAQI75tfx2BSN/Ydg33wVSPR2y0qLhOvFHr9nKDwx60G/rb2oVKqyvFRJ bu0x9HvldmuKQJNJlJo80kPktFDxSckn/5IwjxbRcKcTaBatbmkKO9oakq/gjBTDYr1P miNQiy1d5j9mKEf1PIlWWia1IXJpzf1Nc+UQMYeesHZUc/rzAC2lGIvVmAODRPgBr/6m S/dj1xbbfjfetp4N6p/C5Gk31UjxkrDyJwex223ue5Afeyj3aPmnH5hyIAZtyNv6QVHq dE/lmwq6n1X1OhmHPFk1OzrZcX2egTTUn43RzpEoB3a36IbGMrCuuz6/jHgdD0IjqwR1 p5lA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=E83Brsv/ZX7EJNa/yMq06fa7RFTe6RXLvK84/G6qotg=; b=ApTc9zbeaM5xk9pnZlrt4Hq5qVDr00cAbEy1HBmjVbsCcxfiI/8evC9vrM+dyH5apg wY1f81qtku4ICc9YI6h4OzhdjzRvRB3N24BrSRA5LtqTgWRuYDo+T0M1Amh5imbYiENZ OYFtm99IJDQyQ7xbl12UtPYxOHFQwHjYE+Kk8aoEh/SYq9KGPLjL/uUVwxN506py2M2R NSet0wTtrZuV/J9wwU1YXxDgbk7tif2bbDSPQIYsCDGQzCf3HL7DrG/L2lxKM9t2JyWn vNuf+auXd1+NNzFUcpoglkO5sF0/uMz90UYoJxHVzk15Fon7+HMhsuh3ao5ANY4ZGjlz hB/g== X-Gm-Message-State: AOAM531TWrvq9aNubk5MkSVaSvaaqGtJwnzLzFu1r1UpnsxKLzRsigbf 8IEpliIBiWCI38dk+QGCky8= X-Google-Smtp-Source: ABdhPJwdEx9Q/Lu0szWNFDPXDDhoOUKkQXUMu4SXenjS8T9QqzWsntzNKuHafguuBX/MSzjaWVwoEg== X-Received: by 2002:a17:902:c944:: with SMTP id i4mr3594830pla.1.1644617785634; Fri, 11 Feb 2022 14:16:25 -0800 (PST) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com, laurent@vivier.eu Subject: [RFC PATCH 17/25] virtio-snd: Add default configs to realize fn Date: Sat, 12 Feb 2022 03:43:11 +0530 Message-Id: <20220211221319.193404-18-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::633 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pl1-x633.google.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1644619359181100001 Content-Type: text/plain; charset="utf-8" Added default configurations for streams and jacks in the realize function. Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index b7c4dc691d..5ed8e524a6 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -698,11 +698,51 @@ static void virtio_snd_device_realize(DeviceState *de= v, Error **errp) /* set up QEMUSoundCard and audiodev */ AUD_register_card ("virtio_snd_card", &s->card); =20 + // set default params for all streams + virtio_snd_pcm_set_params default_params; + default_params.features =3D 0; + default_params.buffer_bytes =3D 8192; + default_params.period_bytes =3D 4096; + default_params.channel =3D 2; + default_params.format =3D VIRTIO_SND_PCM_FMT_S16; + default_params.rate =3D VIRTIO_SND_PCM_RATE_44100; + s->ctrl_vq =3D virtio_add_queue(vdev, 64, virtio_snd_handle_ctrl); =20 s->streams =3D g_new0(virtio_snd_pcm_stream *, s->snd_conf.streams); s->pcm_params =3D g_new0(virtio_snd_pcm_params *, s->snd_conf.streams); s->jacks =3D g_new0(virtio_snd_jack *, s->snd_conf.jacks); + + uint32_t status; + for (int i =3D 0; i < s->snd_conf.streams; i++) { + default_params.hdr.stream_id =3D i; + status =3D virtio_snd_pcm_set_params_impl(s, &default_params); + if (status !=3D VIRTIO_SND_S_OK) { + error_setg(errp, "Can't initalize stream params.\n"); + return; + } + status =3D virtio_snd_pcm_prepare_impl(s, i); + if (status !=3D VIRTIO_SND_S_OK) { + error_setg(errp, "Can't prepare streams.\n"); + return; + } + } + + for (int i =3D 0; i < s->snd_conf.jacks; i++) { + // TODO: For now the hda_fn_nid connects the starting streams to t= hese + // jacks. This isn't working for now since the directions will be = wrong + // for a few jacks. Similarly the capabilities are just placeholde= rs. + s->jacks[i] =3D (virtio_snd_jack *)g_malloc0(sizeof(virtio_snd_jac= k)); + s->jacks[i]->features =3D 0; + s->jacks[i]->hda_fn_nid =3D i; + s->jacks[i]->hda_reg_defconf =3D ((AC_JACK_PORT_COMPLEX << AC_DEFC= FG_PORT_CONN_SHIFT) | + (AC_JACK_LINE_OUT << AC_DEFCFG_= DEVICE_SHIFT) | + (AC_JACK_CONN_1_8 << AC_DEFCFG_= CONN_TYPE_SHIFT) | + (AC_JACK_COLOR_GREEN << AC_DEFCFG_= COLOR_SHIFT) | + 0x10); + s->jacks[i]->hda_reg_caps =3D AC_PINCAP_OUT; + s->jacks[i]->connected =3D false; + } } =20 static void virtio_snd_device_unrealize(DeviceState *dev) --=20 2.31.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1619699005; cv=none; d=zohomail.com; s=zohoarc; b=E+y4R9tnx1YI/Kjzv2U2VGeXfTknoLfHlV6nIOJfR9q40/M8r6S19WDmGlAkY8acKpzWwUHPQFXRcuQot/DV7E3gD1NRYkAM5/wGc8cyGxyuQK87ZB4JqguoI4M45D1e7NEruKaFSZCLJM8C6SKmB1lamQFn2p5xzCD81qFGdUk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619699005; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=/IrQuvhJHoDdxN4Y1Muq8OrIFJtcFOEdWziqdTZsq64=; b=HBz5LgBhWFJIh+KB0vGRNTHaw/K78ItWLNjMq3XXU00yy3ZeQrMREwLCYWYAnzr8z9eARnvwam4jT0LdTzYQJhPZqo0mshrzjgnD6DirUB1nQrpyt2ANW3Sw85yo8Oz9kQstCcFRedH4lvIO8DESw4KV9Q/vBLDYilAh82tmqq4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619699005044213.49050727489737; Thu, 29 Apr 2021 05:23:25 -0700 (PDT) Received: from localhost ([::1]:59634 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lc5hT-000367-Df for importer@patchew.org; Thu, 29 Apr 2021 08:23:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39632) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lc5R2-00089i-Sa for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:25 -0400 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]:39715) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lc5Qx-0000dG-Kd for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:23 -0400 Received: by mail-pj1-x1033.google.com with SMTP id z6-20020a17090a1706b0290155e8a752d8so2353160pjd.4 for ; Thu, 29 Apr 2021 05:06:17 -0700 (PDT) Received: from localhost.localdomain ([2405:201:6008:61b4:c0b1:be0f:608e:9a45]) by smtp.gmail.com with ESMTPSA id p6sm713643pjg.35.2021.04.29.05.06.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Apr 2021 05:06:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/IrQuvhJHoDdxN4Y1Muq8OrIFJtcFOEdWziqdTZsq64=; b=euqLSRy6qZpkzLfI3cS56dbvJy5BmOdVb64+CfJ/Yhz7a+iOEiy/kAqzSYnmLDmf0f XCCx04Dd/50LfWcg5Slp8QLLcUZwldYCfClB9KCKqUroArCiEruEKbzGoyw6W5sTdlDK Oyzpr3LUpoLvq/b2QmL6TtlcMMn524NytOLZW7oDPjLrkj9XRg1VUSO5q+jl9znMXzhV zBVgDLsOzGPRX+mHBnvab9ymzAZf9raYYywEqnLG06XF7nTevYvZSdLjyX90pc1Oanga 83A8g0Y3CdnBZIyPs3YWcxLheNuFTx+0G7YJ2tph2roHfAx8ojSaGzOxfmWYPUoDqDtj Rq6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/IrQuvhJHoDdxN4Y1Muq8OrIFJtcFOEdWziqdTZsq64=; b=HcfgkV7HN3h2nhCK2dP/oRleLWSAtXb10u0H64KhMHBUUdn4zytII9zhQbfWPe65lG /nfkO36rnv6qhpBdjqtu0D4pVnZvg76C9CZFv/uoWEI+PBqI3UJiavh8lzkH7t3mNL3S thmxUjWnB7g7CW+tE3TAuK3VfrjSw9gW1glySBqM5FkIs/oYTBnmS4Tt4+uNQ0lBA6P8 v7y/SjOVBChYkof9UQKI9jmlgRbUm+EszzfaXMZoi249L4i6CAY0Z0uawZgvFM2N8g6l 44XROHs34HH3vWcRSsD8RGrOKJd1PROEVL35OWbbhonGByyt1pm1SRBMY6FbBTlTRhZZ wK6g== X-Gm-Message-State: AOAM533MCtTXz6MpXYHVdaiRkK8k5CkIyJNTsJhC1xhfQnD4AGJEMmqh F+SbrxvF5uqqU/xTCZg8z1g= X-Google-Smtp-Source: ABdhPJz/tU0K2PXXiWiM/I1eSKp+m4c+CS95KQxG/DKaG6rp0sF7S5uFrcfxNncIzmQDbcVL0Z6Zvg== X-Received: by 2002:a17:902:7c94:b029:e6:e1d7:62b7 with SMTP id y20-20020a1709027c94b02900e6e1d762b7mr35037902pll.29.1619697976908; Thu, 29 Apr 2021 05:06:16 -0700 (PDT) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com Subject: [RFC PATCH 18/27] virtio-snd: Add default configs to realize fn Date: Thu, 29 Apr 2021 17:34:36 +0530 Message-Id: <20210429120445.694420-19-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1033; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pj1-x1033.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Type: text/plain; charset="utf-8" Added default configurations for streams and jacks in the realize function. Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index dba90cc4a7..d0ab19a04a 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -683,11 +683,51 @@ static void virtio_snd_device_realize(DeviceState *de= v, Error **errp) /* set up QEMUSoundCard and audiodev */ AUD_register_card ("virtio_snd_card", &s->card); =20 + // set default params for all streams + virtio_snd_pcm_set_params default_params; + default_params.features =3D 0; + default_params.buffer_bytes =3D 8192; + default_params.period_bytes =3D 4096; + default_params.channel =3D 2; + default_params.format =3D VIRTIO_SND_PCM_FMT_S16; + default_params.rate =3D VIRTIO_SND_PCM_RATE_44100; + s->ctrl_vq =3D virtio_add_queue(vdev, 64, virtio_snd_handle_ctrl); =20 s->streams =3D g_new0(virtio_snd_pcm_stream *, s->snd_conf.streams); s->pcm_params =3D g_new0(virtio_snd_pcm_params *, s->snd_conf.streams); s->jacks =3D g_new0(virtio_snd_jack *, s->snd_conf.jacks); + + uint32_t status; + for (int i =3D 0; i < s->snd_conf.streams; i++) { + default_params.hdr.stream_id =3D i; + status =3D virtio_snd_pcm_set_params_impl(s, &default_params); + if (status !=3D VIRTIO_SND_S_OK) { + error_setg(errp, "Can't initalize stream params.\n"); + return; + } + status =3D virtio_snd_pcm_prepare_impl(s, i); + if (status !=3D VIRTIO_SND_S_OK) { + error_setg(errp, "Can't prepare streams.\n"); + return; + } + } + + for (int i =3D 0; i < s->snd_conf.jacks; i++) { + // TODO: For now the hda_fn_nid connects the starting streams to t= hese + // jacks. This isn't working for now since the directions will be = wrong + // for a few jacks. Similarly the capabilities are just placeholde= rs. + s->jacks[i] =3D (virtio_snd_jack *)g_malloc0(sizeof(virtio_snd_jac= k)); + s->jacks[i]->features =3D 0; + s->jacks[i]->hda_fn_nid =3D i; + s->jacks[i]->hda_reg_defconf =3D ((AC_JACK_PORT_COMPLEX << AC_DEFC= FG_PORT_CONN_SHIFT) | + (AC_JACK_LINE_OUT << AC_DEFCFG_= DEVICE_SHIFT) | + (AC_JACK_CONN_1_8 << AC_DEFCFG_= CONN_TYPE_SHIFT) | + (AC_JACK_COLOR_GREEN << AC_DEFCFG_= COLOR_SHIFT) | + 0x10); + s->jacks[i]->hda_reg_caps =3D AC_PINCAP_OUT; + s->jacks[i]->connected =3D false; + } } =20 static void virtio_snd_device_unrealize(DeviceState *dev) --=20 2.25.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1644618860; cv=none; d=zohomail.com; s=zohoarc; b=d/FpSbCYfvRgJ9w1lYPt8hwkjS1r97wrIrutNt00V4L/OGY/XFpDsLobD4TewWgWvyhx/QphCg86yftQ1+LFE32NyjtUgqKqwDnXGDAxOJmc/uq6x/0LCJAcKicC1mu8yRuq727I/m5kQa6USIowo1G1rLr1/zovg4qbaW/G+1w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644618860; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=R+gZanYvSiYsqszSadoV2CrOjIuLLkH7qYIDt5MtvJU=; b=V+JDmGvNYVCr63ehjkN7OZ5OX30YxORMraXI7nJqYmjFsMk3Vwlj+2w8pXzysGedMnrsq0MDXvisb3oC9X5F9KseSaZQY56vYwJgKm8rmxYpp4hj3HjBf3/evxfdOayabR6mz20H80YhbqPpRs+TAODrveI22D8on2N53MEIGMk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1644618860923491.56634465936486; Fri, 11 Feb 2022 14:34:20 -0800 (PST) Received: from localhost ([::1]:48532 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nIeUd-0008R7-Kk for importer@patchew.org; Fri, 11 Feb 2022 17:34:19 -0500 Received: from eggs.gnu.org ([209.51.188.92]:42436) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIeDU-0007qk-9T for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:16:36 -0500 Received: from [2607:f8b0:4864:20::42e] (port=35695 helo=mail-pf1-x42e.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nIeDQ-0003Oq-Pf for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:16:35 -0500 Received: by mail-pf1-x42e.google.com with SMTP id l19so12796487pfu.2 for ; Fri, 11 Feb 2022 14:16:32 -0800 (PST) Received: from fedora.. ([2405:201:6008:6f15:d26f:133e:cd11:90dd]) by smtp.googlemail.com with ESMTPSA id j23sm20623576pgb.75.2022.02.11.14.16.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:16:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=R+gZanYvSiYsqszSadoV2CrOjIuLLkH7qYIDt5MtvJU=; b=CGicqu2/0PQbEpzTymh8m65uBsDmNEYQYaa95g0S/WjZkY8pzZytRG/zKJ1xxhrQXr F/NOs73jSpKjvb/uUt5D5LoQqIMTcVe/ShSXBZqlkCBU301VqWAEb0N5EKfzaIReXK6O fP+Vtc8HDvLASe4S8FeCMFYPeU7KVARuKDH29SDxtLkYshXd1pT5MVMW/6paii+zlYGY P1DXI1udNBQOEoEzTYOqFueYSpel/ZQ6/ATze3IKZ/p+GMNKHJ/fi/zNnptz4f9e+h2N eVZhCdCnatseN0gSE49VuC48Tf0T98yIMz0uyMZnkI6jJwnR8KOiSBiSpimk0rd2hvNY 5yig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=R+gZanYvSiYsqszSadoV2CrOjIuLLkH7qYIDt5MtvJU=; b=JlplCjjsf0EM5cqdKlZwWxitPh0j3LjSkkdXQhtbV66Q015oscmlYYuPxMbG6upQxy oQLbmmckJoOPfTvyMGNypLmYYNw2m3NK6PeudFpnbXab5WzD/RIOpdCbXENDTiNf20gB 1sxJtskLrp4NsLoS7vxv9o0NWeZqKpBcUZQ4SvaJsjF7W20wDzsO400dHZ8hyhvgyCwK RQP6FqoF7RXqHK+T0fOOvftEdW9ylxKFjpFt6mIOooo7LWrB1HvOU5Fga8CltMwEGELL BbBAsbwB16ptJ9kL7kgE/APfWoNCaMgFQ0PTC+rSLZMDdrpIWGEQfEsUB7XxJ6erHt83 C1uw== X-Gm-Message-State: AOAM532n8Edr/mle1KwKhdv81pc8w0jigDi8gEHsvJ0AvWEvlzHysnBS 5J45/Ohowvpj7IelDaT6bwI= X-Google-Smtp-Source: ABdhPJwUkHMIp7wy4BKRiN1PoXxQKJX629Gybz5F26VqlmXgEQtcY72FkqnQITB39wsults1xAWWGQ== X-Received: by 2002:a63:257:: with SMTP id 84mr2985016pgc.121.1644617791455; Fri, 11 Feb 2022 14:16:31 -0800 (PST) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com, laurent@vivier.eu Subject: [RFC PATCH 18/25] virtio-snd: Add callback for SWVoiceOut Date: Sat, 12 Feb 2022 03:43:12 +0530 Message-Id: <20220211221319.193404-19-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::42e (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42e; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pf1-x42e.google.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1644618863040100001 Content-Type: text/plain; charset="utf-8" Added the callback for writing audio using AUD_write. The callback uses two helper functions for reading the buffers from the streams and handling the buffers that were written. initialized the SWVoiceOut using this callback. Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 254 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 248 insertions(+), 6 deletions(-) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index 5ed8e524a6..b74c9e4a1f 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -476,6 +476,248 @@ static int virtio_snd_pcm_get_nelems(virtio_snd_pcm_s= tream *st) + !!(st->buffer_bytes % st->period_bytes); } =20 +static uint32_t virtio_snd_pcm_get_buf_pos(virtio_snd_pcm_stream *st, + uint32_t dir) +{ + return (dir =3D=3D VIRTIO_SND_D_OUTPUT) ? st->w_pos : st->r_pos; +} + +static uint32_t virtio_snd_pcm_get_curr_elem(virtio_snd_pcm_stream *st, + uint32_t dir) +{ + uint32_t pos; + int nelems; + + nelems =3D virtio_snd_pcm_get_nelems(st); + pos =3D virtio_snd_pcm_get_buf_pos(st, dir); + + return (pos / st->period_bytes) % nelems; +} + +static uint32_t virtio_snd_pcm_get_curr_elem_cap(virtio_snd_pcm_stream *st, + uint32_t dir) +{ + uint32_t cap_bytes; + int i; + + i =3D virtio_snd_pcm_get_curr_elem(st, dir); + + if (dir =3D=3D VIRTIO_SND_D_OUTPUT) + cap_bytes =3D iov_size(st->elems[i]->out_sg, st->elems[i]->out_num) + - sizeof(virtio_snd_pcm_xfer); + else + cap_bytes =3D iov_size(st->elems[i]->in_sg, st->elems[i]->in_num) + - sizeof(virtio_snd_pcm_status); + + return cap_bytes; +} + +static uint32_t virtio_snd_pcm_get_curr_elem_used(virtio_snd_pcm_stream *s= t, + uint32_t dir) +{ + uint32_t pos; + + pos =3D virtio_snd_pcm_get_buf_pos(st, dir); + + return pos % st->period_bytes; +} + +static uint32_t virtio_snd_pcm_get_curr_elem_free(virtio_snd_pcm_stream *s= t, + uint32_t dir) +{ + uint32_t free_bytes, used; + + used =3D virtio_snd_pcm_get_curr_elem_used(st, dir); + free_bytes =3D virtio_snd_pcm_get_curr_elem_cap(st, dir) - used; + + return free_bytes; +} + +/* + * Get the size in bytes of the buffer that still has to be written. + * + * @st: virtio sound pcm stream + */ +static uint32_t virtio_snd_pcm_get_pending_bytes(virtio_snd_pcm_stream *st) +{ + return (st->direction =3D=3D VIRTIO_SND_D_OUTPUT) ? + st->r_pos - st->w_pos : + st->w_pos - st->r_pos; +} + +static uint32_t virtio_snd_pcm_get_buf_to_proc(virtio_snd_pcm_stream *st, + size_t size) +{ + uint32_t to_proc, elem_free; + + elem_free =3D virtio_snd_pcm_get_curr_elem_free(st, st->direction); + to_proc =3D MIN(elem_free, size); + + return to_proc; +} + +static void virtio_snd_pcm_update_buf_pos(virtio_snd_pcm_stream *st, uint3= 2_t dir, + uint32_t size) +{ + if (dir =3D=3D VIRTIO_SND_D_OUTPUT) + st->w_pos +=3D size; + else + st->r_pos +=3D size; +} + +/* + * Get data from a stream of the virtio sound device. Only reads upto the + * end of the current virtqueue element. Returns the number of bytes read. + * + * @buffer: Write to this buffer + * @size: The number of bytes to read + * @st: VirtIOSound card stream + * @offset: Start reading from this offseta in the stream (in bytes) + */ +static size_t virtio_snd_pcm_buf_read(void *buf, size_t to_read, + virtio_snd_pcm_stream *st) +{ + size_t sz; + int i, used; + + used =3D virtio_snd_pcm_get_curr_elem_used(st, st->direction); + i =3D virtio_snd_pcm_get_curr_elem(st, st->direction); + + sz =3D iov_to_buf(st->elems[i]->out_sg, st->elems[i]->out_num, + sizeof(virtio_snd_pcm_xfer) + used, buf, to_read); + + assert(sz =3D=3D to_read); + return sz; +} + +/* + * Marks an element as used, pushes it to queue and notifies the device. + * Also frees the element + */ +static void virtio_snd_pcm_handle_elem_used(virtio_snd_pcm_stream *st) +{ + int elem_size, i; + size_t sz, offset; + + virtio_snd_pcm_status status; + status.status =3D VIRTIO_SND_S_OK; + status.latency_bytes =3D 0; + + i =3D virtio_snd_pcm_get_curr_elem(st, st->direction); + elem_size =3D iov_size(st->elems[i]->out_sg, st->elems[i]->out_num) + + iov_size(st->elems[i]->in_sg, st->elems[i]->in_num); + offset =3D iov_size(st->elems[i]->in_sg, st->elems[i]->in_num) + - sizeof(virtio_snd_pcm_status); + + sz =3D iov_from_buf(st->elems[i]->in_sg, st->elems[i]->in_num, offset, + &status, sizeof(status)); + assert(sz =3D=3D sizeof(virtio_snd_pcm_status)); + + virtqueue_push(st->s->tx_vq, st->elems[i], elem_size); + virtio_notify(VIRTIO_DEVICE(st->s), st->s->tx_vq); + + g_free(st->elems[i]); + st->elems[i] =3D NULL; +} + +/* + * Handle a buffer after it has been written by AUD_write. + * It writes the status for the I/O messages that have been completed and + * marks the tx virtqueue elmenets as used. It notifies the device + * about I/O completion. Returns the number of bytes handled. + * + * @st: VirtIOSound card stream + * @size: Size that was written by AUD_write + * If size =3D 0, write for the last element failed + */ +static size_t virtio_snd_pcm_handle_used(virtio_snd_pcm_stream *st, + size_t size) +{ + if (size =3D=3D 0) + // error + return 0; + + size_t used, elem_buf_size; + + used =3D virtio_snd_pcm_get_curr_elem_used(st, st->direction); + elem_buf_size =3D virtio_snd_pcm_get_curr_elem_cap(st, st->direction); + + if (used + size =3D=3D elem_buf_size) + virtio_snd_pcm_handle_elem_used(st); + + virtio_snd_pcm_update_buf_pos(st, st->direction, size); + + return size; +} + +/* + * Writes upto the end of the current virtqueue element. + * Returns the numbre of bytes written. + * + * @st: Virtio sound card stream + * @size: Number of bytes to write to HWVoiceOut + */ +static size_t write_audio(virtio_snd_pcm_stream *st, + uint32_t size) +{ + size_t to_write, handled, written; + void *mixbuf; + + to_write =3D virtio_snd_pcm_get_buf_to_proc(st, size); + mixbuf =3D g_malloc0(to_write); + to_write =3D virtio_snd_pcm_buf_read(mixbuf, to_write, st); + written =3D AUD_write(st->voice.out, mixbuf, to_write); + handled =3D virtio_snd_pcm_handle_used(st, written); + assert(handled =3D=3D written); + + g_free(mixbuf); + return written; +} + +/* + * Callback for AUD_open_out. + * Reads a buffer from the VirtIOSound card stream and writes it + * using AUD_write. + * + * @opaque: VirtIOSound card stream + * @free: Size in bytes that can be written via AUD_write + */ +static void virtio_snd_output_cb(void *opaque, int free) +{ + int to_play, pending; + virtio_snd_pcm_stream *st =3D opaque; + int written =3D 0; + + pending =3D virtio_snd_pcm_get_pending_bytes(st); + + if (!pending && st->flushing) { + st->flushing =3D false; + + if (st->direction =3D=3D VIRTIO_SND_D_OUTPUT) + AUD_set_active_out(st->voice.out, false); + else + AUD_set_active_in(st->voice.in, false); + return; + } + + to_play =3D MIN(free, pending); + + virtio_snd_log("to_play: %d, free: %d, pending: %d\n", to_play, free, = pending); + while (to_play) { + int wbytes =3D write_audio(st, to_play); + + if (!wbytes) + break; + + to_play -=3D wbytes; + free -=3D wbytes; + written +=3D wbytes; + pending -=3D wbytes; + } + + virtio_snd_log("written: %d\n", written); +} + /* * Prepares a VirtIOSound card stream. * Returns a virtio sound status (VIRTIO_SND_S_*). @@ -537,12 +779,12 @@ static uint32_t virtio_snd_pcm_prepare_impl(VirtIOSou= nd *s, uint32_t stream) virtio_snd_get_qemu_audsettings(&as, params); =20 if (st->direction =3D=3D VIRTIO_SND_D_OUTPUT) { - /* st->voice.out =3D AUD_open_out(&s->card, - * st->voice.out, - * "virtio_snd_card", - * st, - * virtio_snd_output_cb, &as); - */ + st->voice.out =3D AUD_open_out(&s->card, + st->voice.out, + "virtio_snd_card", + st, + virtio_snd_output_cb, &as); + } else { /* st->voice.in =3D AUD_open_in(&s->card, * st->voice.in, --=20 2.31.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1619699964; cv=none; d=zohomail.com; s=zohoarc; b=MQFEfp/GfHTofVAAfJk8lH0lUVEPrdELixK8j2H8wTCY/xTIWNWL/m53gprkPQG8e8e+88NNbG/LyRadSDH1HdJ0U6JhG633+uclXJsiJwWzFSb5dMorMnbVDlAS0Fd0nUdTclzHPtaMHZOwzQDyJH7YeyJ4g5p3vV7N3NDXBjQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619699964; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=gY0DJMXr25pXU50e9QUg65FHn7O8LBtxhxA/IB3ZzW8=; b=k11bvDxNsb5eAiEwW0IdaHdrXb5MQscP7I+n3pHPUNdd1y4rTUgZUnwSeKsjnqKKzlXeElyc2LYK2H9tqFGKKAvNdhcdfZPmLYklaJ94Jxq5Ci6GoNQ+RxRLywtOXhKeugrQTMct3kjLum2Zq1XOsDAUxgQfyvCqofaF5KhwIMY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619699964981846.165197752805; Thu, 29 Apr 2021 05:39:24 -0700 (PDT) Received: from localhost ([::1]:38084 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lc5wx-0000mt-VC for importer@patchew.org; Thu, 29 Apr 2021 08:39:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39652) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lc5R4-0008Ac-Iy for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:26 -0400 Received: from mail-pg1-x52b.google.com ([2607:f8b0:4864:20::52b]:41599) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lc5Qz-0000e4-6E for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:26 -0400 Received: by mail-pg1-x52b.google.com with SMTP id m37so4410468pgb.8 for ; Thu, 29 Apr 2021 05:06:20 -0700 (PDT) Received: from localhost.localdomain ([2405:201:6008:61b4:c0b1:be0f:608e:9a45]) by smtp.gmail.com with ESMTPSA id p6sm713643pjg.35.2021.04.29.05.06.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Apr 2021 05:06:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=gY0DJMXr25pXU50e9QUg65FHn7O8LBtxhxA/IB3ZzW8=; b=FyOvJJ2EQeIAXyLOM2sacKRFL5QENdHTpGJMPoDLmP5ukwD0cPTAh1I2o+CEXzCq4p JIz+uvvjFfMfEQF3eMtPJzfbYiiTD/7LHAbgbm5wgi8bfqYCe/fP8zuMtWh32cupDIJU BYgVcykdra0/c5zkw6DUbnJj6DjWNEtCCKZ5Zpgg6g2WvR7to0Ss79UpxO/Zc4mI3ktT ljAwfSTZbzk6is8a2XVrqng7V/XVpcSQNF8Tt7twL7UPdfCLruqjm04PP6+0FtwDn1co s2thgdODIef50m8bYncjoJtPvIZ4J3nl14H2//wGAxKKz6Hsws4UO8U6kWaP+1TPMzlr +wfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=gY0DJMXr25pXU50e9QUg65FHn7O8LBtxhxA/IB3ZzW8=; b=YCMH33+5dUtxDuC+fB8/Hq316vlwuKgZ4v6OSFSzN+q3ax5+2o7RkzxYoITAoiwfH6 wfwZ0DpCYGc/ns6WcKNz3zQKlRWqYIxLOe9hUDYZprDjnaVDyhC1GKN5fuWWnpmq1FaW FMW9hk1G0CB3JNIMGRtrtCaQAP4lT1Ml0uw0gOlT8JLP/v+OwfGzMwKQpIiCgZRG6jDT zfgVo1lnnFJxOgX0sWA2OJ0U9SqIBEY46vyz3wMlgh9cf1LzCaQM2jo4sHadiJ1B2YwU uKh5ABWOqMJ9jyogyL/CMGldZkdVcD74dr4K5FRN0AjPZezRF6jFWw2o4dVs6yE5ayiV 7EUQ== X-Gm-Message-State: AOAM532JguzjXUgByhT/TbLWZlMqYPulcfkEHY+83llHNVa5SrMCH+nh f/o2mIHxf0FuKzayP/7KAq4= X-Google-Smtp-Source: ABdhPJwBacFH/boTyqcziHJIXO504VN5weX44MmshA6mczgf12acGE2QEmbRS8n54uMXUb5/0MLOsA== X-Received: by 2002:a62:ed0b:0:b029:25c:9ea2:abea with SMTP id u11-20020a62ed0b0000b029025c9ea2abeamr33473564pfh.46.1619697979488; Thu, 29 Apr 2021 05:06:19 -0700 (PDT) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com Subject: [RFC PATCH 19/27] virtio-snd: Add callback for SWVoiceOut Date: Thu, 29 Apr 2021 17:34:37 +0530 Message-Id: <20210429120445.694420-20-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52b; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pg1-x52b.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Type: text/plain; charset="utf-8" Added the callback for writing audio using AUD_write. The callback uses two helper functions for reading the buffers from the streams and handling the buffers that were written. initialized the SWVoiceOut using this callback. Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 171 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 165 insertions(+), 6 deletions(-) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index d0ab19a04a..e5042caf9c 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -468,6 +468,165 @@ static int virtio_snd_pcm_get_nelems(virtio_snd_pcm_s= tream *st) + !!(st->buffer_bytes % st->period_bytes); } =20 +/* + * Get the size in bytes of the buffer that still has to be written. + * + * @st: virtio sound pcm stream + */ +static int virtio_snd_pcm_get_pending_bytes(virtio_snd_pcm_stream *st) +{ + int pending =3D st->r_pos - st->w_pos; + return pending < 0 ? pending + st->buffer_bytes : pending; +} + +/* + * Get data from a stream of the virtio sound device. + * + * @st: VirtIOSound card stream + * @offset: Start reading from this offseta in the stream (in bytes) + * @buffer: Write to this buffer + * @size: The number of bytes to read + */ +static void virtio_snd_pcm_get_buf(virtio_snd_pcm_stream *st, uint32_t off= set, + void *buffer, uint32_t size) +{ + int nelems =3D virtio_snd_pcm_get_nelems(st); + int i =3D 0; + while (offset > st->period_bytes) { + offset -=3D st->period_bytes; + i++; + i %=3D nelems; + } + + + /* + * If the size spans beyond the current virtqueue element, read everyt= hing + * from the current virtqueue element and move to the next element. Re= peat + * until we have read the required size. + */ + while (size) { + int remaining =3D iov_size(st->elems[i]->out_sg, st->elems[i]->out= _num) + - sizeof(virtio_snd_pcm_xfer) - offset; + int to_read =3D MIN(remaining, size), wpos =3D 0; + size_t sz; + sz =3D iov_to_buf(st->elems[i]->out_sg, st->elems[i]->out_num, + sizeof(virtio_snd_pcm_xfer) + offset, buffer + wpo= s, + to_read); + + assert(sz =3D=3D to_read); + + offset =3D 0; + size -=3D to_read; + wpos +=3D to_read; + i++; + i %=3D nelems; + } +} + +/* + * Handle a buffer after it has been written by AUD_write. + * It writes the status for the I/O messages that have been completed and + * marks the tx virtqueue elmenets as used. It notifies the device + * about I/O completion. + * + * @st: VirtIOSound card stream + * @size: Size that was written by AUD_write + * If size =3D 0, write for the last element failed + */ +static void virtio_snd_pcm_handle_buf_written(virtio_snd_pcm_stream *st, + uint32_t size) +{ + int offset =3D st->w_pos, i =3D 0; + int nelems =3D virtio_snd_pcm_get_nelems(st); + + while (offset >=3D st->period_bytes) { + offset -=3D st->period_bytes; + i++; + i %=3D nelems; + } + + virtio_snd_pcm_status status; + size_t sz; + if (!size) { + status.status =3D VIRTIO_SND_S_IO_ERR; + status.latency_bytes =3D 0; + + sz =3D iov_from_buf(st->elems[i]->in_sg, st->elems[i]->in_num, 0, + &status, sizeof(status)); + assert(sz =3D=3D sizeof(virtio_snd_pcm_status)); + + int push_size =3D iov_size(st->elems[i]->out_sg, st->elems[i]->out= _num) + + sizeof(virtio_snd_pcm_status); + + virtqueue_push(st->s->tx_vq, st->elems[i], push_size); + return; + } + + status.status =3D VIRTIO_SND_S_OK; + status.latency_bytes =3D 0; + + /* + * If the written size spans beyond current element, update the status= for + * the current element, mark it as used and push it back on the tx + * virtqueue. Notify the device about the I/O completion. Repeat until + * the required bytes are handled. + */ + while (size) { + int curr_elem_size =3D iov_size(st->elems[i]->out_sg, st->elems[i]= ->out_num) + - sizeof(virtio_snd_pcm_xfer) - offset; + if (size >=3D curr_elem_size) { + sz =3D iov_from_buf(st->elems[i]->in_sg, st->elems[i]->in_num,= 0, + &status, sizeof(status)); + assert(sz =3D=3D sizeof(virtio_snd_pcm_status)); + + int push_size =3D sizeof(virtio_snd_pcm_xfer) + curr_elem_size + + offset + sizeof(virtio_snd_pcm_status); + + virtqueue_push(st->s->tx_vq, st->elems[i], push_size); + virtio_notify(VIRTIO_DEVICE(st->s), st->s->tx_vq); + g_free(st->elems[i]); + st->elems[i] =3D NULL; + size -=3D curr_elem_size; + virtio_snd_log("remains: %d\n", size); + st->w_pos +=3D curr_elem_size; + st->w_pos %=3D st->buffer_bytes + 1; + i++; + i %=3D nelems; + offset =3D 0; + } else { + st->w_pos +=3D size; + st->w_pos %=3D st->buffer_bytes + 1; + break; + } + } +} + +/* + * Callback for AUD_open_out. + * Reads a buffer from the VirtIOSound card stream and writes it + * using AUD_write. + * + * @opaque: VirtIOSound card stream + * @free: Size in bytes that can be written via AUD_write + */ +static void virtio_snd_output_cb(void *opaque, int free) +{ + int to_play, pending; + virtio_snd_pcm_stream *st =3D opaque; + + pending =3D virtio_snd_pcm_get_pending_bytes(st); + to_play =3D MIN(free, pending); + + while (to_play) { + uint8_t *mixbuf =3D g_malloc0(to_play); + virtio_snd_pcm_get_buf(st, st->w_pos, mixbuf, to_play); + int wbytes =3D AUD_write(st->voice.out, mixbuf, to_play); + to_play -=3D wbytes; + virtio_snd_pcm_handle_buf_written(st, wbytes); + g_free(mixbuf); + } +} + /* * Prepares a VirtIOSound card stream. * Returns a virtio sound status (VIRTIO_SND_S_*). @@ -523,12 +682,12 @@ static uint32_t virtio_snd_pcm_prepare_impl(VirtIOSou= nd *s, uint32_t stream) virtio_snd_get_qemu_audsettings(&as, s->pcm_params[stream]); =20 if (st->direction =3D=3D VIRTIO_SND_D_OUTPUT) { - /* st->voice.out =3D AUD_open_out(&s->card, - * st->voice.out, - * "virtio_snd_card", - * st, - * virtio_snd_output_cb, &as); - */ + st->voice.out =3D AUD_open_out(&s->card, + st->voice.out, + "virtio_snd_card", + st, + virtio_snd_output_cb, &as); + } else { /* st->voice.in =3D AUD_open_in(&s->card, * st->voice.in, --=20 2.25.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1644619028; cv=none; d=zohomail.com; s=zohoarc; b=BN+qkYmgAG+yJTCzGycvtn2wzHUEqE1rCa6pyK5URZGZq1ZXjGavYpR+7m6VQN/5Yznghh3azmhmq+9Wr8OSfmeIMXkNTo3hBff+E/PoD7T/W3jPJ8XksXYNnf9/hEKMkuR0gxz2+RVeD0CI2oWdlnRiUPl0IOg8p+4xpu/Ak3s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644619028; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Faef91Kdn3mtYvJYIByHGEH6KrFfsSXC/7T24yfpM+A=; b=Py9UJV4asvOLdht9YO+DF4NJvgLeB5mhuOzM7CIuE5Q5v+FRLsIdNYHd9fcevkkdyAFOmd6dmZtyz3EYtg0n7GagVJguL4UQO3JgtfAxNpqiYmnAbmMFQ2jxFDZFrc3V2RE7jlIEPDnZAYc3lLRQkf3zZNcWy5rd888GWcyj7yQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1644619028848844.2213877524541; Fri, 11 Feb 2022 14:37:08 -0800 (PST) Received: from localhost ([::1]:53890 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nIeXL-00043S-H3 for importer@patchew.org; Fri, 11 Feb 2022 17:37:07 -0500 Received: from eggs.gnu.org ([209.51.188.92]:42460) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIeDa-0007uy-0Y for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:16:42 -0500 Received: from [2607:f8b0:4864:20::42c] (port=46900 helo=mail-pf1-x42c.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nIeDX-0003Pj-SK for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:16:41 -0500 Received: by mail-pf1-x42c.google.com with SMTP id i21so17127742pfd.13 for ; Fri, 11 Feb 2022 14:16:39 -0800 (PST) Received: from fedora.. ([2405:201:6008:6f15:d26f:133e:cd11:90dd]) by smtp.googlemail.com with ESMTPSA id j23sm20623576pgb.75.2022.02.11.14.16.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:16:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Faef91Kdn3mtYvJYIByHGEH6KrFfsSXC/7T24yfpM+A=; b=OV2pZE7i+tWaDcqeRSTAKSfkMpOKLXIkHt7Bw/daIgLtRK5udvxa2nn3MUAIZ51Afh 5xMOUSNe/TZrJjnO+UQTxUT7NTD9unOUiGSgMJlSkV6wgTlaAqbvd/RELPijpcD3E2yA k0ElGrFgno452Arx13d/mDHo6Ah6+Cu6fGwWTw3+zj0xs+sEYD8WJQKGeICaqa6xkaHV ej/nlDVOG0FEwJR9KUFeUrlAaAcgqgFdIoheNwVO5nHQ8YZ3AgOZL9j+55bx/1AVkqm2 1qAQWcWo8fPn6dr30cabRMldIi3hJ17aDWGmZi5bPRUZDTDlGTzeKuAu5dp48KfwGLBj MR1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Faef91Kdn3mtYvJYIByHGEH6KrFfsSXC/7T24yfpM+A=; b=XNNt3u2HIs3u19vY0zt7LaNdjBHVfjSyMuK7FyXKUVQJhZc6f9tU413hGeYRYZpkuw i8Pag3Bop1MEq6yaUVZ8IG/H8OYixcQABzFr/1OlcQhFdzJMAD9KGoSm6F/vG/xcGiJ3 6QwsXnacY9CjhFpUiFyUFcsewdypJKz4TvusqIGN3Ane9mBeMQ2EOLDCeb0UoTCixc8T dy+7y1a4aRDNihh0qadruWBiocyo1k+kzPMHGmT17QCk/rE7RoYZPOhbKKWz9rVO577F hi3zqw1ob+1xXWG4gquLSTIdu+EDWKF1rCq2bWTABULobvWC/9T7KPKoLWqSoA5VX38b X8Yw== X-Gm-Message-State: AOAM530V2YcIQhCuLH1klUm4/4YuFwDn8QWJUkXZ+GZDzvxmaYnP9J9b 1ta+KfPuJ7eBf32RUD2XlNo= X-Google-Smtp-Source: ABdhPJxCspGSiqvnx/fqCObH5L6t5utBIalRfy6PQVUKea/qaXiTj7w3ZHq+3NAkTDyp90Aev0ET2A== X-Received: by 2002:a63:6c43:: with SMTP id h64mr3051077pgc.72.1644617798565; Fri, 11 Feb 2022 14:16:38 -0800 (PST) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com, laurent@vivier.eu Subject: [RFC PATCH 19/25] virtio-snd: Add start/stop handler Date: Sat, 12 Feb 2022 03:43:13 +0530 Message-Id: <20220211221319.193404-20-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::42c (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42c; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pf1-x42c.google.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1644619030294100003 Content-Type: text/plain; charset="utf-8" Added handlers for VIRTIO_SND_PCM_START and VIRTIO_SND_PCM_STOP. Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index b74c9e4a1f..1b3e1f75f4 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -828,6 +828,36 @@ static uint32_t virtio_snd_handle_pcm_prepare(VirtIOSo= und *s, return sz; } =20 +/* + * Handles VIRTIO_SND_R_PCM_START. + * The function writes the response to the virtqueue element. + * Returns the used size in bytes. + * + * @s: VirtIOSound card + * @elem: The request element from control queue + */ +static uint32_t virtio_snd_handle_pcm_start_stop(VirtIOSound *s, + VirtQueueElement *elem, + bool start) +{ + virtio_snd_pcm_hdr req; + size_t sz; + + sz =3D iov_to_buf(elem->out_sg, elem->out_num, 0, &req, sizeof(req)); + assert(sz =3D=3D sizeof(virtio_snd_pcm_hdr)); + + virtio_snd_hdr resp; + resp.code =3D VIRTIO_SND_S_OK; + + virtio_snd_pcm_stream *st =3D virtio_snd_pcm_get_stream(s, req.stream_= id); + if (st->direction =3D=3D VIRTIO_SND_D_OUTPUT) + AUD_set_active_out(st->voice.out, start); + + sz =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &resp, sizeof(resp)); + assert(sz =3D=3D sizeof(virtio_snd_hdr)); + return sz; +} + /* The control queue handler. Pops an element from the control virtqueue, * checks the header and performs the requested action. Finally marks the * element as used. @@ -882,9 +912,10 @@ static void virtio_snd_handle_ctrl(VirtIODevice *vdev,= VirtQueue *vq) sz =3D virtio_snd_handle_pcm_prepare(s, elem); goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_START) { - virtio_snd_log("VIRTIO_SND_R_PCM_START"); + sz =3D virtio_snd_handle_pcm_start_stop(s, elem, true); + goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_STOP) { - virtio_snd_log("VIRTIO_SND_R_PCM_STOP"); + sz =3D virtio_snd_handle_pcm_start_stop(s, elem, false); } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_RELEASE) { virtio_snd_log("VIRTIO_SND_R_PCM_RELEASE"); } else if (ctrl.code =3D=3D VIRTIO_SND_R_CHMAP_INFO) { --=20 2.31.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1619698786; cv=none; d=zohomail.com; s=zohoarc; b=hFoM3Eo62Nuy257QIRYS0eJcOn8EYcFAdf4t9LAfXGRW2a1hKqokIMjt0AOC7/6K065k816pCMl4fgpsyGSUdO2kaE7QPBzZiKcDatyraMZYe0FfIiOoFs45JYa8SEBQldrBZRF897lufgHHQYjoIpiqHF1ctAX1B1vd0FDUu2k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619698786; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=mupslfdG5GIITGwV1cGT35DsefuZ/zxb9zDHGC1N6VY=; b=F6DzLxVHaSbrFUoR57Vs6FGP0PTBLinX9qecBurlbHnBFc2m4uYtlVGWxvsscUWr85QkYdBkuKbUpQ2PZkJbmNmhsN4yeYYG+29WT2vy1XS4h4/kdh708PtcA7tJAfIlcZ9hfB/L0gXflSu8Qel/tpNOXThON1qinaZUUw0dGJ8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619698786850506.2521038280523; Thu, 29 Apr 2021 05:19:46 -0700 (PDT) Received: from localhost ([::1]:52974 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lc5dx-0000Gl-OT for importer@patchew.org; Thu, 29 Apr 2021 08:19:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39658) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lc5R5-0008Ap-8h for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:27 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]:45839) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lc5R1-0000eH-35 for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:27 -0400 Received: by mail-pl1-x631.google.com with SMTP id p17so8720328plf.12 for ; Thu, 29 Apr 2021 05:06:22 -0700 (PDT) Received: from localhost.localdomain ([2405:201:6008:61b4:c0b1:be0f:608e:9a45]) by smtp.gmail.com with ESMTPSA id p6sm713643pjg.35.2021.04.29.05.06.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Apr 2021 05:06:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=mupslfdG5GIITGwV1cGT35DsefuZ/zxb9zDHGC1N6VY=; b=n1yZosj4AVJ2W+Q7Tam2Qk7eICJN8vqxiy6zWqt2V/T58wsYjQcccSH0nPsW0++XkW sO4nNSgP8JNgCNABwqG7Srj45cUtq93G/G/yRHZkvpkJ9PWEkRqhAHrhpxxbLD5dIPfP vKGabHoI+xKW5Uft5G81eaSOWL7SVJiBGTO6apROyqQ1l768PAFDq1KGZVF8o5FlKmGl Zcfynpu4vuEtjF63BW6OikARdb8YNcl2ILP7P6U0+GPmCjk8mea+UxEBYow9XNi/QS2O tkAeJuHOSQDcHp2EL0Cogpl0A8Mdb1awm1cFun3YhALTTOdsc8U+6HEoAe9IKjQBGsHe U+uw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=mupslfdG5GIITGwV1cGT35DsefuZ/zxb9zDHGC1N6VY=; b=XGt6+LVcNBse3w/bsDH6r8zk6A0gGNQqoLJwdy9DY7SEyRoC+rUkKMDiJ8iuZ3An7n YHqVBKkZgOyIVOcO0/bnqgm/upY7OmRBa8rsanaO1G7zbFmRmRNKQSs9zVpSg8Hflmrx XLYXiaW4RrrfnlTax6RgKsS6ODsAu6V9JRWer4dzrUYaVtHcF5tWUghd/E3Re6sS/mMx m9gD/j06HUCn0dv7xzARStLIggvB5x9ht5OXVwpCCzDV7lMeDCZpaBguJDhxWPjU4q9a XOWAFzNjph+79oVAfDBx8CzK+2Spf69QpRgSvL71jI0pKFZW1Abs/myCgt+wQgEKeib3 N/3Q== X-Gm-Message-State: AOAM530yotphy/g+C5aFB/fIiN2zWm9gmAkTz6iD8+HfoPOlLKfuaiIW B0YYtk7lA4BgjF2Z4uQ38xM= X-Google-Smtp-Source: ABdhPJzoMyhijqmJa2jguB8dAcNoEvBpHkIC0q5SlgU1UfNPv7nM3zdQRw36XiokwvRb6r7uBxOnvA== X-Received: by 2002:a17:902:d2cc:b029:ed:2984:d73c with SMTP id n12-20020a170902d2ccb02900ed2984d73cmr22222228plc.54.1619697981776; Thu, 29 Apr 2021 05:06:21 -0700 (PDT) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com Subject: [RFC PATCH 20/27] virtio-snd: Add VIRITO_SND_R_PCM_START handler Date: Thu, 29 Apr 2021 17:34:38 +0530 Message-Id: <20210429120445.694420-21-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pl1-x631.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index e5042caf9c..65104baba8 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -732,6 +732,34 @@ static uint32_t virtio_snd_handle_pcm_prepare(VirtIOSo= und *s, return sz; } =20 +/* + * Handles VIRTIO_SND_R_PCM_START. + * The function writes the response to the virtqueue element. + * Returns the used size in bytes. + * + * @s: VirtIOSound card + * @elem: The request element from control queue + */ +static uint32_t virtio_snd_handle_pcm_start(VirtIOSound *s, + VirtQueueElement *elem) +{ + virtio_snd_pcm_hdr req; + size_t sz; + + sz =3D iov_to_buf(elem->out_sg, elem->out_num, 0, &req, sizeof(req)); + assert(sz =3D=3D sizeof(virtio_snd_pcm_hdr)); + + virtio_snd_hdr resp; + resp.code =3D VIRTIO_SND_S_OK; + + virtio_snd_pcm_stream *st =3D virtio_snd_pcm_get_stream(s, req.stream_= id); + AUD_set_active_out(st->voice.out, true); + + sz =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &resp, sizeof(resp)); + assert(sz =3D=3D sizeof(virtio_snd_hdr)); + return sz; +} + /* The control queue handler. Pops an element from the control virtqueue, * checks the header and performs the requested action. Finally marks the * element as used. @@ -786,7 +814,8 @@ static void virtio_snd_handle_ctrl(VirtIODevice *vdev, = VirtQueue *vq) sz =3D virtio_snd_handle_pcm_prepare(s, elem); goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_START) { - virtio_snd_log("VIRTIO_SND_R_PCM_START"); + sz =3D virtio_snd_handle_pcm_start(s, elem); + goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_STOP) { virtio_snd_log("VIRTIO_SND_R_PCM_STOP"); } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_RELEASE) { --=20 2.25.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1644618492; cv=none; d=zohomail.com; s=zohoarc; b=fpNQg80V4r2wrmj4lTiSDu07AWLefrRuu0RP0xfc+3w0jGFT80ETxaZyib4jRZP8itKjmfD6VPXPBNqqh02riQGdjNfOLkk0Fs/PV+vFpFmnmJ7wJg7lWu2S5TLfOj5eyxckL+44+TAaLUcM2ntXMBdKyJOwzNReQpCtZLgZ1/U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644618492; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=jcgKVdBYGz26iJeK3I58GmgBcZbgtQiGq0IgH+jovVI=; b=fpo+PZXSHjmaNtHpscf2O5A9ipWIVKp+tnsHrKKO+uYH5QMm+eCspqO4juD/OILiud3U9XaH/6NO4e3E13waLQH4wjAGz+0rsLDH1sblnDDoRDf+mMjPn26lbyOJz+L/DSIPM3vQo1HEUzg9hHbsZ5i6xFBCLb1xiaFKLrwU8b4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1644618492450561.2460983931519; Fri, 11 Feb 2022 14:28:12 -0800 (PST) Received: from localhost ([::1]:60044 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nIeOg-0005Lb-Tb for importer@patchew.org; Fri, 11 Feb 2022 17:28:10 -0500 Received: from eggs.gnu.org ([209.51.188.92]:42606) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIeE8-0008HV-KL for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:17:16 -0500 Received: from [2607:f8b0:4864:20::1036] (port=35535 helo=mail-pj1-x1036.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nIeE4-0003S6-Os for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:17:16 -0500 Received: by mail-pj1-x1036.google.com with SMTP id a11-20020a17090a740b00b001b8b506c42fso13283927pjg.0 for ; Fri, 11 Feb 2022 14:16:50 -0800 (PST) Received: from fedora.. ([2405:201:6008:6f15:d26f:133e:cd11:90dd]) by smtp.googlemail.com with ESMTPSA id j23sm20623576pgb.75.2022.02.11.14.16.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:16:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=jcgKVdBYGz26iJeK3I58GmgBcZbgtQiGq0IgH+jovVI=; b=QXRLo02SCKYwO5OVn/qPEINHcDeo/vTBji5kAw3vDjkjKI3vyNQmvymCK7bLxlsEcV HNsYW6RXKyqnbEA5WTEP188NdhRCnjftDUlvt8lbpSEojE2nm+lRouXF6j+FWze1KySq xbMYtvXbXIomw12n/rZLQKAAtyobKii7XNjgoAb5VC+gdS5Ym8IipnLbqg2NXAKBBW3A MbNhW3FC2EZiR5TAAt4qa+8Oucvf4unZplaiGBKHYwOZ0Vw2pG3JwTRVWPQrnzXhEHz9 4fziHKuCluzSG+T0AN2PNI9txOfvnlgfnnqEnvExPlt7iEIMUDLOcJtyLQ2Ent9qUypo 8ruw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=jcgKVdBYGz26iJeK3I58GmgBcZbgtQiGq0IgH+jovVI=; b=j9MkdL3zl4WPQ4KhM1Pucm34ApdXkS+VVkSuOcwswH/dGheT4rHfj973xSRT98W7Yr Qw1MchdjCawWTIRTUVzeZRxNGlwIbraY9UX2XMgeGBplbCu8QnwDAzq7FMc/7Chaqx00 JjAVt1XCs3oRN+JqsFamINWgZaqrEwPvBmq6Q0+2pEG6sTLjzK33F3Tyv32jX18nrF9o 9GlcIPJ2qgp/+ET34vNj2D5oFe0P/oKpJo4Zoip5kJfMzT8ROsvw9lQ4XudEri7yFzmG 4+KfvQsd/+EoNRxzpfYSnA+5uss1CYniNPm+WXqibvNp52xu3KaHuWVzZE8HBrDmesnW Q5nQ== X-Gm-Message-State: AOAM530bWRFiFnVShE2yIrDJdrzIROX5NS9pnfQ+xxCB23JJXHWSuIlt Fm7Z6WEez65ZvLqQeAl5S6s= X-Google-Smtp-Source: ABdhPJzRtY0RWdIVGkvDxgHDjePbd5QND5S9Mcuh7iDRJ9mxivgFgtnSs1peyAb+nG7j6CiNSVAGbQ== X-Received: by 2002:a17:90a:601:: with SMTP id j1mr2560600pjj.192.1644617809164; Fri, 11 Feb 2022 14:16:49 -0800 (PST) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com, laurent@vivier.eu Subject: [RFC PATCH 20/25] virtio-snd: Add VIRTIO_SND_R_PCM_RELEASE handler Date: Sat, 12 Feb 2022 03:43:14 +0530 Message-Id: <20220211221319.193404-21-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::1036 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pj1-x1036.google.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1644618494299100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 82 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 81 insertions(+), 1 deletion(-) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index 1b3e1f75f4..7b80a92737 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -858,6 +858,85 @@ static uint32_t virtio_snd_handle_pcm_start_stop(VirtI= OSound *s, return sz; } =20 +/* + * Releases the resources allocated to a stream. Sepearated from the handl= er + * so that the code could be reused in the unrealize function. + * + * TODO: Doesn't handle the stream buffers that are yet to be played. + * + * @s: VirtIOSound card + * @stream: stream id + */ +static uint32_t virtio_snd_pcm_release_impl(virtio_snd_pcm_stream *st, uin= t32_t stream) +{ + // if there are still pending io messages do nothing + if (virtio_snd_pcm_get_pending_bytes(st)) { + // flush the stream + virtio_snd_log("Started flushing stream"); + + // set flushing to true, the callback will automatically close the + // stream once the flushing is done + st->flushing =3D true; + + if (st->direction =3D=3D VIRTIO_SND_D_OUTPUT) + AUD_set_active_out(st->voice.out, true); + else + AUD_set_active_in(st->voice.in, true); + return VIRTIO_SND_S_OK; + } + + if (st->direction =3D=3D VIRTIO_SND_D_OUTPUT) + AUD_close_out(&st->s->card, st->voice.out); + else + AUD_close_in(&st->s->card, st->voice.in); + + if (st->elems) { + int nelems =3D virtio_snd_pcm_get_nelems(st); + for (int i =3D 0; i < nelems; i++) { + g_free(st->elems[i]); + st->elems[i] =3D NULL; + } + g_free(st->elems); + st->elems =3D NULL; + } + + g_free(st->s->streams[stream]); + st->s->streams[stream] =3D NULL; + return VIRTIO_SND_S_OK; +} + +/* + * Handles VIRTIO_SND_R_PCM_RELEASE. + * The function writes the response to the virtqueue element. + * Returns the used size in bytes. + * TODO: Doesn't handle the stream buffers that are yet to be played. + * + * @s: VirtIOSound card + * @elem: The request element from control queue + */ +static uint32_t virtio_snd_handle_pcm_release(VirtIOSound *s, + VirtQueueElement *elem) +{ + virtio_snd_pcm_hdr req; + virtio_snd_hdr resp; + size_t sz; + sz =3D iov_to_buf(elem->out_sg, elem->out_num, 0, &req, sizeof(req)); + assert(sz =3D=3D sizeof(virtio_snd_pcm_hdr)); + + virtio_snd_log("Release called\n"); + + virtio_snd_pcm_stream *st =3D virtio_snd_pcm_get_stream(s, req.stream_= id); + if (!st) { + virtio_snd_err("already released %d\n", req.stream_id); + return VIRTIO_SND_S_BAD_MSG; + } + + resp.code =3D virtio_snd_pcm_release_impl(st, req.stream_id); + sz =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &resp, sizeof(resp)); + assert(sz =3D=3D sizeof(virtio_snd_hdr)); + return sz; +} + /* The control queue handler. Pops an element from the control virtqueue, * checks the header and performs the requested action. Finally marks the * element as used. @@ -917,9 +996,10 @@ static void virtio_snd_handle_ctrl(VirtIODevice *vdev,= VirtQueue *vq) } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_STOP) { sz =3D virtio_snd_handle_pcm_start_stop(s, elem, false); } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_RELEASE) { - virtio_snd_log("VIRTIO_SND_R_PCM_RELEASE"); + sz =3D virtio_snd_handle_pcm_release(s, elem); } else if (ctrl.code =3D=3D VIRTIO_SND_R_CHMAP_INFO) { virtio_snd_log("VIRTIO_SND_R_CHMAP_INFO"); + goto done; } else { /* error */ virtio_snd_err("virtio snd header not recognized: %d\n", ctrl.= code); --=20 2.31.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1644619475; cv=none; d=zohomail.com; s=zohoarc; b=F7LMYjAyyZgmz5jgy2xhoRVCzGiVM9KSQVRgoYAPeQ32T80FF6E3GbUiZ1KZrkDHFUV3X9a6lQfN0OIvUaQFQAxqVPb23JpW8YPK4y9B1uIQKqI90LtMq8AIlR4Ygjfcepa2fJqPfhZGYQ+tusZObwrUsXVGSZkh9np7LYnIMV8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644619475; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=7vHXtAc+iw+jjcDwBXJJJW3A1uzOHSjoNooFC1mbnHw=; b=jd81QSEqZ1OHDFbo7N75e2XDMxbV7/MEZGDjwmLHW4KnHBn64ZcZZXX0Mf86go9QZ62o2s9uUd3ae85CKDPaNuoHOKsiZBUSb5c/I6uIP3chf5EQ00QGPGEuvroaJkv/sb0kzmwb4KYRPKMAQq2M7NfxFzfB1pGcIL75Rlzam+k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1644619475423294.0347035868631; Fri, 11 Feb 2022 14:44:35 -0800 (PST) Received: from localhost ([::1]:33356 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nIeeX-00011X-U7 for importer@patchew.org; Fri, 11 Feb 2022 17:44:33 -0500 Received: from eggs.gnu.org ([209.51.188.92]:42604) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIeE8-0008HG-EH for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:17:16 -0500 Received: from [2607:f8b0:4864:20::102e] (port=44953 helo=mail-pj1-x102e.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nIeE4-0003SE-Nk for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:17:16 -0500 Received: by mail-pj1-x102e.google.com with SMTP id d9-20020a17090a498900b001b8bb1d00e7so10080823pjh.3 for ; Fri, 11 Feb 2022 14:16:54 -0800 (PST) Received: from fedora.. ([2405:201:6008:6f15:d26f:133e:cd11:90dd]) by smtp.googlemail.com with ESMTPSA id j23sm20623576pgb.75.2022.02.11.14.16.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:16:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=7vHXtAc+iw+jjcDwBXJJJW3A1uzOHSjoNooFC1mbnHw=; b=Iqro1EhKXClYPMWP8gf3iDpayA9/YZWRjr7Fmf9rvAgzi3q1jLgUfNhA1CAeVgkSuC SI+ff6HRuGF+E1x8rOqivhv39JhTnsgBAv3GF5HhszxUYAkytcory9uHHljCpZvAyCN/ DQEkXL0NJe1qmqED862M81LjW5hyqL5umBuAHJOZTi9echp/rlXQxE8LHfLzbzQk+DaF a77hEKr4ZS9lJkrKV15Jx5D5ujiEC7pR24V/XPFf5unw5HL4IeZ+TiqtMtqYhF8ct9iJ T/l/KHzgSiVQ1yTD65YKl4rHF8EPnccXzUNIIwGzT33ez8h49BjHp2/ecpaPtT0JZhel C6SQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=7vHXtAc+iw+jjcDwBXJJJW3A1uzOHSjoNooFC1mbnHw=; b=eTSKErHGKpnxbawyv2lIiUvnOqzcmnYw+1sJMwlY3ksQkd8RChf6K1C24c7n1m/sps ol87mwSwa3bNYZhR/Oze1c5BRCyTZ+Y2RbMh6z0cYqm+lJuASDzuPVZBDV0VRli1KLVB LgmU3z4t4tv04ii9L794SGvlU5yJ0/T7jso5gkLLwX7pm/Li+HZjO55J7+o2OAaBpruw Une9KAYbVpsNLYwNJRheKIj5dQP5GZ/tbo3gwEqwxKUfaQp6R77PSY31gi+wSHhpfJIb eVqOf/TydYDOBnZbTppmk+qpLByFV9mf+XwtjRoo++55iL7OSaRjihF3B5mG5aH7DAm4 01Og== X-Gm-Message-State: AOAM531XQ6W+bMsqxBp2fAJuvUIPeEE9iIERjujGaek2iDOUAVbGq/6C A5/xxJYBv+1wkKJluryilao= X-Google-Smtp-Source: ABdhPJyf6px/CEaVFEBeZTwMAuR+22l5PmqTvO1IgTWqvcM5S6cJa7cADlVT7od2+vd0X9ZfMIJnZA== X-Received: by 2002:a17:90a:de10:: with SMTP id m16mr2447299pjv.157.1644617813587; Fri, 11 Feb 2022 14:16:53 -0800 (PST) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com, laurent@vivier.eu Subject: [RFC PATCH 21/25] virtio-snd: Replaced goto with if else Date: Sat, 12 Feb 2022 03:43:15 +0530 Message-Id: <20220211221319.193404-22-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::102e (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102e; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pj1-x102e.google.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1644619477674100001 Content-Type: text/plain; charset="utf-8" Removed goto from the ctrl vq handler and added an if else branch for error handling. Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index 7b80a92737..cb83db0e89 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -947,7 +947,7 @@ static uint32_t virtio_snd_handle_pcm_release(VirtIOSou= nd *s, static void virtio_snd_handle_ctrl(VirtIODevice *vdev, VirtQueue *vq) { VirtIOSound *s =3D VIRTIO_SOUND(vdev); - virtio_snd_hdr ctrl; + virtio_snd_hdr ctrl, resp; =20 VirtQueueElement *elem =3D NULL; size_t sz; @@ -959,7 +959,7 @@ static void virtio_snd_handle_ctrl(VirtIODevice *vdev, = VirtQueue *vq) if (!elem) { break; } - if (iov_size(elem->in_sg, elem->in_num) < sizeof(ctrl) || + if (iov_size(elem->in_sg, elem->in_num) < sizeof(resp) || iov_size(elem->out_sg, elem->out_num) < sizeof(ctrl)) { virtio_snd_err("virtio-snd ctrl missing headers\n"); virtqueue_detach_element(vq, elem, 0); @@ -975,41 +975,36 @@ static void virtio_snd_handle_ctrl(VirtIODevice *vdev= , VirtQueue *vq) if (sz !=3D sizeof(ctrl)) { /* error */ virtio_snd_err("virtio snd ctrl could not read header\n"); + resp.code =3D VIRTIO_SND_S_BAD_MSG; } else if (ctrl.code =3D=3D VIRTIO_SND_R_JACK_INFO) { sz =3D virtio_snd_handle_jack_info(s, elem); - goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_JACK_REMAP) { sz =3D virtio_snd_handle_jack_remap(s, elem); - goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_INFO) { sz =3D virtio_snd_handle_pcm_info(s, elem); - goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_SET_PARAMS) { sz =3D virtio_snd_handle_pcm_set_params(s, elem); - goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_PREPARE) { sz =3D virtio_snd_handle_pcm_prepare(s, elem); - goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_START) { sz =3D virtio_snd_handle_pcm_start_stop(s, elem, true); - goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_STOP) { sz =3D virtio_snd_handle_pcm_start_stop(s, elem, false); } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_RELEASE) { sz =3D virtio_snd_handle_pcm_release(s, elem); } else if (ctrl.code =3D=3D VIRTIO_SND_R_CHMAP_INFO) { virtio_snd_log("VIRTIO_SND_R_CHMAP_INFO"); - goto done; } else { /* error */ virtio_snd_err("virtio snd header not recognized: %d\n", ctrl.= code); + resp.code =3D VIRTIO_SND_S_BAD_MSG; } =20 - virtio_snd_hdr resp; - resp.code =3D VIRTIO_SND_S_OK; - sz =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &resp, sizeof(re= sp)); + if (resp.code =3D=3D VIRTIO_SND_S_BAD_MSG) { + sz =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &resp, + sizeof(resp)); + } =20 -done: virtqueue_push(vq, elem, sz); virtio_notify(vdev, vq); g_free(iov2); --=20 2.31.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1619699071; cv=none; d=zohomail.com; s=zohoarc; b=f55L0bAswgRNgZjUKECW77lID8z7LWeifrC4Uy/a/99suqigji3ma/gpQ+yBKESQv9O4WkqXlrYLOTnq4U0jHKWAWIQZtgD9NEM45JRpHOKEXdSukZ7pOjWJHvP6hhJ4ka4xjDZWcSrv0rmndpIKgmFb/PhMSeH7xen6WA54tm0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619699071; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=wWBhY7kSgyVuXhQC9AlGO8VAvuu+x5orJIycq5NPZPU=; b=MDuC9aB8td6SGC4irqptGt8Mhf0x6ZnRdrnUbnT6aiao+FFaF7uoILNAaHWeQ1KfP0Rxw3MXs3mwBFADf7NvTbUgrYIGFZa8xi2GNbqtJ8qlFbTAc42V5pmAOKieW1cvKn4hLQpgbrVNBlNZHcftU7B/NVlqIDrx6RzbETk9SCI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 161969907103545.271376768508844; Thu, 29 Apr 2021 05:24:31 -0700 (PDT) Received: from localhost ([::1]:33370 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lc5iY-0003ue-CS for importer@patchew.org; Thu, 29 Apr 2021 08:24:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39672) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lc5R8-0008Cw-B5 for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:30 -0400 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]:45877) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lc5R3-0000eq-LL for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:30 -0400 Received: by mail-pj1-x1031.google.com with SMTP id gc22-20020a17090b3116b02901558435aec1so7105365pjb.4 for ; Thu, 29 Apr 2021 05:06:25 -0700 (PDT) Received: from localhost.localdomain ([2405:201:6008:61b4:c0b1:be0f:608e:9a45]) by smtp.gmail.com with ESMTPSA id p6sm713643pjg.35.2021.04.29.05.06.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Apr 2021 05:06:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=wWBhY7kSgyVuXhQC9AlGO8VAvuu+x5orJIycq5NPZPU=; b=rrMgyEzfYIaHMVcPQuASitqqMCEGlyeulBzifNdV5uAMuWZ4UIBHUy+O68NmFHwH1/ FzIRK0qXfn1o/Fh779rxCd6TqEXsbrHyiituppCX4+noFWbzXafbgh52Eu+TqiYEeI0d IttTcwWxWP4KV8Uo66KHiSWCUUPPvuhrMC5pLIE8zBDhCXBUs7ATGNghdsk2Fxsf9Wvp zwc2NxN25yG8Ds70k2i8XUWRoW7zRJA2p7dcE0JII/EtSEsKQ054zP0JPsP0aLooGS1S KNO88bhvxM3LLNKS1n8V5s0AawT3UI0uzld6m1UP495torAgMZzbNBc5ddMc1GDX1aLZ 4hHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=wWBhY7kSgyVuXhQC9AlGO8VAvuu+x5orJIycq5NPZPU=; b=JW4aP6ZQy6l0u7ntNjaC47DsXO5Be66w31Ms146lW72DrC0pq5vVmvUKONDzMktPbm hoPTxCFgnunIQFKlLbcl4VgphEY2KXR8q5rnxMQQ+glhhhvwwwh+imPTo4pXCVW1fJjr aYvCYGfB0+E8AO4nrtvmuvkHbso9irra0aB3Ha4OxD/p8UOqYBf82asMrDVP85QA9DRa N6fPio/kFvTUE2CVioWkAlpPXWdDbacnbaOmnzPNBUcMQR4tlownN60Hen0V6tBaBoUN n7gQPUyRdhN+Rwrt0x0LA8/uALC4/2BNwEHgCqAT286HlodfdYXpQLytKgpQuIKOJV49 YIgg== X-Gm-Message-State: AOAM531It59g8y5usRgKtfAghq82zlo5rXK6b1BYnV/e29TmlHcarki+ rkViPQX1dMYcL3mPgV+wIEQ= X-Google-Smtp-Source: ABdhPJz9+60q+VEXsVXS7ANtXg7mU7m4VqGuMgOcNdLXXAhv6ZYZuZuQDtU5j2Dn8sEPExBL9jFbsw== X-Received: by 2002:a17:90b:d81:: with SMTP id bg1mr10540319pjb.179.1619697984139; Thu, 29 Apr 2021 05:06:24 -0700 (PDT) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com Subject: [RFC PATCH 21/27] virtio-snd: Add VIRTIO_SND_R_PCM_STOP handler Date: Thu, 29 Apr 2021 17:34:39 +0530 Message-Id: <20210429120445.694420-22-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1031; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pj1-x1031.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index 65104baba8..8be3fb9bf5 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -760,6 +760,35 @@ static uint32_t virtio_snd_handle_pcm_start(VirtIOSoun= d *s, return sz; } =20 +/* + * Handles VIRTIO_SND_R_PCM_STOP. + * The function writes the response to the virtqueue element. + * Returns the used size in bytes. + * TODO: Doesn't handle the stream buffers that are yet to be played. + * + * @s: VirtIOSound card + * @elem: The request element from control queue + */ +static uint32_t virtio_snd_handle_pcm_stop(VirtIOSound *s, + VirtQueueElement *elem) +{ + virtio_snd_pcm_hdr req; + size_t sz; + + sz =3D iov_to_buf(elem->out_sg, elem->out_num, 0, &req, sizeof(req)); + assert(sz =3D=3D sizeof(virtio_snd_pcm_hdr)); + + virtio_snd_hdr resp; + resp.code =3D VIRTIO_SND_S_OK; + + virtio_snd_pcm_stream *st =3D virtio_snd_pcm_get_stream(s, req.stream_= id); + AUD_set_active_out(st->voice.out, false); + + sz =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &resp, sizeof(resp)); + assert(sz =3D=3D sizeof(virtio_snd_hdr)); + return sz; +} + /* The control queue handler. Pops an element from the control virtqueue, * checks the header and performs the requested action. Finally marks the * element as used. @@ -817,7 +846,8 @@ static void virtio_snd_handle_ctrl(VirtIODevice *vdev, = VirtQueue *vq) sz =3D virtio_snd_handle_pcm_start(s, elem); goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_STOP) { - virtio_snd_log("VIRTIO_SND_R_PCM_STOP"); + sz =3D virtio_snd_handle_pcm_stop(s, elem); + goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_RELEASE) { virtio_snd_log("VIRTIO_SND_R_PCM_RELEASE"); } else { --=20 2.25.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1644618543; cv=none; d=zohomail.com; s=zohoarc; b=Ers8fScQcUsGfaJuxlehL4RUegkw0DtFPfe9biv33bklnF76s1zNhfwsyrPQB5X3GfwzSgbPRTc7MLAX5f4vs5LURNhbf8cqU/pIIFjmV76311cIpv8YouOVdJvhZ/t8WRVArTu4czH0IHKnH6TLs/Jo7VaXiMMvwBsKeLnO4mk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644618543; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=kC/UzqFRz5NAEDQF8d/94cxeWUB9KRrUESXiQLrGgJ4=; b=OaEG+v3FH5jVBd1dUsLHQaCWezI6DQP1wysJHHCD0v5Y2hOovh2hzZ8F48tdjusWTwtohI5nJb2gNnj0F4rlPq2swZsZyOU4TU8vezp448T83bTVlXcRXZg2/T6x1HbOrS9Vea3+2Och2P4odKKE+p2Xc6XwfqC1TYDbsYNY+BU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1644618543589321.33151102389115; Fri, 11 Feb 2022 14:29:03 -0800 (PST) Received: from localhost ([::1]:36668 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nIePW-0000BL-JT for importer@patchew.org; Fri, 11 Feb 2022 17:29:02 -0500 Received: from eggs.gnu.org ([209.51.188.92]:42590) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIeE7-0008FQ-S5 for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:17:15 -0500 Received: from [2607:f8b0:4864:20::1035] (port=37515 helo=mail-pj1-x1035.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nIeE4-0003Sc-J0 for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:17:15 -0500 Received: by mail-pj1-x1035.google.com with SMTP id v5-20020a17090a4ec500b001b8b702df57so13204440pjl.2 for ; Fri, 11 Feb 2022 14:17:00 -0800 (PST) Received: from fedora.. ([2405:201:6008:6f15:d26f:133e:cd11:90dd]) by smtp.googlemail.com with ESMTPSA id j23sm20623576pgb.75.2022.02.11.14.16.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:16:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=kC/UzqFRz5NAEDQF8d/94cxeWUB9KRrUESXiQLrGgJ4=; b=fpc5gx1NaZF6ia2ROO3y1tdNNFXedP7SYrv/tg4SWdzrV8OLmj7di0ri1jiZZ6Bo4u DXRoDViEEgmTAsatY4BTG1tCqlv8z2CAyZNErIqXnR5IScjzrdgtpl+6syMeto4N9yRd D2XY+3gZySS7d6KSa4JyFusDx3Q0NEFd4QwJknDuYfT3h0G2cIZhSfxNtxuoVR9XVutl QDDTG4Jzzsx8BMKL1i7kuJu8Uf2d4pZoPElE+5aGz/dMNqPzhuDLK2eJ4d9sOAxaNVd0 LfJUUWWOBLX+GwKlh16FSRc6Z0iWMcQK8uJhWvm+y4q0RXAnx6J3OhYeWG5Y/SxVHObp DVbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=kC/UzqFRz5NAEDQF8d/94cxeWUB9KRrUESXiQLrGgJ4=; b=4iuF/K/DHGy8boVrucXrRyi9uBm+K/HCUshB/ZeXTrobEIa+2b6GU7OMLzOMCoGIXQ Mgvj3UrUQMPc1UKkaza6Eg+SzHln5oY4NEnpVvUWS1hjs6VN/qVhNsHihrFsbsUL/cCK rxtnHtshM5OFfiqoE/jJW7QxpO/2VE/XIOeTCqvL2nGYFfdWMKnFlx6B+Qz63v8Kw6IG UUTomdDY/PHaZtgMzB16ZKoyD79HE+gRVx94QQxHOXuCeSJvVaJ+8z2VAO3yrWkfCGjX F1yHlMlNGA2aUHhe6GjCtloi0yEE1vr1wG3MlCG/FHv2JSPhn8AqM8mgpglPf2/nOvjV UHDA== X-Gm-Message-State: AOAM531SXz5kHXxChRhGVp5NTmxm+CeOnEPUFivCLICeFskMIF4NRwEC jeivbL2dQcSeaE1TuZvMcXQ= X-Google-Smtp-Source: ABdhPJyhUP2NTzmYvgQyS+a1XREpjwGxItA4b7yvx1VZxXHJJjRw/3l2+zEtf8U03luEKaIbeZQn4w== X-Received: by 2002:a17:902:7109:: with SMTP id a9mr3700115pll.170.1644617820142; Fri, 11 Feb 2022 14:17:00 -0800 (PST) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com, laurent@vivier.eu Subject: [RFC PATCH 22/25] virtio-snd: Add code to device unrealize function Date: Sat, 12 Feb 2022 03:43:16 +0530 Message-Id: <20220211221319.193404-23-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::1035 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1035; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pj1-x1035.google.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1644618544596100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index cb83db0e89..7dd89c444b 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -1093,8 +1093,38 @@ static void virtio_snd_device_realize(DeviceState *d= ev, Error **errp) } } =20 +/* + * Frees the resources allocated to the device and then frees the device + * itself. + * + * @dev: VirtIOSound card device + */ static void virtio_snd_device_unrealize(DeviceState *dev) { + VirtIOSound *s =3D VIRTIO_SOUND(dev); + + for (int i =3D 0; i < s->snd_conf.streams; i++) { + virtio_snd_pcm_stream *st =3D virtio_snd_pcm_get_stream(s, i); + virtio_snd_pcm_release_impl(st, i); + g_free(s->pcm_params[i]); + s->pcm_params[i] =3D NULL; + } + g_free(s->streams); + s->streams =3D NULL; + g_free(s->pcm_params); + s->pcm_params =3D NULL; + + for (int i =3D 0; i < s->snd_conf.jacks; i++) { + g_free(s->jacks[i]); + s->jacks[i] =3D NULL; + } + g_free(s->jacks); + s->jacks =3D NULL; + + virtio_delete_queue(s->ctrl_vq); + virtio_delete_queue(s->tx_vq); + virtio_delete_queue(s->event_vq); + virtio_delete_queue(s->rx_vq); } =20 static void virtio_snd_reset(VirtIODevice *vdev) --=20 2.31.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1619699270; cv=none; d=zohomail.com; s=zohoarc; b=TYpAkv+rBcaM7FSrVEtIsjEVVTUB523reyyjmF+QzfzdTDSldARsbo8C++qMazZhqNPvM7vN5MXHGIFHNXNGKQwN3n1Eom2/Lc/7GaD3n4mp765L+kGph8EllipR+GGml/0KD/1xuIAI1NBffd7d+LkR8HrJ52OirPy17Il12MU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619699270; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=CM0SCj/hhpy4ZFxSQx0oYrpYDxC8rll6O8tJCYsm9/A=; b=NLjD/1d8V8FfUX/WXhhPV7q3s8smwQGswTccl8y2WhQbzPuWuUaqBs331lxAWhsInlIosSBJvbuJEzioXeXfGuU5YpKRPWjAMwfRLQet7LLJFnM+c2EB2V3Al/CGfVZ4stwpsPxJkfbCQLaWgfV0Ave8ZwSPmPW87NHbwsZR+dY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619699270784290.0622268437777; Thu, 29 Apr 2021 05:27:50 -0700 (PDT) Received: from localhost ([::1]:39960 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lc5lk-0006gB-F2 for importer@patchew.org; Thu, 29 Apr 2021 08:27:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39706) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lc5RA-0008IK-Sb for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:32 -0400 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]:46975) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lc5R6-0000hA-8k for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:32 -0400 Received: by mail-pj1-x1033.google.com with SMTP id u14-20020a17090a1f0eb029014e38011b09so10822235pja.5 for ; Thu, 29 Apr 2021 05:06:27 -0700 (PDT) Received: from localhost.localdomain ([2405:201:6008:61b4:c0b1:be0f:608e:9a45]) by smtp.gmail.com with ESMTPSA id p6sm713643pjg.35.2021.04.29.05.06.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Apr 2021 05:06:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=CM0SCj/hhpy4ZFxSQx0oYrpYDxC8rll6O8tJCYsm9/A=; b=jBayHEgCmcFFygJYWMTO8enexw+sMAxUFQnmAwsN9qGDM13Qdod7cuFTvv6yK562pI pIBA9AT4RMp871eMZUxrKKaI1J4mjoWCcNTBRH91n4Jwt2adOhuSSrigFkGYHPOyPGpN YMIl6CVyFiIdiVPFbJlQVLNFAFKj0Lhmrx1rI+i5QA4DWzLVObA5UCLdGa3a8r10Yv46 li0e5OnqAO7ODHCWLfStbtwgVVWbOhXFI0ayz50Rh9m6oCOd4IOA10v0UlJBVOrfWnkn 9W2HNGKN00S50LAk6C6f2LV8HOFuzS+pAu4FsDE2FL+ajRDcKBk2/eszxqIbugZFKKXK rRSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=CM0SCj/hhpy4ZFxSQx0oYrpYDxC8rll6O8tJCYsm9/A=; b=EQ1H9uNmg6GZ1H7NyKcPj+sBMoFYlwNt+Ul6rjhAiB9Kbb1kZw5vsqOphliQiwxJDj zJMw2QLUD2ZmuTyDvzkT9u3tinXkFNAhujvAraEaTKLFx9ymshYhRT7EECiG70NQbzqy u0sNUGTIArheKDku6G+Hq0DCq+jfmRuq5vzpwq0Z4ko4kCO386x4Wccuu67b+L/qmWEK fkz54jQmYyZi867Nlt6UQAnFdtp2a1qYUbGaenWnccnt8O3UTFkzfvTAr01H5sE4Hyxs UHnk6kBd2yKdPgM4k7wQGGP0c5uhiwJxiyNHAqKzgkKujF4dS8YH7lRWuOdp1gC7+H4o 66ZA== X-Gm-Message-State: AOAM5300p9bJ0ZzdHpex0A0jppiPGc0ymCFqvcjz3cCaAgr39jId72h6 bwRcAs/Ja9+byNi9BKFTcSk= X-Google-Smtp-Source: ABdhPJzpBA2mbmj1J5f5ahx2JNyo+NNsRkZA4CEO6RlNlMkMZ9b1QsW5LZNWblNX19WPOuDf2MY3ZA== X-Received: by 2002:a17:90a:e384:: with SMTP id b4mr9542047pjz.157.1619697986559; Thu, 29 Apr 2021 05:06:26 -0700 (PDT) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com Subject: [RFC PATCH 22/27] virtio-snd: Add VIRTIO_SND_R_PCM_RELEASE handler Date: Thu, 29 Apr 2021 17:34:40 +0530 Message-Id: <20210429120445.694420-23-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1033; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pj1-x1033.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 66 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index 8be3fb9bf5..56e07a41f8 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -789,6 +789,69 @@ static uint32_t virtio_snd_handle_pcm_stop(VirtIOSound= *s, return sz; } =20 +/* + * Releases the resources allocated to a stream. Sepearated from the handl= er + * so that the code could be reused in the unrealize function. + * + * TODO: Doesn't handle the stream buffers that are yet to be played. + * + * @s: VirtIOSound card + * @stream: stream id + */ +static uint32_t virtio_snd_pcm_release_impl(VirtIOSound *s, uint32_t strea= m) +{ + virtio_snd_pcm_stream *st =3D virtio_snd_pcm_get_stream(s, stream); + if (st) { + virtio_snd_err("already released %d\n", stream); + return VIRTIO_SND_S_BAD_MSG; + } + + if (st->voice.out) { + AUD_close_out(&s->card, st->voice.out); + } else if (st->voice.in) { + AUD_close_in(&s->card, st->voice.in); + } + + if (st->elems) { + int nelems =3D virtio_snd_pcm_get_nelems(st); + for (int i =3D 0; i < nelems; i++) { + g_free(st->elems[i]); + st->elems[i] =3D NULL; + } + g_free(st->elems); + st->elems =3D NULL; + } + + g_free(s->streams[stream]); + s->streams[stream] =3D NULL; + return VIRTIO_SND_S_OK; +} + +/* + * Handles VIRTIO_SND_R_PCM_RELEASE. + * The function writes the response to the virtqueue element. + * Returns the used size in bytes. + * TODO: Doesn't handle the stream buffers that are yet to be played. + * + * @s: VirtIOSound card + * @elem: The request element from control queue + */ +static uint32_t virtio_snd_handle_pcm_release(VirtIOSound *s, + VirtQueueElement *elem) +{ + virtio_snd_pcm_hdr req; + virtio_snd_hdr resp; + size_t sz; + sz =3D iov_from_buf(elem->out_sg, elem->out_num, 0, &req, sizeof(req)); + assert(sz =3D=3D sizeof(virtio_snd_pcm_hdr)); + + virtio_snd_pcm_release_impl(s, req.stream_id); + + sz =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &resp, sizeof(resp)); + assert(sz =3D=3D sizeof(virtio_snd_hdr)); + return sz; +} + /* The control queue handler. Pops an element from the control virtqueue, * checks the header and performs the requested action. Finally marks the * element as used. @@ -849,7 +912,8 @@ static void virtio_snd_handle_ctrl(VirtIODevice *vdev, = VirtQueue *vq) sz =3D virtio_snd_handle_pcm_stop(s, elem); goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_RELEASE) { - virtio_snd_log("VIRTIO_SND_R_PCM_RELEASE"); + sz =3D virtio_snd_handle_pcm_release(s, elem); + goto done; } else { /* error */ virtio_snd_err("virtio snd header not recognized: %d\n", ctrl.= code); --=20 2.25.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1644618699; cv=none; d=zohomail.com; s=zohoarc; b=c8ilPW9qPhxOnr6SI6ZR/GPUWZLRxJWI4jTb7BG5i2wgMD8gQm03pWgD1dkVTtntFbU/S8uDt7A+3DDcvbB2+elV4UYiiaVPpyNG6qFOT5hOuD2AxJdhWme34YmVOu/lK1y9m9Ur+BHHd0HJ5I6VGgv87PAAlOa2xbJ+MEp+b+s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644618699; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Bad0khSQg4aEeFpR6OgB+Lc91CmrgeIaURNQVgBSxxk=; b=O0KaGD3BX2nXVxJYaeNGFlWTIwmS1iVwhalPHhY/omEidwACRdPOpBahVEqu+vk159SVEVbU7xIh/QoaarWaGnELT5lRfr3x3sakj9BKdkAvsu/70m3iWmMMwcPiUYKTjzJhwI3mdvLiWwuEsH+9b5fTGlZ3RgrsaqmO6U/xM1I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1644618699440528.9371213541009; Fri, 11 Feb 2022 14:31:39 -0800 (PST) Received: from localhost ([::1]:43106 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nIeS3-0004Ym-AA for importer@patchew.org; Fri, 11 Feb 2022 17:31:39 -0500 Received: from eggs.gnu.org ([209.51.188.92]:42600) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIeE9-0008Gf-5g for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:17:17 -0500 Received: from [2607:f8b0:4864:20::636] (port=40954 helo=mail-pl1-x636.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nIeE4-0003Sw-NX for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:17:15 -0500 Received: by mail-pl1-x636.google.com with SMTP id y17so5741024plg.7 for ; Fri, 11 Feb 2022 14:17:06 -0800 (PST) Received: from fedora.. ([2405:201:6008:6f15:d26f:133e:cd11:90dd]) by smtp.googlemail.com with ESMTPSA id j23sm20623576pgb.75.2022.02.11.14.17.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:17:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Bad0khSQg4aEeFpR6OgB+Lc91CmrgeIaURNQVgBSxxk=; b=q0rwXGOCXS+5s5QXVG2axc4ZiKJEXtuCjqm3VQrC7r5kz1jhwWlxI/QSxnF9yhIzd/ Bo0yVuJzSsgu9zH21B79UIqOgj/cSmqrXSL+VinDaZKbntpXNqSiLH3mlRXRiOF1jbi8 z//l4dgGD83Hjqq18BhuupavMKcieNFxyKUR+VNZ0q3w3zsEulV9Fi53o2sByMDCGe36 +1+rzmrCVmBmXtqYXhe5UIbsph6RJ5exWG822Bt3cXV+hJJ13I2yiDSqXoSmK/xuQ61u +G78sMcMh+uwdM5JpIddEDe+i83E6piHWRVMoFW8iv8lcFNDOXg6KWxcd2NxATXrP/MN JP+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Bad0khSQg4aEeFpR6OgB+Lc91CmrgeIaURNQVgBSxxk=; b=hHYgtzpWr0Xt5TMTnCF/0W7cYFuv4wSI7EGydkoI/nQzakINxlmmKPlmN5mt7iAoa3 wLtA7LWCfoZ84T9A7B+UEo9FgZqmHbb9nQrNKFSYkQPXpVjg60gTNojBVYey+iKyh8sr oRtJV3iz9VGBYh8jJXk0QAABi5Of9onpVTRi/FVK4gL3k8IupQcvId3gmiEtcLtBAWKY /oZfOT/PJqA3CIVeRcS7fM0VfPnH/QHLNnf8GhWb4lSTyGvDOgbw5GkwdZs9qLN9MuMc k2ft3PizsoRo/1ko+pLmhcFJmqvVEyJ/syNF1WX0kThvrX5I8O8CQjxSK9MxKgPbjNW0 UvVQ== X-Gm-Message-State: AOAM5304o9+7c00sTDJnSWDkGePfeTiZp7GchKEeWGVh2ZJonyVZLkko Ye61s82UTI7wKj9P3jukBp1MaDwA58g= X-Google-Smtp-Source: ABdhPJwCZ1z7+/EM3PHNku1+zJ0/nod78EEU1sZAITcIVasSKy7VvkG1Wzkm9FQn9vQc4Boxg9nlPg== X-Received: by 2002:a17:902:db11:: with SMTP id m17mr145828plx.103.1644617826144; Fri, 11 Feb 2022 14:17:06 -0800 (PST) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com, laurent@vivier.eu Subject: [RFC PATCH 23/25] virtio-snd: Add xfer handler Date: Sat, 12 Feb 2022 03:43:17 +0530 Message-Id: <20220211221319.193404-24-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::636 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::636; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pl1-x636.google.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1644618701709100001 Content-Type: text/plain; charset="utf-8" The handler demultiplexes the buffers recieved in the tx/rx virtqueue. It uses a helper function for adding these buffers, (along with the entire virtqueue element,) to their respective streams. Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 71 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 70 insertions(+), 1 deletion(-) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index 7dd89c444b..80a34e1207 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -1012,6 +1012,74 @@ static void virtio_snd_handle_ctrl(VirtIODevice *vde= v, VirtQueue *vq) } } =20 +/* + * Adds a virtqueue element to a VirtIOSound card stream. Makes the buffer + * available to the stream for consumption. + * + * @s: VirtIOSound card + * @stream: stream id + * @elem: The tx virtqueue element that contains the I/O message + */ +static void virtio_snd_pcm_add_buf(VirtIOSound *s, uint32_t stream, + VirtQueueElement *elem) +{ + virtio_snd_log("add_buf called\n"); + + virtio_snd_pcm_stream *st =3D virtio_snd_pcm_get_stream(s, stream); + uint32_t buf_size, dir; + int i; + + // get the direction opposite to the stream. We need read position if = we are + // writing because we want to add data to the buffer and not consume i= t. + dir =3D VIRTIO_SND_D_INPUT ^ VIRTIO_SND_D_OUTPUT ^ st->direction; + i =3D virtio_snd_pcm_get_curr_elem(st, dir); + + if (st->elems[i]) { + return; + } + + buf_size =3D iov_size(elem->out_sg, elem->out_num) + - sizeof(virtio_snd_pcm_xfer); + + st->elems[i] =3D elem; + virtio_snd_pcm_update_buf_pos(st, dir, buf_size); +} + +/* + * The tx virtqueue handler. Makes the buffers available to their respecti= ve + * streams for consumption. + * + * @vdev: VirtIOSound card + * @vq: tx virtqueue + */ +static void virtio_snd_handle_xfer(VirtIODevice *vdev, VirtQueue *vq) +{ + virtio_snd_log("tx/rx queue callback called\n"); + VirtIOSound *s =3D VIRTIO_SOUND(vdev); + VirtQueueElement *elem; + size_t sz; + virtio_snd_pcm_xfer hdr; + + for (;;) { + elem =3D virtqueue_pop(vq, sizeof(VirtQueueElement)); + if (!elem) { + break; + } + if (iov_size(elem->in_sg, elem->in_num) < sizeof(virtio_snd_pcm_st= atus) || + iov_size(elem->out_sg, elem->out_num) < sizeof(virtio_snd_pcm_= xfer)) { + virtqueue_detach_element(vq, elem, 0); + g_free(elem); + break; + } + + /* get the message hdr object */ + sz =3D iov_to_buf(elem->out_sg, elem->out_num, 0, &hdr, sizeof(hdr= )); + assert(sz =3D=3D sizeof(hdr)); + + virtio_snd_pcm_add_buf(s, hdr.stream_id, elem); + } +} + /* * Initializes the VirtIOSound card device. Validates the configuration * passed by the command line. Initializes the virtqueues. Allocates resou= rces @@ -1056,6 +1124,8 @@ static void virtio_snd_device_realize(DeviceState *de= v, Error **errp) default_params.rate =3D VIRTIO_SND_PCM_RATE_44100; =20 s->ctrl_vq =3D virtio_add_queue(vdev, 64, virtio_snd_handle_ctrl); + s->tx_vq =3D virtio_add_queue(vdev, 64, virtio_snd_handle_xfer); + s->rx_vq =3D virtio_add_queue(vdev, 64, virtio_snd_handle_xfer); =20 s->streams =3D g_new0(virtio_snd_pcm_stream *, s->snd_conf.streams); s->pcm_params =3D g_new0(virtio_snd_pcm_params *, s->snd_conf.streams); @@ -1123,7 +1193,6 @@ static void virtio_snd_device_unrealize(DeviceState *= dev) =20 virtio_delete_queue(s->ctrl_vq); virtio_delete_queue(s->tx_vq); - virtio_delete_queue(s->event_vq); virtio_delete_queue(s->rx_vq); } =20 --=20 2.31.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1619700053; cv=none; d=zohomail.com; s=zohoarc; b=b7YekXzmFUJ/xJXtxXFcTT0PaLkhyv3scT2jtF6vnuWw4U0hRXKswGnbAtliAGaWObydhFt6YkCHeEO2svLqchjHpLcl6E4CSzMMfGnNw2b1RX1azGM4btGbjoeuJe7H82rWZNd9gQuR+Yis/B4xyzv+sIFHdbwoQF2zhuQVfPM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619700053; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=eReMX3ANhPPMjJr7QmiwEhWO8N+Y9+guNfcwperYoeo=; b=XTl1oC+nYWDi9vjUM1yYNq7vdK4oB86X9R7BLwxKR0UPTVhF3UoYYLoCE4427eJ79iML7LzjjGOvafT5jIx560w+0Q3OB5/dlHpW5wk6jxL/YVmx+/mQyXIx41ZtTI7QXjCGp6pIYNPGJD+w+UWxDVoGrPMjuHipK0l4HAYoLEk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 161970005398273.91768928654756; Thu, 29 Apr 2021 05:40:53 -0700 (PDT) Received: from localhost ([::1]:40236 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lc5yO-0001gW-VK for importer@patchew.org; Thu, 29 Apr 2021 08:40:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39692) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lc5RA-0008HF-8L for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:32 -0400 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]:37671) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lc5R8-0000iZ-65 for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:31 -0400 Received: by mail-pj1-x102a.google.com with SMTP id k3-20020a17090ad083b0290155b934a295so4400059pju.2 for ; Thu, 29 Apr 2021 05:06:29 -0700 (PDT) Received: from localhost.localdomain ([2405:201:6008:61b4:c0b1:be0f:608e:9a45]) by smtp.gmail.com with ESMTPSA id p6sm713643pjg.35.2021.04.29.05.06.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Apr 2021 05:06:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=eReMX3ANhPPMjJr7QmiwEhWO8N+Y9+guNfcwperYoeo=; b=hatChg4kM/gL/dGvlfu8MPV3dxnT26FDScRi+1R+PwH4mcZlqlIYML/tlEFRHFGd8H 0KU4cpKPyFIixjFUusMSk0IIZEo6TwDARjx7GPvTQEQntldONjTZhYioALlw6XwCqZWX yaOdc7SqgOBPLGsjupDWpiWnx/siY1slCkLNTaBwNU0ueDbYev31RqyOjyeFvBarVAV7 nJDDfqPP0j8peP8t4WcrM4dCiCpJhLlaU3ttW8fIlAcdYjVsMY4VdxwqS9A33WDKqz1C 3zFr4eRb4hXBFk9E3VxzvnFazW+VqHsVjru8ohsgMvAhJAaC87/LRmokRrYe+ze+UlUf sktw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=eReMX3ANhPPMjJr7QmiwEhWO8N+Y9+guNfcwperYoeo=; b=hujmQPXJEbY3BrnDsaH7H2Pc4JHQ/UOaHNv7y8352TFMS4iPZAVBFZ3cfeSiLwfS5H wD9VVL8VaIRYHp32gFldUMDI/2M2GmTJtQETsP3yv7Zz2IJfJZx372RMHP4Q0X0JzDmb WqCHTk9byF6Qs1YvI/eHt0fCrjcO53UDstSZWIG5iTlULplTRPQ/SRuN/9Tafk/7a9Y4 qkKmTKQfBaiDUsQ0ziYD5CyJ+a8eYV4lF9h6ZZan6MDepnLLyDKFtpct2A7Z1//9I4lv n7EP013jyO7bJz/gHq+LAi8yMt6nfdyvP3slYqkwiM6DK5jqgH0MVOj6PrlXNLTmBhFB wu/w== X-Gm-Message-State: AOAM531Y6nX9qff8BltFWq3/+telq6xaUbOsOBLG/tzR8+LuUOAIdqgC 55gVdsKTgA7BsQ/GL60FIo4= X-Google-Smtp-Source: ABdhPJzkW3wg3Z9YRJbWuP1dHUioClC5IwzrUSZjOfNcAU7y3emvB6cfhZNFXDmJf90MgElwZXEnTg== X-Received: by 2002:a17:90a:ba16:: with SMTP id s22mr62380pjr.12.1619697988907; Thu, 29 Apr 2021 05:06:28 -0700 (PDT) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com Subject: [RFC PATCH 23/27] virtio-snd: Replaced goto with if else Date: Thu, 29 Apr 2021 17:34:41 +0530 Message-Id: <20210429120445.694420-24-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102a; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pj1-x102a.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Type: text/plain; charset="utf-8" Removed goto from the ctrl vq handler and added an if else branch for error handling. Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index 56e07a41f8..5f12375d95 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -862,7 +862,7 @@ static uint32_t virtio_snd_handle_pcm_release(VirtIOSou= nd *s, static void virtio_snd_handle_ctrl(VirtIODevice *vdev, VirtQueue *vq) { VirtIOSound *s =3D VIRTIO_SOUND(vdev); - virtio_snd_hdr ctrl; + virtio_snd_hdr ctrl, resp; =20 VirtQueueElement *elem =3D NULL; size_t sz; @@ -874,7 +874,7 @@ static void virtio_snd_handle_ctrl(VirtIODevice *vdev, = VirtQueue *vq) if (!elem) { break; } - if (iov_size(elem->in_sg, elem->in_num) < sizeof(ctrl) || + if (iov_size(elem->in_sg, elem->in_num) < sizeof(resp) || iov_size(elem->out_sg, elem->out_num) < sizeof(ctrl)) { virtio_snd_err("virtio-snd ctrl missing headers\n"); virtqueue_detach_element(vq, elem, 0); @@ -890,40 +890,34 @@ static void virtio_snd_handle_ctrl(VirtIODevice *vdev= , VirtQueue *vq) if (sz !=3D sizeof(ctrl)) { /* error */ virtio_snd_err("virtio snd ctrl could not read header\n"); + resp.code =3D VIRTIO_SND_S_BAD_MSG; } else if (ctrl.code =3D=3D VIRTIO_SND_R_JACK_INFO) { sz =3D virtio_snd_handle_jack_info(s, elem); - goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_JACK_REMAP) { sz =3D virtio_snd_handle_jack_remap(s, elem); - goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_INFO) { sz =3D virtio_snd_handle_pcm_info(s, elem); - goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_SET_PARAMS) { sz =3D virtio_snd_handle_pcm_set_params(s, elem); - goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_PREPARE) { sz =3D virtio_snd_handle_pcm_prepare(s, elem); - goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_START) { sz =3D virtio_snd_handle_pcm_start(s, elem); - goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_STOP) { sz =3D virtio_snd_handle_pcm_stop(s, elem); - goto done; } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_RELEASE) { sz =3D virtio_snd_handle_pcm_release(s, elem); - goto done; } else { /* error */ virtio_snd_err("virtio snd header not recognized: %d\n", ctrl.= code); + resp.code =3D VIRTIO_SND_S_BAD_MSG; } =20 - virtio_snd_hdr resp; - resp.code =3D VIRTIO_SND_S_OK; - sz =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &resp, sizeof(re= sp)); + if (resp.code =3D=3D VIRTIO_SND_S_BAD_MSG) { + sz =3D iov_from_buf(elem->in_sg, elem->in_num, 0, &resp, + sizeof(resp)); + } =20 -done: virtqueue_push(vq, elem, sz); virtio_notify(vdev, vq); g_free(iov2); --=20 2.25.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1619699507; cv=none; d=zohomail.com; s=zohoarc; b=gihzzuHpqqSx+E7tCz2l+lgGfySgU0oJYMSsOXQyIHQd4P8UD4qDC3AZU8zDlqZzR6TWaAI8Svs6ByES9JvWL+BlTD8o+qwJuziCD9IDGHYsjzv97LhlM/K70OIkYXWj4wcSrI6tyHk03UvPFUDaeDzlzENp78zrFH0GBlRwlNY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619699507; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=p0H1z52TFHM4PStrPMY1R733kfAT2nGnpNFrALeyFAs=; b=MdtBC60cXM9+EYKMyZusnDq8dCPIr1FfxDMu27VkEOtQnv9zLXBCS8MBPAcFdPvJFMgF+kUTfNrKvKPCLPKf1ypk3+fusy2gaZoo9s0d7KJ3cV6DJYmwtxS2S8Czy3qW2//78yD7DR3LP41YM86tDNnpxpVzNevt8+XkKiTo2cA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619699507756735.0058951644156; Thu, 29 Apr 2021 05:31:47 -0700 (PDT) Received: from localhost ([::1]:48538 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lc5pa-0001rf-GJ for importer@patchew.org; Thu, 29 Apr 2021 08:31:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39718) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lc5RD-0008Ju-HS for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:35 -0400 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]:41543) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lc5RA-0000le-Lo for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:35 -0400 Received: by mail-pj1-x1035.google.com with SMTP id y22-20020a17090a8b16b0290150ae1a6d2bso10850850pjn.0 for ; Thu, 29 Apr 2021 05:06:32 -0700 (PDT) Received: from localhost.localdomain ([2405:201:6008:61b4:c0b1:be0f:608e:9a45]) by smtp.gmail.com with ESMTPSA id p6sm713643pjg.35.2021.04.29.05.06.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Apr 2021 05:06:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=p0H1z52TFHM4PStrPMY1R733kfAT2nGnpNFrALeyFAs=; b=XDP7OmPH5DWMmybEy9zBeVZH3y3elzM6Qo8wRadeBxoT1LI8OGXuNZP3FA20QMY4xr I/QH6zoIa/4LA6JKGBUkjeyRf7DUSrXOnVDCN6gzJTj6L4mW+Zq8dIjzWKVTI733xxm3 Fa5vKjN6td2cwV8u5prRmsB1InzrItjLXm14mGWNDcKV4uzEly0BCl7d3twDcNq5CtFw WtLTUNvSh/krBHsT6uidLwtjsjn7+AJ6LgnNUHJcbQfmDmp+dAsMPw5bTxbKwbshGBBc jn68pq7SVVc8I2vJsvsxVdIeOpQqJSPj9d5Q/j1pAiOZKwjkP+/KdBvl3svQh69aGRby X/Cw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=p0H1z52TFHM4PStrPMY1R733kfAT2nGnpNFrALeyFAs=; b=kjzgjMgmYXJ8KCImGmf5Grl8MuxVkQ+i+Sac7lm125qbLjaqA5PeIUTZILfgoUFlWp VBBCZ+Ea1+9ANqZPOYrn7qUSvaa52iqpor2mzfE6dcjLk+Srvz36gkImskR+aE7/v7YJ gpjSvrvCMwoMyoZxTC/RfZiaGGiUR7PwixEz9mvgptNlnk0wY+RCK9nsQ4GRal8fIAcQ rfC85dJCpTmNQPryx9lmlUIE9J+45YKpc8S2rd7g3TF4mo03+8jmQM4KJy7fMwKKKvOR u+2d+yVV7KvAofBkQ4sN1sna9eKCGY/4/qkTj9KScX0J1Yf/f8DnKhBaJTAomDpEJHow MlyA== X-Gm-Message-State: AOAM530ptHBVkb8MFfarzD9dzRDd5Wei2bxVfT9Vqfdbvzs9XrlDWuY9 I2eZuMhio+rMzz98BYv4tBc= X-Google-Smtp-Source: ABdhPJxRS+OwYTBYnwYcT+bY2Y8HklcH5F6I79mHhVHm1CEivPZYS7z07HLA6cnW9wOSzUDKh2w1sw== X-Received: by 2002:a17:902:d50c:b029:ed:1bda:a029 with SMTP id b12-20020a170902d50cb02900ed1bdaa029mr24575715plg.8.1619697991258; Thu, 29 Apr 2021 05:06:31 -0700 (PDT) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com Subject: [RFC PATCH 24/27] virtio-snd: Add code to device unrealize function Date: Thu, 29 Apr 2021 17:34:42 +0530 Message-Id: <20210429120445.694420-25-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1035; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pj1-x1035.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index 5f12375d95..e2e47e9467 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -1006,8 +1006,34 @@ static void virtio_snd_device_realize(DeviceState *d= ev, Error **errp) } } =20 +/* + * Frees the resources allocated to the device and then frees the device + * itself. + * + * @dev: VirtIOSound card device + */ static void virtio_snd_device_unrealize(DeviceState *dev) { + VirtIOSound *s =3D VIRTIO_SOUND(dev); + + for (int i =3D 0; i < s->snd_conf.streams; i++) { + virtio_snd_pcm_release_impl(s, i); + g_free(s->pcm_params[i]); + s->pcm_params[i] =3D NULL; + } + g_free(s->streams); + s->streams =3D NULL; + g_free(s->pcm_params); + s->pcm_params =3D NULL; + + for (int i =3D 0; i < s->snd_conf.jacks; i++) { + g_free(s->jacks[i]); + s->jacks[i] =3D NULL; + } + g_free(s->jacks); + s->jacks =3D NULL; + + virtio_delete_queue(s->ctrl_vq); } =20 static void virtio_snd_reset(VirtIODevice *vdev) --=20 2.25.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1644619630; cv=none; d=zohomail.com; s=zohoarc; b=RQZmDz0AenTd3TAxAsp8evHphM4Is2GOVfLqyjxlX+nQi/w5dLMUbDjYb7rK2iSBNV22oSlSXuGE7+lXBT6spal/bs2tpMTyhTG+1vrrI6Qk09osayNYeECVBU2pqptwqbMe1Kd+F/bizvpXRDPvL2buAxTc8nTEHF6LECAbl1Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644619630; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=GWwevIeaa6FLURrOAePtfrrqg4GSHtZ3K5pDtudS2D4=; b=L6Huzs4fvRtFtZlEkDh4PpSeMJNGn0E8cjuv8CApdh5GecUGGO9Jqrx18E7ymOPieiR2YzV/WGHa8fbsm+drCoiBftflCkgi/m54OwxDPUtQdU3cqrtG+8dCXto4Y5oVEOGBRGGEE8Mg4Zu6B4pQohr3+RHI73TN45vYDW9ndEM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1644619630537834.3846141132094; Fri, 11 Feb 2022 14:47:10 -0800 (PST) Received: from localhost ([::1]:35550 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nIeh3-0002em-Gy for importer@patchew.org; Fri, 11 Feb 2022 17:47:09 -0500 Received: from eggs.gnu.org ([209.51.188.92]:42658) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIeEW-0008UI-28 for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:17:40 -0500 Received: from [2607:f8b0:4864:20::1030] (port=32896 helo=mail-pj1-x1030.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nIeE7-0003TM-56 for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:17:20 -0500 Received: by mail-pj1-x1030.google.com with SMTP id k60-20020a17090a4cc200b001b932781f3eso5093195pjh.0 for ; Fri, 11 Feb 2022 14:17:14 -0800 (PST) Received: from fedora.. ([2405:201:6008:6f15:d26f:133e:cd11:90dd]) by smtp.googlemail.com with ESMTPSA id j23sm20623576pgb.75.2022.02.11.14.17.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:17:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=GWwevIeaa6FLURrOAePtfrrqg4GSHtZ3K5pDtudS2D4=; b=cHnzwtfzNnoIypMSlqZE7s+hkM/ifMOoJjTnoobS672sfSByjfYzDy4Mzbc/jtRyGd 7vywYG3rbTMGJOa7lS1y+jLdHUbYrk52rkbppuDGJDsEXrBgmoAvpe7cF8rSejy7EWzf Xh/ARjVu/TqYmtXCYeD19q3TnVWOLdvs9dgPM/fSazKibHGmYg65hBP4s1zxCPuSriuL ns3/xU0fHL84ssYN8OJ7Xy3WD48kMxBRFnQRx+EngeiyRhG9XJ5OnXAD9nCrhKq+WHgH SqOpjNSX0j4K0ocV9bDWRM5hK9ePx8TKm0jwHM+4UkC/DPtjnPA4fbj8jjjMMpE4UwO9 DAjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=GWwevIeaa6FLURrOAePtfrrqg4GSHtZ3K5pDtudS2D4=; b=totEDBnVWntVjkzbl61MV4YedtwyDxte55V0wHYJznsTWhtQgTlqAloCaJbO330kpO jBkT8vW5APXfmCiLKhJbqSNdBFcg7rKDV4rlwb1GWqi+sGsVijZaXIjr9ljlVZOWUU6q iLPBkL3sl+hvC7kb/YxPORCcoG7PDEj0gg+ITex4jAW8eKf8SIUXwkjsHEi1JnN1aN0D i6nOatul13PzJiOGvNHH7GxOba9A7t852f6Ll917bGpIthlT0vmmkuE4l24jpTv4BqKj lpwecxc18Ux56OoqIrYFmMzA2dOrMB3/FlRYhEite38HrIBXmyDs5Hhl9ezkdxt+4gF8 Hepg== X-Gm-Message-State: AOAM533eBS9eeBA0OvYwNU1b9gtCr+k4qhuBEaAz0O2LMJNDBmw0nLuc vM8lbxd/gSdVpS0NBOeOqzE= X-Google-Smtp-Source: ABdhPJwC5Dxv1HBCReVmL+TyqmRlT85CQTmNt+uO0yn0jbw6sI3eqQxgWM+apCJcXj9k7a1DW9FAWA== X-Received: by 2002:a17:90a:188:: with SMTP id 8mr2541495pjc.179.1644617833961; Fri, 11 Feb 2022 14:17:13 -0800 (PST) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com, laurent@vivier.eu Subject: [RFC PATCH 24/25] virtio-snd: Add event vq and a handler stub Date: Sat, 12 Feb 2022 03:43:18 +0530 Message-Id: <20220211221319.193404-25-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::1030 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1030; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pj1-x1030.google.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, T_SPF_HELO_TEMPERROR=0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1644619632732100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index 80a34e1207..81a478d039 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -1080,6 +1080,18 @@ static void virtio_snd_handle_xfer(VirtIODevice *vde= v, VirtQueue *vq) } } =20 +/* + * The event virtqueue handler. + * Not implemented yet. + * + * @vdev: VirtIOSound card + * @vq: event vq + */ +static void virtio_snd_handle_event(VirtIODevice *vdev, VirtQueue *vq) +{ + virtio_snd_log("event queue callback called\n"); +} + /* * Initializes the VirtIOSound card device. Validates the configuration * passed by the command line. Initializes the virtqueues. Allocates resou= rces @@ -1124,6 +1136,7 @@ static void virtio_snd_device_realize(DeviceState *de= v, Error **errp) default_params.rate =3D VIRTIO_SND_PCM_RATE_44100; =20 s->ctrl_vq =3D virtio_add_queue(vdev, 64, virtio_snd_handle_ctrl); + s->event_vq =3D virtio_add_queue(vdev, 64, virtio_snd_handle_event); s->tx_vq =3D virtio_add_queue(vdev, 64, virtio_snd_handle_xfer); s->rx_vq =3D virtio_add_queue(vdev, 64, virtio_snd_handle_xfer); =20 @@ -1192,6 +1205,7 @@ static void virtio_snd_device_unrealize(DeviceState *= dev) s->jacks =3D NULL; =20 virtio_delete_queue(s->ctrl_vq); + virtio_delete_queue(s->event_vq); virtio_delete_queue(s->tx_vq); virtio_delete_queue(s->rx_vq); } --=20 2.31.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1644619764; cv=none; d=zohomail.com; s=zohoarc; b=Ite3MHR/MWRiFZpOuTtnTV1iAe20GbkU8Ph/EydECE2NpWGtWqcBQoYhFIcWcWBBPYdt110bx+9l+bIFq8SXk7a4bBNEukaWxAzCUWQNQiZIWnoU7VJBN6CvYLohkPk+P71+mQG/mFRvzZr7GLKF0u2cnOVuWRNLOBqPwNTtcXE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644619764; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=CzckWGzCigRKzVXhEUdOKkrHP3nRB0Znf4+2cGdy/aQ=; b=hR7u55R6xIW26gd+9Z8XGZgqwRrNgphX0BAtRipDX8nfjNsHjyMox+0Ny67Kr3pAJYHqIVvg4xVUHwf06WYAoWXNopFKOSRzcRKH2BQNdhVrUGTsI1pRj2TI/QAqYa6uYGMAcCFu7tuaJNSnRPApg59EhWHa3RdIpQG5RUjCXdM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1644619764870248.7362766358251; Fri, 11 Feb 2022 14:49:24 -0800 (PST) Received: from localhost ([::1]:37684 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nIejE-00048Q-F2 for importer@patchew.org; Fri, 11 Feb 2022 17:49:24 -0500 Received: from eggs.gnu.org ([209.51.188.92]:42688) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIeEY-0008WB-3P for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:17:42 -0500 Received: from [2607:f8b0:4864:20::636] (port=38422 helo=mail-pl1-x636.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nIeES-0003UX-6Z for qemu-devel@nongnu.org; Fri, 11 Feb 2022 17:17:41 -0500 Received: by mail-pl1-x636.google.com with SMTP id c3so5761052pls.5 for ; Fri, 11 Feb 2022 14:17:22 -0800 (PST) Received: from fedora.. ([2405:201:6008:6f15:d26f:133e:cd11:90dd]) by smtp.googlemail.com with ESMTPSA id j23sm20623576pgb.75.2022.02.11.14.17.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:17:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=CzckWGzCigRKzVXhEUdOKkrHP3nRB0Znf4+2cGdy/aQ=; b=MKacs3QhphatKYXVZnbDb1WmyRUy3etlLQ6KC8Vr0TqpgwDt34olRh8Q4OqMEO+oA7 VIS4dD+tGzmKTr+wJnrENPFZWEjzYEbIhD4exXp/RyLvu2HHwrIf9Wfqo+0FWnVw/f2/ BHMWahA4o9sKRPusWx8+sOowQaUaRq69NBcoc/hy0vDMVnvqUk/HyWj+KlrKoTJeHvT4 85IJ9CLlNVBCJ5oBm6rGgVlY2CjDZkNHLz2MWWSmAvkzJuVNlM+do0dj8zmZHG+RhQN1 3OX54g69JLwI+l7N1FLiygXsF9Rh0MKGNL6xhZ7t7I92kupnvez0/uBu+pFs9ZJFqTJ2 2Rjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=CzckWGzCigRKzVXhEUdOKkrHP3nRB0Znf4+2cGdy/aQ=; b=njopFWC6492fER5+SaAGUkX6c5gyORSr2yi6SD1XVUgJQrXLTrrlsT4rQlCn/rJRlg jQ1961Ft+/G49oQKSYaARHPAPZVOkR7kDegJCngCK4B/qqOPC0TmXIoWN1tQYSWKKPKg rSACGrHWs+Tb/W62RCJ9qeeWRdj0V2OopgHvl2JkJI8+Sf9qmKlswF/VkKlWTooAU169 XUTJ495vMjBRaawusi+HzQPbbdbX91+vxRowJPgJa77l/NzOhvygJ+PkaCz/hFinbgSf PKWK2fhsIio2VlvkhhHp/i3fVyorUvb2UZspkWiFyWGR0XrsfA25TSVTW3FSeEvSMKQf WrZA== X-Gm-Message-State: AOAM531+nFYYkdO3uPAjvX9IDel+AsSzfYAICMLOIYCfY/pqviAJowZg esfVAo0qQkipAf+WRD4T8bhgRkJo5mk= X-Google-Smtp-Source: ABdhPJzpBlbENBaT7z5D9k68HTx21FKeMPwy/qzas0nGfEE83mm8v173j7FK9RGv7lGWtgehh8NHzg== X-Received: by 2002:a17:90b:1c8d:: with SMTP id oo13mr2480987pjb.201.1644617841940; Fri, 11 Feb 2022 14:17:21 -0800 (PST) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com, laurent@vivier.eu Subject: [RFC PATCH 25/25] virtio-snd: Replaced AUD_log with tracepoints Date: Sat, 12 Feb 2022 03:43:19 +0530 Message-Id: <20220211221319.193404-26-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::636 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::636; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pl1-x636.google.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1644619796071100001 Content-Type: text/plain; charset="utf-8" Replaced the use of AUD_log via macros in virtio sound with tracepoints. Signed-off-by: Shreyansh Chouhan --- hw/audio/trace-events | 14 +++++++++++ hw/audio/virtio-snd.c | 55 +++++++++++++++++-------------------------- 2 files changed, 36 insertions(+), 33 deletions(-) diff --git a/hw/audio/trace-events b/hw/audio/trace-events index e0e71cd9b1..a747648e4d 100644 --- a/hw/audio/trace-events +++ b/hw/audio/trace-events @@ -11,3 +11,17 @@ hda_audio_running(const char *stream, int nr, bool runni= ng) "st %s, nr %d, run % hda_audio_format(const char *stream, int chan, const char *fmt, int freq) = "st %s, %d x %s @ %d Hz" hda_audio_adjust(const char *stream, int pos) "st %s, pos %d" hda_audio_overrun(const char *stream) "st %s" + +#virtio-snd.c +virtio_snd_pcm_stream_flush(int stream) "flushing st %d" +virtio_snd_handle_jack_info(int jack) "VIRTIO_SND_JACK_INFO called for jac= k %d" +virtio_snd_handle_jack_remap(void) "VIRTIO_SND_PCM_JACK_REMAP called" +virtio_snd_handle_pcm_info(int stream) "VIRTIO_SND_PCM_INFO called for str= eam %d" +virtio_snd_handle_pcm_set_params(int stream) "VIRTIO_SND_PCM_SET_PARAMS ca= lled for stream %d" +virtio_snd_handle_pcm_start(int stream) "VIRTIO_SND_PCM_START called for s= tream %d" +virtio_snd_handle_pcm_stop(int stream) "VIRTIO_SND_PCM_STOP called for str= eam %id" +virtio_snd_handle_pcm_release(int stream) "VIRTIO_SND_PCM_RELEASE called f= or stream %id" +virtio_snd_handle_chmap_info(void) "VIRTIO_SND_CHMAP_INFO called" +virtio_snd_output_cb(int to_play, int written) "to play: %d, written: %d" +virtio_snd_handle_xfer(void) "tx/rx queue callback called" +virtio_snd_handle_event(void) "event queue callback called" diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index 81a478d039..38a3b5e555 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -39,10 +39,6 @@ #define VIRTIO_SOUND_HDA_FN_NID_OUT 0 #define VIRTIO_SOUND_HDA_FN_NID_IN 1 =20 -#define virtio_snd_log(...) AUD_log("virtio sound info", __VA_ARGS__) -#define virtio_snd_warn(...) AUD_log("virtio sound warn", __VA_ARGS__) -#define virtio_snd_err(...) AUD_log("virtio sound err", __VA_ARGS__) - static void virtio_snd_get_config(VirtIODevice *vdev, uint8_t *config) { VirtIOSound *s =3D VIRTIO_SOUND(vdev); @@ -125,7 +121,7 @@ static uint32_t virtio_snd_handle_jack_info(VirtIOSound= *s, =20 if (iov_size(elem->in_sg, elem->in_num) < sizeof(virtio_snd_hdr) + req.count * req.size) { - virtio_snd_err("jack info: buffer too small got: %lu needed: %lu\n= ", + error_report("jack info: buffer too small got: %lu needed: %lu\n", iov_size(elem->in_sg, elem->in_num), sizeof(virtio_snd_hdr) + req.count * req.size); resp.code =3D VIRTIO_SND_S_BAD_MSG; @@ -134,9 +130,10 @@ static uint32_t virtio_snd_handle_jack_info(VirtIOSoun= d *s, =20 virtio_snd_jack_info *jack_info =3D g_new0(virtio_snd_jack_info, req.c= ount); for (int i =3D req.start_id; i < req.count + req.start_id; i++) { + trace_virtio_snd_handle_jack_info(i); virtio_snd_jack *jack =3D virtio_snd_get_jack(s, i); if (!jack) { - virtio_snd_err("Invalid jack id: %d\n", i); + error_report("Invalid jack id: %d\n", i); resp.code =3D VIRTIO_SND_S_BAD_MSG; goto done; } @@ -180,6 +177,7 @@ static uint32_t virtio_snd_handle_jack_remap(VirtIOSoun= d *s, virtio_snd_hdr resp; resp.code =3D VIRTIO_SND_S_OK; =20 + trace_virtio_snd_handle_jack_remap(); /* TODO: implement remap */ =20 size_t sz; @@ -202,7 +200,6 @@ static virtio_snd_pcm_stream *virtio_snd_pcm_get_stream= (VirtIOSound *s, uint32_t stream) { if (stream >=3D s->snd_conf.streams) { - virtio_snd_err("Invalid stream request %d\n", stream); return NULL; } return s->streams[stream]; @@ -218,7 +215,6 @@ static virtio_snd_pcm_params *virtio_snd_pcm_get_params= (VirtIOSound *s, uint32_t stream) { if (stream >=3D s->snd_conf.streams) { - virtio_snd_err("Invalid stream request %d\n", stream); return NULL; } return s->pcm_params[stream]; @@ -243,7 +239,7 @@ static uint32_t virtio_snd_handle_pcm_info(VirtIOSound = *s, virtio_snd_hdr resp; if (iov_size(elem->in_sg, elem->in_num) < sizeof(virtio_snd_hdr) + req.size * req.count) { - virtio_snd_err("pcm info: buffer too small, got: %lu, needed: %lu\= n", + error_report("pcm info: buffer too small, got: %lu, needed: %lu\n", iov_size(elem->in_sg, elem->in_num), sizeof(virtio_snd_pcm_info)); resp.code =3D VIRTIO_SND_S_BAD_MSG; @@ -253,10 +249,11 @@ static uint32_t virtio_snd_handle_pcm_info(VirtIOSoun= d *s, virtio_snd_pcm_stream *stream; virtio_snd_pcm_info *pcm_info =3D g_new0(virtio_snd_pcm_info, req.coun= t); for (int i =3D req.start_id; i < req.start_id + req.count; i++) { + trace_virtio_snd_handle_pcm_info(i); stream =3D virtio_snd_pcm_get_stream(s, i); =20 if (!stream) { - virtio_snd_err("Invalid stream id: %d\n", i); + error_report("Invalid stream id: %d\n", i); resp.code =3D VIRTIO_SND_S_BAD_MSG; goto done; } @@ -317,7 +314,7 @@ static uint32_t virtio_snd_pcm_set_params_impl(VirtIOSo= und *s, st_params->period_bytes =3D params->period_bytes; =20 if (params->channel < 1 || params->channel > AUDIO_MAX_CHANNELS) { - virtio_snd_err("Number of channels not supported\n"); + error_report("Number of channels not supported\n"); return VIRTIO_SND_S_NOT_SUPP; } st_params->channel =3D params->channel; @@ -346,13 +343,13 @@ static uint32_t virtio_snd_pcm_set_params_impl(VirtIO= Sound *s, 1 << VIRTIO_SND_PCM_RATE_384000; =20 if (!(supported_formats & (1 << params->format))) { - virtio_snd_err("Stream format not supported\n"); + error_report("Stream format not supported\n"); return VIRTIO_SND_S_NOT_SUPP; } st_params->format =3D params->format; =20 if (!(supported_rates & (1 << params->rate))) { - virtio_snd_err("Stream rate not supported\n"); + error_report("Stream rate not supported\n"); return VIRTIO_SND_S_NOT_SUPP; } st_params->rate =3D params->rate; @@ -378,6 +375,7 @@ static uint32_t virtio_snd_handle_pcm_set_params(VirtIO= Sound *s, sz =3D iov_to_buf(elem->out_sg, elem->out_num, 0, &req, sizeof(req)); assert(sz =3D=3D sizeof(virtio_snd_pcm_set_params)); =20 + trace_virtio_snd_handle_pcm_set_params(req.hdr.stream_id); virtio_snd_hdr resp; resp.code =3D virtio_snd_pcm_set_params_impl(s, &req); =20 @@ -702,7 +700,6 @@ static void virtio_snd_output_cb(void *opaque, int free) =20 to_play =3D MIN(free, pending); =20 - virtio_snd_log("to_play: %d, free: %d, pending: %d\n", to_play, free, = pending); while (to_play) { int wbytes =3D write_audio(st, to_play); =20 @@ -715,7 +712,7 @@ static void virtio_snd_output_cb(void *opaque, int free) pending -=3D wbytes; } =20 - virtio_snd_log("written: %d\n", written); + trace_virtio_snd_output_cb(to_play, written); } =20 /* @@ -728,7 +725,6 @@ static void virtio_snd_output_cb(void *opaque, int free) static uint32_t virtio_snd_pcm_prepare_impl(VirtIOSound *s, uint32_t strea= m) { if (!s->streams || !s->pcm_params || !s->pcm_params[stream]) { - virtio_snd_err("Cannot prepare stream %d without params.\n", strea= m); return VIRTIO_SND_S_BAD_MSG; } =20 @@ -849,6 +845,7 @@ static uint32_t virtio_snd_handle_pcm_start_stop(VirtIO= Sound *s, virtio_snd_hdr resp; resp.code =3D VIRTIO_SND_S_OK; =20 + trace_virtio_snd_handle_pcm_stop(req.stream_id); virtio_snd_pcm_stream *st =3D virtio_snd_pcm_get_stream(s, req.stream_= id); if (st->direction =3D=3D VIRTIO_SND_D_OUTPUT) AUD_set_active_out(st->voice.out, start); @@ -871,9 +868,6 @@ static uint32_t virtio_snd_pcm_release_impl(virtio_snd_= pcm_stream *st, uint32_t { // if there are still pending io messages do nothing if (virtio_snd_pcm_get_pending_bytes(st)) { - // flush the stream - virtio_snd_log("Started flushing stream"); - // set flushing to true, the callback will automatically close the // stream once the flushing is done st->flushing =3D true; @@ -923,11 +917,11 @@ static uint32_t virtio_snd_handle_pcm_release(VirtIOS= ound *s, sz =3D iov_to_buf(elem->out_sg, elem->out_num, 0, &req, sizeof(req)); assert(sz =3D=3D sizeof(virtio_snd_pcm_hdr)); =20 - virtio_snd_log("Release called\n"); + trace_virtio_snd_handle_pcm_release(req.stream_id); =20 virtio_snd_pcm_stream *st =3D virtio_snd_pcm_get_stream(s, req.stream_= id); if (!st) { - virtio_snd_err("already released %d\n", req.stream_id); + error_report("already released stream %d", req.stream_id); return VIRTIO_SND_S_BAD_MSG; } =20 @@ -961,7 +955,7 @@ static void virtio_snd_handle_ctrl(VirtIODevice *vdev, = VirtQueue *vq) } if (iov_size(elem->in_sg, elem->in_num) < sizeof(resp) || iov_size(elem->out_sg, elem->out_num) < sizeof(ctrl)) { - virtio_snd_err("virtio-snd ctrl missing headers\n"); + error_report("virtio-snd ctrl missing headers\n"); virtqueue_detach_element(vq, elem, 0); g_free(elem); break; @@ -974,7 +968,7 @@ static void virtio_snd_handle_ctrl(VirtIODevice *vdev, = VirtQueue *vq) iov_discard_front(&iov, &iov_cnt, sizeof(ctrl)); if (sz !=3D sizeof(ctrl)) { /* error */ - virtio_snd_err("virtio snd ctrl could not read header\n"); + error_report("virtio snd ctrl could not read header\n"); resp.code =3D VIRTIO_SND_S_BAD_MSG; } else if (ctrl.code =3D=3D VIRTIO_SND_R_JACK_INFO) { sz =3D virtio_snd_handle_jack_info(s, elem); @@ -993,10 +987,10 @@ static void virtio_snd_handle_ctrl(VirtIODevice *vdev= , VirtQueue *vq) } else if (ctrl.code =3D=3D VIRTIO_SND_R_PCM_RELEASE) { sz =3D virtio_snd_handle_pcm_release(s, elem); } else if (ctrl.code =3D=3D VIRTIO_SND_R_CHMAP_INFO) { - virtio_snd_log("VIRTIO_SND_R_CHMAP_INFO"); + trace_virtio_snd_handle_chmap_info(); } else { /* error */ - virtio_snd_err("virtio snd header not recognized: %d\n", ctrl.= code); + error_report("virtio snd header not recognized: %d\n", ctrl.co= de); resp.code =3D VIRTIO_SND_S_BAD_MSG; } =20 @@ -1023,8 +1017,6 @@ static void virtio_snd_handle_ctrl(VirtIODevice *vdev= , VirtQueue *vq) static void virtio_snd_pcm_add_buf(VirtIOSound *s, uint32_t stream, VirtQueueElement *elem) { - virtio_snd_log("add_buf called\n"); - virtio_snd_pcm_stream *st =3D virtio_snd_pcm_get_stream(s, stream); uint32_t buf_size, dir; int i; @@ -1054,12 +1046,13 @@ static void virtio_snd_pcm_add_buf(VirtIOSound *s, = uint32_t stream, */ static void virtio_snd_handle_xfer(VirtIODevice *vdev, VirtQueue *vq) { - virtio_snd_log("tx/rx queue callback called\n"); VirtIOSound *s =3D VIRTIO_SOUND(vdev); VirtQueueElement *elem; size_t sz; virtio_snd_pcm_xfer hdr; =20 + trace_virtio_snd_handle_xfer(); + for (;;) { elem =3D virtqueue_pop(vq, sizeof(VirtQueueElement)); if (!elem) { @@ -1089,7 +1082,7 @@ static void virtio_snd_handle_xfer(VirtIODevice *vdev= , VirtQueue *vq) */ static void virtio_snd_handle_event(VirtIODevice *vdev, VirtQueue *vq) { - virtio_snd_log("event queue callback called\n"); + trace_virtio_snd_handle_event(); } =20 /* @@ -1245,8 +1238,4 @@ static void virtio_register_types(void) type_register_static(&virtio_snd_dev_info); } =20 -#undef virtio_snd_log -#undef virtio_snd_warn -#undef virtio_snd_err - type_init(virtio_register_types) --=20 2.31.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1619700153; cv=none; d=zohomail.com; s=zohoarc; b=Wv+GpQqxlX+c2mnKhXsCMqtauzpywXTJlAoyN3l2JAX15CNiLW/z760PFI3BW5xZ2h8IJSPSLcEbuyW8d2hQZKNBpTTgAwHYh0+LuEVKshDsV3htcPDUi3vWEbtgjUou2JvkcT1MvpC4era7M/81iA277C5UuUgALm2ajexdeGo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619700153; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=8QxPCFI6EFxehLWO26ThoRdz/R0s7GDhey0ZK+cuoLY=; b=KhEu9HXEnIOCyARUi0LJo6JM3es7hGhtMaKnJ/l9UhjlUc78RolgXFX3Y2ZUJpsn5aGRZ6DoF4XyOG0P1pUg/NRMe6A1sQecpbZHHULnSHiGEikwaexfHYwXNlTL3EVKyac1y9+E4FP6AU5tL8v1zBPgmiGAqSQXdeXJ5wG4qPU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619700153439877.994173552424; Thu, 29 Apr 2021 05:42:33 -0700 (PDT) Received: from localhost ([::1]:42398 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lc600-0002fq-7o for importer@patchew.org; Thu, 29 Apr 2021 08:42:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39738) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lc5RF-0008Md-0W for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:40 -0400 Received: from mail-pf1-x42d.google.com ([2607:f8b0:4864:20::42d]:45987) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lc5RD-0000n8-1C for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:36 -0400 Received: by mail-pf1-x42d.google.com with SMTP id i190so6349088pfc.12 for ; Thu, 29 Apr 2021 05:06:34 -0700 (PDT) Received: from localhost.localdomain ([2405:201:6008:61b4:c0b1:be0f:608e:9a45]) by smtp.gmail.com with ESMTPSA id p6sm713643pjg.35.2021.04.29.05.06.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Apr 2021 05:06:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=8QxPCFI6EFxehLWO26ThoRdz/R0s7GDhey0ZK+cuoLY=; b=ixJiWrnhBKdBK2B4L7KyLNXFsLh9DNkR0C2NhuATlbKY9XTrcufR7vxwyFiJMFDkny FSJqen5qfhq04By1qnZZfh7KLkKLGBeh3V7b3pTRIZSDe4HSAK0MeRMFwph9e5X09Dfx +VGLndUGjHswlMoIE7WRAnc1c+00KbsixXKOsbM91OhHCON3Z4827qi0UcxEVVlujVrE k2MyVPUbztWS2F63kbf8rM3RWELoTR5p2Ptng5dsIKh5w3btSh3scVBBrhtMMn3fgFGT gGxgD1R/fjfxFQtOo2nimZOgZJTwyb4UOUU5/qedeWNmw+WxqkhfCey8VIOXfEvIKgw9 YvFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8QxPCFI6EFxehLWO26ThoRdz/R0s7GDhey0ZK+cuoLY=; b=SREFD/Y1lylr/Oy/QeFdrntx/86Al7zzz4WrEIYBPRQ1UQ+wJ8yQjV8GONGfG5qpE4 6DhH7fshHiAobkwBV6wvcVRTCKnxeR7+czFWKMojxZME7w/AvTy0x1zDRyRc6ZKtiums oV4FbFFbeEltT+3p54aPVKzp5yzfSl/FoIZJQ0R0LVwluebpXAa7fUK6nQk02/zy1JH3 vccax855Vml3GpZnBgOZJKcz1cjW86Bvd7AeO7EltnczmjD6IFITVCR1urh/TO0/wMwB /K7qj1zjoXk6qI71PKGyIyLarJ96AH8QeyqIF2zDksDo91c9gfV2OXShD+SKNI6xSa5y yTzw== X-Gm-Message-State: AOAM532lRESygXJzq9pfdhIolVNnv9HxyTJYltSx1IpBqNK2NZ+zszRX lfFyUC2GZFLAghdOSeamiH4= X-Google-Smtp-Source: ABdhPJwphd1jbVwl8Osw6hee6r4WcU6X1gWyKvnXkJmmUg4Pw/7/dabnStJHD6d1yipuCbioZ4IvRg== X-Received: by 2002:aa7:9696:0:b029:259:efef:e1e0 with SMTP id f22-20020aa796960000b0290259efefe1e0mr34082206pfk.0.1619697993677; Thu, 29 Apr 2021 05:06:33 -0700 (PDT) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com Subject: [RFC PATCH 25/27] virtio-snd: Add tx vq and handler Date: Thu, 29 Apr 2021 17:34:43 +0530 Message-Id: <20210429120445.694420-26-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42d; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pf1-x42d.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Type: text/plain; charset="utf-8" The handler demultiplexes the buffers recieved in the tx virtqueue. It uses a helper function for adding these buffers, (along with the entire virtqueue element,) to their respective streams. Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 62 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index e2e47e9467..be9ea05e3f 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -925,6 +925,66 @@ static void virtio_snd_handle_ctrl(VirtIODevice *vdev,= VirtQueue *vq) } } =20 +/* + * Adds a virtqueue element to a VirtIOSound card stream. Makes the buffer + * available to the stream for consumption. + * + * @s: VirtIOSound card + * @stream: stream id + * @elem: The tx virtqueue element that contains the I/O message + */ +static void virtio_snd_pcm_add_buf(VirtIOSound *s, uint32_t stream, + VirtQueueElement *elem) +{ + virtio_snd_pcm_stream *st =3D virtio_snd_pcm_get_stream(s, stream); + int nelems =3D virtio_snd_pcm_get_nelems(st); + st->tail++; + st->tail %=3D nelems; + + if (st->elems[st->tail]) { + return; + } + + st->elems[st->tail] =3D elem; + st->r_pos +=3D iov_size(elem->out_sg, elem->out_num) + - sizeof(virtio_snd_pcm_xfer); + st->r_pos %=3D st->buffer_bytes + 1; +} + +/* + * The tx virtqueue handler. Makes the buffers available to their respecti= ve + * streams for consumption. + * + * @vdev: VirtIOSound card + * @vq: tx virtqueue + */ +static void virtio_snd_handle_tx(VirtIODevice *vdev, VirtQueue *vq) +{ + VirtIOSound *s =3D VIRTIO_SOUND(vdev); + VirtQueueElement *elem; + size_t sz; + virtio_snd_pcm_xfer hdr; + + for (;;) { + elem =3D virtqueue_pop(vq, sizeof(VirtQueueElement)); + if (!elem) { + break; + } + if (iov_size(elem->in_sg, elem->in_num) < sizeof(virtio_snd_pcm_st= atus) || + iov_size(elem->out_sg, elem->out_num) < sizeof(virtio_snd_pcm_= xfer)) { + virtqueue_detach_element(vq, elem, 0); + g_free(elem); + break; + } + + /* get the message hdr object */ + sz =3D iov_to_buf(elem->out_sg, elem->out_num, 0, &hdr, sizeof(hdr= )); + assert(sz =3D=3D sizeof(virtio_snd_pcm_xfer)); + + virtio_snd_pcm_add_buf(s, hdr.stream_id, elem); + } +} + /* * Initializes the VirtIOSound card device. Validates the configuration * passed by the command line. Initializes the virtqueues. Allocates resou= rces @@ -969,6 +1029,7 @@ static void virtio_snd_device_realize(DeviceState *dev= , Error **errp) default_params.rate =3D VIRTIO_SND_PCM_RATE_44100; =20 s->ctrl_vq =3D virtio_add_queue(vdev, 64, virtio_snd_handle_ctrl); + s->tx_vq =3D virtio_add_queue(vdev, 64, virtio_snd_handle_tx); =20 s->streams =3D g_new0(virtio_snd_pcm_stream *, s->snd_conf.streams); s->pcm_params =3D g_new0(virtio_snd_pcm_params *, s->snd_conf.streams); @@ -1034,6 +1095,7 @@ static void virtio_snd_device_unrealize(DeviceState *= dev) s->jacks =3D NULL; =20 virtio_delete_queue(s->ctrl_vq); + virtio_delete_queue(s->tx_vq); } =20 static void virtio_snd_reset(VirtIODevice *vdev) --=20 2.25.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1619699327; cv=none; d=zohomail.com; s=zohoarc; b=IPrY0hNLJvWGvIFMMcVGIHiecCsoO9xWjal5GsBeZjFE93FJNclcWRpNu9stkbLb/vUKoWg8sCO+ziLdLXrFDCIHAmZoe/bN36ft4YC4eEhAtr07bhykHAzKdxIy7Uq4kYxH432r4KkA9O9U79iV7KBH5bo8vCzKfv8OAWC1lZ0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619699327; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=t1G+LGXknb/TdU7+3Mv95UX8IeDXcyLYEDg/l/FHnmY=; b=DO1Rmg6dHu2B+yto1MiewN6nDXw9HslfWgPp8JbZ3aJ7zjuSvN8AAE4Ur6CrojIqTqYCztAsdbYtjM4EbkWvjfSe/SlZIT0JnaguINPJUBSSXaB3Zx/9j7tYTlELgOa0JrXLYAluZpFaqYT+ckndQ3NvNtclGDK30aDdjPzEzi4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619699327084597.5924491024194; Thu, 29 Apr 2021 05:28:47 -0700 (PDT) Received: from localhost ([::1]:41862 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lc5mg-0007Tx-9z for importer@patchew.org; Thu, 29 Apr 2021 08:28:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39864) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lc5RL-0008RL-0O for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:43 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]:41871) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lc5RF-0000pF-LM for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:42 -0400 Received: by mail-pf1-x436.google.com with SMTP id v191so4144067pfc.8 for ; Thu, 29 Apr 2021 05:06:37 -0700 (PDT) Received: from localhost.localdomain ([2405:201:6008:61b4:c0b1:be0f:608e:9a45]) by smtp.gmail.com with ESMTPSA id p6sm713643pjg.35.2021.04.29.05.06.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Apr 2021 05:06:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=t1G+LGXknb/TdU7+3Mv95UX8IeDXcyLYEDg/l/FHnmY=; b=Za0IbxbPgt3pyCWRbSeNoDRhWPBgNBxKK3rA5rCmQSdfsUSpjT1aBqqAvAybPNZA66 a+M5oshKV+vS5pWJqw/jp/+aNGWNkBBr/QVmJmg00NyjHi3lFGQQS/9dI121am07Gw1S Xq3mpENENCeY/AtZ3Cy+ErCe+pE/nkHjGfqLscKRbss/NeMRXrS5pPJd3tw1E3FKY1tm LGBVbF4KLRvafAhM5iCrIWHy4yX+Xk3I774zRMQCl6Xhqp1JChhKl+Ev9iALA8iR3s/i wdq1xVHtqy3RX4AKYHDWO66+qtoZyIdOwy5kedVmyJ1irx3Gk4fD2s55gheV5MSMzY0K 82sw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=t1G+LGXknb/TdU7+3Mv95UX8IeDXcyLYEDg/l/FHnmY=; b=aEPT29E5uP2+OR/1TMfkBhF0OUy8qIaNLemLSv2eO3SGGLfHyDfLAjSsZ/W/EjkeDp 0JXyMSL8JCFbmAILVtfVfnx4x5Ilc7aKIWJiY6wMXDWdFEcJ0vg5lrMRvLgvXBkdlvfE WRTwFqpyT5mS7eTOHD+CGUgqE4VKO+drzlyN8ELxVL6I2zU549YZYXdtOxVI67biHiLg 7VBeROmy7YlOVks+aBAFsaqxX8Gidl6+C/ac1pBXfVv/I/0oakgo4qD0Dg8BiegOjyyJ tbM17HMtThi4wOJ09akH4LCEw27Zq4CU6aHvpBJ2rbp6bG4I1tBCyDXpU8lZ0CmN6Tc1 497w== X-Gm-Message-State: AOAM532kipm9VI/isN0wQjyDaWCx2MG0oFUBmVEctRSqpaEkTbg7JeoR 796GwbIdc4qVjxkUhQJ4mWQ= X-Google-Smtp-Source: ABdhPJxFMJ66RfHc1limM3jZwJkmP991j6/y+z4MdLH+XU6DQZCphuu37wtAvjxxFEoY0t+WfIaX7A== X-Received: by 2002:aa7:91d1:0:b029:1fe:2a02:73b9 with SMTP id z17-20020aa791d10000b02901fe2a0273b9mr32933855pfa.2.1619697996305; Thu, 29 Apr 2021 05:06:36 -0700 (PDT) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com Subject: [RFC PATCH 26/27] virtio-snd: Add event vq and a handler stub Date: Thu, 29 Apr 2021 17:34:44 +0530 Message-Id: <20210429120445.694420-27-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::436; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pf1-x436.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index be9ea05e3f..2d7b7ce39a 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -985,6 +985,18 @@ static void virtio_snd_handle_tx(VirtIODevice *vdev, V= irtQueue *vq) } } =20 +/* + * The event virtqueue handler. + * Not implemented yet. + * + * @vdev: VirtIOSound card + * @vq: event vq + */ +static void virtio_snd_handle_event(VirtIODevice *vdev, VirtQueue *vq) +{ + virtio_snd_log("event queue callback called\n"); +} + /* * Initializes the VirtIOSound card device. Validates the configuration * passed by the command line. Initializes the virtqueues. Allocates resou= rces @@ -1029,6 +1041,7 @@ static void virtio_snd_device_realize(DeviceState *de= v, Error **errp) default_params.rate =3D VIRTIO_SND_PCM_RATE_44100; =20 s->ctrl_vq =3D virtio_add_queue(vdev, 64, virtio_snd_handle_ctrl); + s->event_vq =3D virtio_add_queue(vdev, 64, virtio_snd_handle_event); s->tx_vq =3D virtio_add_queue(vdev, 64, virtio_snd_handle_tx); =20 s->streams =3D g_new0(virtio_snd_pcm_stream *, s->snd_conf.streams); @@ -1096,6 +1109,7 @@ static void virtio_snd_device_unrealize(DeviceState *= dev) =20 virtio_delete_queue(s->ctrl_vq); virtio_delete_queue(s->tx_vq); + virtio_delete_queue(s->event_vq); } =20 static void virtio_snd_reset(VirtIODevice *vdev) --=20 2.25.1 From nobody Mon Feb 9 01:00:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1619700266; cv=none; d=zohomail.com; s=zohoarc; b=lFTKqvI8pGzAEO+qIK0n5cL2saJUls2bgprUXvsQxd3WYEsCOAH1R9vRNL701DUYO+Bq3ZeqxFVqYJjjysaU7/OAA5+v99rb1ASM6ysFmlamhT+RJ3N46cIENBqFfMbi6EiRLT21y2F6EC+knfyjib8mAePKRXQd5zsnU17gUOM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619700266; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=AAL8bmnx7RYPiqljziT7Xp0N6yaxytRwZyH9QL2dPU0=; b=MqT3oDVKXXPg/M+Y0jE7shRvlAYDmitYKwS83K/Bn+zxTkkUgtHRqfmqPNCMW/PBDDfgXV+nrBA6ejQ6RJ95mik8CeMnGuUFBsBQQitY1jwdEbk+LW2K+V0F7Kf4kOSast829XnpNd4uyF3ZozqBjgabmc60gb9l6BADbwanXjA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 161970026631661.42966140500448; Thu, 29 Apr 2021 05:44:26 -0700 (PDT) Received: from localhost ([::1]:44592 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lc61p-0003bU-48 for importer@patchew.org; Thu, 29 Apr 2021 08:44:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39866) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lc5RL-0008Rx-8o for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:43 -0400 Received: from mail-pf1-x431.google.com ([2607:f8b0:4864:20::431]:45991) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lc5RJ-0000qj-I4 for qemu-devel@nongnu.org; Thu, 29 Apr 2021 08:06:42 -0400 Received: by mail-pf1-x431.google.com with SMTP id i190so6349257pfc.12 for ; Thu, 29 Apr 2021 05:06:39 -0700 (PDT) Received: from localhost.localdomain ([2405:201:6008:61b4:c0b1:be0f:608e:9a45]) by smtp.gmail.com with ESMTPSA id p6sm713643pjg.35.2021.04.29.05.06.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Apr 2021 05:06:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=AAL8bmnx7RYPiqljziT7Xp0N6yaxytRwZyH9QL2dPU0=; b=elB/CGe9GZG96Bx0D02MYvnIJ48rxxN57QM/lLiEWHb6A1DCyASzl5Y0pWiCtQ9M/9 fYiYK7SS2zFbMBnC/g5dBBbcfgZYkN9tBqRrbfN6acm3szrPIOHb4gFozRrob6pZpKyu 253z2DV1oPFQOEGGBLmClkBVnQ6rlk1cSqY4/PV5afemTerBMPJ2ahORH7XHkZU9wCX6 /tFYuFDq7NXNRbWqyhu3xvkh/A4jPFpA1WT0KUF5uAmKp1bZxNrRo9Yc2mzYbDS1rFkF TYgBKxbMgpQ1YkewQviLe4EaGGdunVk6dvjhzvMIK0jz/ek2TsyBgi9XNMjuu9gS6eJ/ Yd3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=AAL8bmnx7RYPiqljziT7Xp0N6yaxytRwZyH9QL2dPU0=; b=Yo+/Y0CCqcmr3NhwPPWt/eeoC1zLLJ+LaXOy0FP+DANVf3MPisqLJp8IKDyadVDf9F +WkeI27L/PSrJqo7R7+hZUW7lBfnfdujcZx7gDzthPcTdxcXoWBsEGoR+LIL3Snrgphy feKdsTmkHHfF4J0tCq9JPG9Pc8jf34uAWwbQMQQx5U00usPe1Wxzihh6AfWxYoS1Fmo1 pFfQGb/zTMrOjboYPSDCddwVzlZR8mb15hHyj2V7rBw8HntyOa3KhmLPYLkcfy+eT6bD RnfS/olAjhngCphE6K5wGBLKtbfQwBwTUP6xcaL7rE7LCbwKyc5HdE447AdywcZm+H/A NiuA== X-Gm-Message-State: AOAM533w/ArTWTbdmJD0qJCCPzNGOEoQetJWpvqa7Ag+KT1/67uXb+du E/tFavZFUtT/g+dhGuR00Cd75DkFPzRVrif1wtQ= X-Google-Smtp-Source: ABdhPJznm5faU8Bo6uWHUDQrGmilcPdHYkgwUYOBhCwGFjZW8JF8NWdwmExdzdFbT5/2s1OYSYZrxA== X-Received: by 2002:a63:500a:: with SMTP id e10mr31886358pgb.242.1619697998653; Thu, 29 Apr 2021 05:06:38 -0700 (PDT) From: Shreyansh Chouhan To: kraxel@redhat.com, mst@redhat.com Subject: [RFC PATCH 27/27] virtio-snd: Add rx vq and stub handler Date: Thu, 29 Apr 2021 17:34:45 +0530 Message-Id: <20210429120445.694420-28-chouhan.shreyansh2702@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> References: <20210429120445.694420-1-chouhan.shreyansh2702@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::431; envelope-from=chouhan.shreyansh2702@gmail.com; helo=mail-pf1-x431.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shreyansh Chouhan , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Shreyansh Chouhan --- hw/audio/virtio-snd.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index 2d7b7ce39a..6a1d3e824c 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -997,6 +997,18 @@ static void virtio_snd_handle_event(VirtIODevice *vdev= , VirtQueue *vq) virtio_snd_log("event queue callback called\n"); } =20 +/* + * The rx virtqueue handler. + * Not implemented yet. + * + * @vdev: VirtIOSound card + * @vq: rx vq + */ +static void virtio_snd_handle_rx(VirtIODevice *vdev, VirtQueue *vq) +{ + virtio_snd_log("rx queue callback called\n"); +} + /* * Initializes the VirtIOSound card device. Validates the configuration * passed by the command line. Initializes the virtqueues. Allocates resou= rces @@ -1043,6 +1055,7 @@ static void virtio_snd_device_realize(DeviceState *de= v, Error **errp) s->ctrl_vq =3D virtio_add_queue(vdev, 64, virtio_snd_handle_ctrl); s->event_vq =3D virtio_add_queue(vdev, 64, virtio_snd_handle_event); s->tx_vq =3D virtio_add_queue(vdev, 64, virtio_snd_handle_tx); + s->rx_vq =3D virtio_add_queue(vdev, 64, virtio_snd_handle_rx); =20 s->streams =3D g_new0(virtio_snd_pcm_stream *, s->snd_conf.streams); s->pcm_params =3D g_new0(virtio_snd_pcm_params *, s->snd_conf.streams); @@ -1110,6 +1123,7 @@ static void virtio_snd_device_unrealize(DeviceState *= dev) virtio_delete_queue(s->ctrl_vq); virtio_delete_queue(s->tx_vq); virtio_delete_queue(s->event_vq); + virtio_delete_queue(s->rx_vq); } =20 static void virtio_snd_reset(VirtIODevice *vdev) --=20 2.25.1