From patchwork Sun Feb 7 10:23:48 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shengjiu Wang X-Patchwork-Id: 378100 Delivered-To: patch@linaro.org Received: by 2002:a02:b18a:0:0:0:0:0 with SMTP id t10csp3805873jah; Sun, 7 Feb 2021 02:37:33 -0800 (PST) X-Google-Smtp-Source: ABdhPJwfoNElsLGMwrBakCTCghzdjLjEVxqruH1V/FGntySZxCTzuDLvi36Y1kGYCoMvkts3jKJa X-Received: by 2002:aa7:d790:: with SMTP id s16mr12152442edq.294.1612694253344; Sun, 07 Feb 2021 02:37:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1612694253; cv=none; d=google.com; s=arc-20160816; b=eKTaw9Bb8h2V/TYnTYyaAkHlb5xtJpQjFPXexZsa3Fwf9pY4DXlyOpWGpbUXDuqs4X tuFBezQN3YUGz1T3LDE4b0DveaGrOkAiSZSMtuJ0L3eOHhHpyXb091kQNjqPD7U2hD9o ltLDzhl9yII7IAez2RHJYoE6WzA3DTnVw16ecjpL0S4mtTK4+vfgLiE/1wW62K44GN67 Z35VcSBP4qg8o92CJhGdswccBnw0hMqXj4ay9/XMAj7Zzx3HSa1zlf5YCW7wWNJP1dN1 TJsAPZMBrBDtu3q+fFFw2YGkd4dCqYDs2fmCyfn1axTYxIM5FEXdNVW4Cgb3Bs/VXflo qirg== 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=0fj5evoUuDAfOYxfQjxkuHZyqG8skcbhM9p9orcKSBI=; b=NtFvz9XN/xNHq9JTPudAD7dmOZVKTY1fw3wNAvd+v3S9wOP3CN3crr5Ts6kYvW7ddX 9LoUyMea6a5GF1MzkP0CLR9Wr8U0DrQfRlGd/Tiiv3ARx0FMhURV0nm/CUVWcGnjE3jQ v2RuNQOgTD1eVZ6qlB7+NHJtGdTl9n5jyf1FaCPgCIK8Gl2IglqToM/jyaeZujYf/zqI 5Z1pXZlvt6Atmvz9WWn30we4zm5jwzwQ420WWMOltbd2qHQOLDBXNButjsUuNS5u/fdH 2j1MBUVoi+4Du0weIGpy2AbusOG+OTUS1t4RJQ6Cnlu7/LriPhJWoWPyDLmoEBZ1S7Ch Lh/A== 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 jg13si11056644ejc.616.2021.02.07.02.37.32; Sun, 07 Feb 2021 02:37:33 -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 S229548AbhBGKgP (ORCPT + 6 others); Sun, 7 Feb 2021 05:36:15 -0500 Received: from inva021.nxp.com ([92.121.34.21]:38418 "EHLO inva021.nxp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229522AbhBGKgP (ORCPT ); Sun, 7 Feb 2021 05:36:15 -0500 Received: from inva021.nxp.com (localhost [127.0.0.1]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id 3E9212019B4; Sun, 7 Feb 2021 11:35:28 +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 2E7C3200E28; Sun, 7 Feb 2021 11:35:23 +0100 (CET) Received: from localhost.localdomain (shlinux2.ap.freescale.net [10.192.224.44]) by invc005.ap-rdc01.nxp.com (Postfix) with ESMTP id A65414029B; Sun, 7 Feb 2021 11:35:16 +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 v2 0/7] Add audio driver base on rpmsg on i.MX platform Date: Sun, 7 Feb 2021 18:23:48 +0800 Message-Id: <1612693435-31418-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 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 | 80 ++ .../bindings/sound/imx-audio-rpmsg.yaml | 48 + include/sound/soc-component.h | 3 + sound/soc/fsl/Kconfig | 28 + sound/soc/fsl/Makefile | 6 + sound/soc/fsl/fsl_rpmsg.c | 252 +++++ sound/soc/fsl/fsl_rpmsg.h | 38 + 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, 2201 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