Received: by 2002:a05:7412:31a9:b0:e2:908c:2ebd with SMTP id et41csp3713141rdb; Wed, 13 Sep 2023 23:32:55 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH7CgGtqRroM48IJHmftXFAjAEoTdjMgeqNdmDZsEIN8oSH88XjFNHZtUZlWSo+0vXh9sXG X-Received: by 2002:a05:6358:4317:b0:12b:c378:b090 with SMTP id r23-20020a056358431700b0012bc378b090mr4522645rwc.26.1694673175633; Wed, 13 Sep 2023 23:32:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1694673175; cv=none; d=google.com; s=arc-20160816; b=Z9MsdWCCA7zI+qOo3m908HVasI6e3Sh0sV5omTYtzVpCTrUIrS9AQANjgImUsBShVx H8U9Ppj/ymozBP4bgzSwOxYQh/Uk0OvoeinvWHjuiRifLgJH5IHQp1T+YzesGtxzwmMu pU7s8aio289Ms6L+GLOeJN5A9t3dzuxnDGM2CxOgOtCfypuZXvnOJXJvBOWTSdQXFOWR EuG371Iv1Td2w5H937K+TrwDZW9tWnkDoDDgf2FeorWNgZjHCA79NKTwFQdDCPAv69Y+ rdMRIJzPF9nvXC+d+tECFJLT1ibQkTaSBTr2MVEadNGvawCj60MEp7PypUb9pU71AH3W yrsQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:to:from; bh=LPzMUpF3eAUjQmp08IXQ5fE62dTx7trR4FmN7F1UDzk=; fh=ufiESpW7Hvn5oNmN0l6/qCUiQrKfLLrOwb5uR1Dftds=; b=eLefqd+QvOk6QrzQcwFyuaTkLucB9Bx73nLaacNBN2KAWVhbjZuu/Mw2L84M3Hh+mi kJmdL+dZ+rMV3/HMeCLqPFYOxfFiRa7WJO1rDFIXkAU4+ariZVSFBq+icWtWL5YeFlAn GYkLGn26Bi2XwLppL//7Hc0N/eZCKadBZz+d5Rb8xBnMvHJC766QHQZmHPBnaUt7I9WX mzONiEDSEyBmSPya5dNuO2LAK5nRI9xCCSCMR65/3hY1ZgHr4mNY3JSQH6lX8mXTlt4k hKtMkw7UpnWGLH1+sm1ywNU578sFVpab154hmoBc9oe9mVMWSS3nsWCoNG5rf0Vm88Sk 1xEg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id bv2-20020a632e02000000b0056fc3ceaba4si804532pgb.432.2023.09.13.23.32.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 Sep 2023 23:32:55 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) client-ip=2620:137:e000::3:5; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id EFA2E83271CE; Wed, 13 Sep 2023 23:30:55 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235536AbjINGaq (ORCPT + 99 others); Thu, 14 Sep 2023 02:30:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49170 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235498AbjINGap (ORCPT ); Thu, 14 Sep 2023 02:30:45 -0400 Received: from inva020.nxp.com (inva020.nxp.com [92.121.34.13]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3D2B8CC7 for ; Wed, 13 Sep 2023 23:30:41 -0700 (PDT) Received: from inva020.nxp.com (localhost [127.0.0.1]) by inva020.eu-rdc02.nxp.com (Postfix) with ESMTP id A8EA11A0638; Thu, 14 Sep 2023 08:30:39 +0200 (CEST) Received: from aprdc01srsp001v.ap-rdc01.nxp.com (aprdc01srsp001v.ap-rdc01.nxp.com [165.114.16.16]) by inva020.eu-rdc02.nxp.com (Postfix) with ESMTP id 45DC31A062C; Thu, 14 Sep 2023 08:30:39 +0200 (CEST) Received: from localhost.localdomain (shlinux2.ap.freescale.net [10.192.224.44]) by aprdc01srsp001v.ap-rdc01.nxp.com (Postfix) with ESMTP id 5F6141834869; Thu, 14 Sep 2023 14:30:37 +0800 (+08) From: Shengjiu Wang To: hverkuil@xs4all.nl, sakari.ailus@iki.fi, tfiga@chromium.org, m.szyprowski@samsung.com, mchehab@kernel.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, shengjiu.wang@gmail.com, Xiubo.Lee@gmail.com, festevam@gmail.com, nicoleotsuka@gmail.com, lgirdwood@gmail.com, broonie@kernel.org, perex@perex.cz, tiwai@suse.com, alsa-devel@alsa-project.org, linuxppc-dev@lists.ozlabs.org Subject: [RFC PATCH v3 0/9] Add audio support in v4l2 framework Date: Thu, 14 Sep 2023 13:53:56 +0800 Message-Id: <1694670845-17070-1-git-send-email-shengjiu.wang@nxp.com> X-Mailer: git-send-email 2.7.4 X-Virus-Scanned: ClamAV using ClamSMTP Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (groat.vger.email [0.0.0.0]); Wed, 13 Sep 2023 23:30:56 -0700 (PDT) X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email Audio signal processing also has the requirement for memory to memory similar as Video. This asrc memory to memory (memory ->asrc->memory) case is a non real time use case. User fills the input buffer to the asrc module, after conversion, then asrc sends back the output buffer to user. So it is not a traditional ALSA playback and capture case. It is a specific use case, there is no reference in current kernel. v4l2 memory to memory is the closed implementation, v4l2 current support video, image, radio, tuner, touch devices, so it is not complicated to add support for this specific audio case. Because we had implemented the "memory -> asrc ->i2s device-> codec" use case in ALSA. Now the "memory->asrc->memory" needs to reuse the code in asrc driver, so the first 3 patches is for refining the code to make it can be shared by the "memory->asrc->memory" driver. The main change is in the v4l2 side, A /dev/vl4-audioX will be created, user applications only use the ioctl of v4l2 framework. Other change is to add memory to memory support for two kinds of i.MX ASRC module. changes in v3: - Modify documents for adding audio m2m support - Add audio virtual m2m driver - Defined V4L2_AUDIO_FMT_LPCM format type for audio. - Defined V4L2_CAP_AUDIO_M2M capability type for audio m2m case. - with modification in v4l-utils, pass v4l2-compliance test. changes in v2: - decouple the implementation in v4l2 and ALSA - implement the memory to memory driver as a platfrom driver and move it to driver/media - move fsl_asrc_common.h to include/sound folder Shengjiu Wang (9): ASoC: fsl_asrc: define functions for memory to memory usage ASoC: fsl_easrc: define functions for memory to memory usage ASoC: fsl_asrc: move fsl_asrc_common.h to include/sound ASoC: fsl_asrc: register m2m platform device ASoC: fsl_easrc: register m2m platform device media: v4l2: Add audio capture and output support media: uapi: Add V4L2_CID_USER_IMX_ASRC_RATIO_MOD control media: audm2m: add virtual driver for audio memory to memory media: imx-asrc: Add memory to memory driver .../userspace-api/media/v4l/audio-formats.rst | 15 + .../userspace-api/media/v4l/buffer.rst | 6 + .../userspace-api/media/v4l/control.rst | 5 + .../userspace-api/media/v4l/dev-audio.rst | 63 + .../userspace-api/media/v4l/devices.rst | 1 + .../media/v4l/pixfmt-aud-lpcm.rst | 31 + .../userspace-api/media/v4l/pixfmt.rst | 1 + .../media/v4l/vidioc-enum-fmt.rst | 2 + .../userspace-api/media/v4l/vidioc-g-fmt.rst | 4 + .../media/v4l/vidioc-querycap.rst | 3 + .../media/videodev2.h.rst.exceptions | 2 + .../media/common/videobuf2/videobuf2-v4l2.c | 4 + drivers/media/platform/nxp/Kconfig | 12 + drivers/media/platform/nxp/Makefile | 1 + drivers/media/platform/nxp/imx-asrc.c | 1058 +++++++++++++++++ drivers/media/test-drivers/Kconfig | 9 + drivers/media/test-drivers/Makefile | 1 + drivers/media/test-drivers/audm2m.c | 767 ++++++++++++ drivers/media/v4l2-core/v4l2-ctrls-defs.c | 1 + drivers/media/v4l2-core/v4l2-dev.c | 17 + drivers/media/v4l2-core/v4l2-ioctl.c | 53 + include/media/v4l2-dev.h | 2 + include/media/v4l2-ioctl.h | 34 + .../fsl => include/sound}/fsl_asrc_common.h | 54 + include/uapi/linux/v4l2-controls.h | 1 + include/uapi/linux/videodev2.h | 25 + sound/soc/fsl/fsl_asrc.c | 162 +++ sound/soc/fsl/fsl_asrc.h | 4 +- sound/soc/fsl/fsl_asrc_dma.c | 2 +- sound/soc/fsl/fsl_easrc.c | 239 ++++ sound/soc/fsl/fsl_easrc.h | 8 +- 31 files changed, 2584 insertions(+), 3 deletions(-) create mode 100644 Documentation/userspace-api/media/v4l/audio-formats.rst create mode 100644 Documentation/userspace-api/media/v4l/dev-audio.rst create mode 100644 Documentation/userspace-api/media/v4l/pixfmt-aud-lpcm.rst create mode 100644 drivers/media/platform/nxp/imx-asrc.c create mode 100644 drivers/media/test-drivers/audm2m.c rename {sound/soc/fsl => include/sound}/fsl_asrc_common.h (60%) -- 2.34.1