From patchwork Sun Jan 24 16:53:59 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Yakovlev X-Patchwork-Id: 12042503 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 72461C433DB for ; Sun, 24 Jan 2021 16:55:42 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 91E7E22CF6 for ; Sun, 24 Jan 2021 16:55:41 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 91E7E22CF6 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=opensynergy.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=alsa-devel-bounces@alsa-project.org Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id BBA9B187F; Sun, 24 Jan 2021 17:54:49 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz BBA9B187F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1611507339; bh=qBdqh6Hk/aeTgMayEXDdyx5hvWHsslIi/nUG1crKRG8=; h=From:To:Subject:Date:Cc:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From; b=Qe1FBbEXgLjH6uw/WdbX2pGWTRSKBPIdGuIugBk/Xjr/N/esQhjM0V8hTowesEz1m uXsWC+qmhs+gi5DowX+P3v3kvD6knkZLfIuLib+8NNPMlbZxt4SjjNhLIp/130Ieu4 KrXSN0X1MeqaHk2ekTd2djDor5lElV7D05JkgHAw= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id 70A74F801ED; Sun, 24 Jan 2021 17:54:30 +0100 (CET) Received: by alsa1.perex.cz (Postfix, from userid 50401) id 77892F80253; Sun, 24 Jan 2021 17:54:29 +0100 (CET) Received: from mx1.opensynergy.com (mx1.opensynergy.com [217.66.60.4]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id 304AFF8012D for ; Sun, 24 Jan 2021 17:54:23 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz 304AFF8012D Authentication-Results: alsa1.perex.cz; dkim=pass (2048-bit key) header.d=opensynergy.com header.i=@opensynergy.com header.b="wTWwrbJo" Received: from SR-MAILGATE-02.opensynergy.com (localhost.localdomain [127.0.0.1]) by mx1.opensynergy.com (Proxmox) with ESMTP id C2D0FA1474; Sun, 24 Jan 2021 17:54:22 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=opensynergy.com; h=cc:cc:content-transfer-encoding:content-type:content-type :date:from:from:message-id:mime-version:reply-to:subject:subject :to:to; s=srmailgate02; bh=407DwG5ueGDAX8UwpLnKp71Ue2el151hR6ieo eo9Lsw=; b=wTWwrbJojW2Q5Vvv5xNXSCFFHQ9MxSVVkFpTe4RCu+x03TQ5hVZxJ N/GkqQ59+LUsGTd+ZK/KkHqSZIHJCUQ2Nj/FRxxFATAon/V+hSz3+5TSdjUA22mz PluxMQc6nH0JZE+Jkbsh9X6eIHjNW9X5+UQJnoih+zGslMLVnMTPU2zyR2sGLpVL YXwn1yrfcnXai16HNxHFHLSFHioSWou5nYiOegRn5p/UC8pw4RNsEaxUU9qvairm IglVYW6fkI0pLYJXomFbXBAS60FuQC1djE+yVLMmevNpBmQcr3AnNR5Bq/T9uBrq LtSb6OguYinjczdj6BpjH93pgTHqa7VEw== From: Anton Yakovlev To: , , Subject: [PATCH v2 0/9] ALSA: add virtio sound driver Date: Sun, 24 Jan 2021 17:53:59 +0100 Message-ID: <20210124165408.1122868-1-anton.yakovlev@opensynergy.com> X-Mailer: git-send-email 2.30.0 MIME-Version: 1.0 X-ClientProxiedBy: SR-MAIL-02.open-synergy.com (10.26.10.22) To SR-MAIL-01.open-synergy.com (10.26.10.21) Cc: Takashi Iwai , "Michael S. Tsirkin" X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: "Alsa-devel" This series implements a driver part of the virtio sound device specification v8 [1]. The driver supports PCM playback and capture substreams, jack and channel map controls. A message-based transport is used to write/read PCM frames to/from a device. The series is based (and was actually tested) on Linus's master branch [2], on top of commit 1e2a199f6ccd ("Merge tag 'spi-fix-v5.11-rc4' of ...") As a device part was used OpenSynergy proprietary implementation. Any comments are very welcome. v1->v2 changes: 1. For some reason, in the previous patch series, several patches were squashed. Fixed this issue to make the review easier. 2. Added mst@redhat.com to the MAINTAINERS. 3. When creating virtqueues, now only the event virtqueue is disabled. It's enabled only after successful initialization of the device. 4. Added additional comments to the reset worker function: [2/9] virtio_card.c:virtsnd_reset_fn() 5. Added check that VIRTIO_F_VERSION_1 feature bit is set. 6. Added additional comments to the device removing function: [2/9] virtio_card.c:virtsnd_remove() 7. Added additional comments to the tx/rx interrupt handler: [5/9] virtio_pcm_msg.c:virtsnd_pcm_msg_complete() 8. Added additional comments to substream release wait function. [6/9] virtio_pcm_ops.c:virtsnd_pcm_released() [1] https://lists.oasis-open.org/archives/virtio-dev/202003/msg00185.html [2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git Anton Yakovlev (9): uapi: virtio_ids: add a sound device type ID from OASIS spec ALSA: virtio: add virtio sound driver ALSA: virtio: handling control messages ALSA: virtio: build PCM devices and substream hardware descriptors ALSA: virtio: handling control and I/O messages for the PCM device ALSA: virtio: PCM substream operators ALSA: virtio: introduce jack support ALSA: virtio: introduce PCM channel map support ALSA: virtio: introduce device suspend/resume support MAINTAINERS | 9 + include/uapi/linux/virtio_ids.h | 1 + include/uapi/linux/virtio_snd.h | 361 ++++++++++++++++++++ sound/Kconfig | 2 + sound/Makefile | 3 +- sound/virtio/Kconfig | 10 + sound/virtio/Makefile | 13 + sound/virtio/virtio_card.c | 577 +++++++++++++++++++++++++++++++ sound/virtio/virtio_card.h | 121 +++++++ sound/virtio/virtio_chmap.c | 237 +++++++++++++ sound/virtio/virtio_ctl_msg.c | 293 ++++++++++++++++ sound/virtio/virtio_ctl_msg.h | 122 +++++++ sound/virtio/virtio_jack.c | 255 ++++++++++++++ sound/virtio/virtio_pcm.c | 582 ++++++++++++++++++++++++++++++++ sound/virtio/virtio_pcm.h | 132 ++++++++ sound/virtio/virtio_pcm_msg.c | 325 ++++++++++++++++++ sound/virtio/virtio_pcm_ops.c | 528 +++++++++++++++++++++++++++++ 17 files changed, 3570 insertions(+), 1 deletion(-) create mode 100644 include/uapi/linux/virtio_snd.h create mode 100644 sound/virtio/Kconfig create mode 100644 sound/virtio/Makefile create mode 100644 sound/virtio/virtio_card.c create mode 100644 sound/virtio/virtio_card.h create mode 100644 sound/virtio/virtio_chmap.c create mode 100644 sound/virtio/virtio_ctl_msg.c create mode 100644 sound/virtio/virtio_ctl_msg.h create mode 100644 sound/virtio/virtio_jack.c create mode 100644 sound/virtio/virtio_pcm.c create mode 100644 sound/virtio/virtio_pcm.h create mode 100644 sound/virtio/virtio_pcm_msg.c create mode 100644 sound/virtio/virtio_pcm_ops.c