From patchwork Thu Feb 25 02:52:36 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shengjiu Wang X-Patchwork-Id: 387187 Delivered-To: patch@linaro.org Received: by 2002:a02:290e:0:0:0:0:0 with SMTP id p14csp889955jap; Wed, 24 Feb 2021 19:07:17 -0800 (PST) X-Google-Smtp-Source: ABdhPJza+4myWIaCW5apIW+78KbkjsQgKTvQ/jftN7BNDolNsrtM34JzHM/tr17yhe4vQj4Lb9jc X-Received: by 2002:a05:6402:2215:: with SMTP id cq21mr864632edb.281.1614222437866; Wed, 24 Feb 2021 19:07:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614222437; cv=none; d=google.com; s=arc-20160816; b=FyAqkeGmuLfjS/7W+rO/KJO+lUjH3x28jq7yNdu3X2kUF7EczfnZVHdIUhxDGamhLz Up8wU8XZht9467kCZxjt9fwZXfFqan1Z6hxt9j4bkFmW8Wod70d7cGIId0WgDA7jhCHG xUoszV2DJ9flBw97qb2tg3kfKb0/sJqnk6dvhJFL5JgjLQ7+1kuQ/d3RnXVE8EhrjyLC 403qWVDPsWsS7Ns5nXsxz7OqwDhLc55L/OlhciDmqDC4J/2/fzYCp1FVI4uprXfhhrgm Y8y5dWbBCbO0obf/zwVpwK7AbO2b6iFclenAnq4GKJZxjwgE9awMSFoSC/HdghVPMeM5 Gu5A== 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=THmm2FR0uPB7fq/8pl4M1m+EeBOSaysN/Whbwy6gEYc=; b=BLR8f6qonF9aCHRZaSp+wFqH6QnStGiMtqVCv23mBVPQESPbBWOv1gsrptCpOxKqjS CPAlcb79DZV5FS3bvvfNj/jMuGbH+WzZSwBSspZUOIH8CQInFuzyXA5OJHP/O84Oh6fc V9Xq7EEPTgv75RzjmaVFhhm+ywh3zbCmJQjW+mf0B3/drrrYH79KRqZEWuL0Wz1CbIoq NaORtTYDX6crNtj5wH3w1h+/0m3xw2BQfbY/pTOeDl50upR1M3sqdBSFD4Pp3AThk2Rn AvcdF2+mAUiAzHsDUpFKCPy75/4BrMi9uNgi5fcn/mLmvyaRTlb73Q+hR8RgFhEHeJTl KxuA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of devicetree-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=devicetree-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id hs7si2757584ejc.745.2021.02.24.19.07.17; Wed, 24 Feb 2021 19:07:17 -0800 (PST) Received-SPF: pass (google.com: domain of devicetree-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of devicetree-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=devicetree-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236911AbhBYDGJ (ORCPT + 6 others); Wed, 24 Feb 2021 22:06:09 -0500 Received: from inva021.nxp.com ([92.121.34.21]:40400 "EHLO inva021.nxp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232847AbhBYDGI (ORCPT ); Wed, 24 Feb 2021 22:06:08 -0500 Received: from inva021.nxp.com (localhost [127.0.0.1]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id C2AA7200659; Thu, 25 Feb 2021 04:05:20 +0100 (CET) Received: from invc005.ap-rdc01.nxp.com (invc005.ap-rdc01.nxp.com [165.114.16.14]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id 185C7200943; Thu, 25 Feb 2021 04:05:14 +0100 (CET) Received: from localhost.localdomain (shlinux2.ap.freescale.net [10.192.224.44]) by invc005.ap-rdc01.nxp.com (Postfix) with ESMTP id 5654C402D0; Thu, 25 Feb 2021 04:05:06 +0100 (CET) From: Shengjiu Wang To: lgirdwood@gmail.com, broonie@kernel.org, perex@perex.cz, tiwai@suse.com, alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org, timur@kernel.org, nicoleotsuka@gmail.com, Xiubo.Lee@gmail.com, festevam@gmail.com, linuxppc-dev@lists.ozlabs.org, robh+dt@kernel.org, devicetree@vger.kernel.org Subject: [PATCH v3 0/7] Add audio driver base on rpmsg on i.MX platform Date: Thu, 25 Feb 2021 10:52:36 +0800 Message-Id: <1614221563-26822-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: devicetree@vger.kernel.org On Asymmetric multiprocessor, there is Cortex-A core and Cortex-M core, Linux is running on A core, RTOS is running on M core. The audio hardware device can be controlled by Cortex-M device, So audio playback/capture can be handled by M core. Rpmsg is the interface for sending and receiving msg to and from M core, that we can create a virtual sound on Cortex-A core side. A core will tell the Cortex-M core sound format/rate/channel, where is the data buffer, what is the period size, when to start, when to stop and when suspend or resume happen, each of this behavior there is defined rpmsg command. Especially we designed the low power audio case, that is to allocate a large buffer and fill the data, then Cortex-A core can go to sleep mode, Cortex-M core continue to play the sound, when the buffer is consumed, Cortex-M core will trigger the Cortex-A core to wakeup to fill data. changes in v3: - add local refcount for clk enablement in hw_params() - update the document according Rob's comments changes in v2: - update codes and comments according to Mark's comments Shengjiu Wang (7): ASoC: soc-component: Add snd_soc_pcm_component_ack ASoC: fsl_rpmsg: Add CPU DAI driver for audio base on rpmsg ASoC: dt-bindings: fsl_rpmsg: Add binding doc for rpmsg cpu dai driver ASoC: imx-audio-rpmsg: Add rpmsg_driver for audio channel ASoC: imx-pcm-rpmsg: Add platform driver for audio base on rpmsg ASoC: imx-rpmsg: Add machine driver for audio base on rpmsg ASoC: dt-bindings: imx-rpmsg: Add binding doc for rpmsg machine driver .../devicetree/bindings/sound/fsl,rpmsg.yaml | 94 ++ .../bindings/sound/imx-audio-rpmsg.yaml | 55 ++ include/sound/soc-component.h | 3 + sound/soc/fsl/Kconfig | 28 + sound/soc/fsl/Makefile | 6 + sound/soc/fsl/fsl_rpmsg.c | 261 +++++ sound/soc/fsl/fsl_rpmsg.h | 40 + sound/soc/fsl/imx-audio-rpmsg.c | 151 +++ sound/soc/fsl/imx-pcm-rpmsg.c | 919 ++++++++++++++++++ sound/soc/fsl/imx-pcm-rpmsg.h | 512 ++++++++++ sound/soc/fsl/imx-rpmsg.c | 148 +++ sound/soc/soc-component.c | 14 + sound/soc/soc-pcm.c | 2 + 13 files changed, 2233 insertions(+) create mode 100644 Documentation/devicetree/bindings/sound/fsl,rpmsg.yaml create mode 100644 Documentation/devicetree/bindings/sound/imx-audio-rpmsg.yaml create mode 100644 sound/soc/fsl/fsl_rpmsg.c create mode 100644 sound/soc/fsl/fsl_rpmsg.h create mode 100644 sound/soc/fsl/imx-audio-rpmsg.c create mode 100644 sound/soc/fsl/imx-pcm-rpmsg.c create mode 100644 sound/soc/fsl/imx-pcm-rpmsg.h create mode 100644 sound/soc/fsl/imx-rpmsg.c -- 2.27.0