From patchwork Wed May 9 12:56:11 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srinivas Kandagatla X-Patchwork-Id: 135261 Delivered-To: patch@linaro.org Received: by 10.46.151.6 with SMTP id r6csp5609255lji; Wed, 9 May 2018 06:00:46 -0700 (PDT) X-Google-Smtp-Source: AB8JxZrzLUqrL+TvlHuxGeJgAavNiBCv8pAiyRYnwOinVoX3le24AGf5Lsywdm65yyFWW15Q0zuU X-Received: by 2002:a17:902:968d:: with SMTP id n13-v6mr44175161plp.168.1525870846736; Wed, 09 May 2018 06:00:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525870846; cv=none; d=google.com; s=arc-20160816; b=Y8JxlHzHssqdax00bRfVsNacxxc2+CjzvuRR7nQVmTuWGAOwIbKhG/+vgPnfYhd/Ru 9e10JWhjSkcTqc4cXCXJYoA+37zVPDgXjtcx86IIDC9GXzI7nKiBFX6IIo5mTrpp5A3I +2OlVC9B1gOBRohS0lf212xZK+kMviVIle934HdrsIryVsAwMxNZ8obhQydS/mL2YW/a nPhfRJJ9IiabfGbVQKpvzaufeT9VddV2yvbDtCZL2gnx5Y1BFVHAZFbJM54YDDHAMvI7 vWIx9qFeQ0hMszzJ0BsYP25ClD61W/fjpQtX7LlBzbTm+ABYKFejjhHPhxPMfWnqh36z c/sg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=DLwiU4wS0GGtEn9LMQQ9UroJjIFS9AObUS+vWZ9hkGQ=; b=HNpOUs0kUJ8+hJvJtmsUM58mcEU1Z9MNaYAGDtcu56vSk7V/tC2TY0wkMRyKxriqni 36A39VYg3ZQ9sRPJCB2I5ELXn6utQZQTL9j5CnZFDZ20OkDP9EFHoHD7J3wGI4GqdbwK gjnCCca0aFAJVLdyIl9OXvFOAN0CASEFk4cXH+oV08/geAntkO9D2v1rHWGaPDF5f3pr 75ScPJAQ9K4T1NBvH2Llt0dIkAHpUReBGChI7ybaIV9MdX6+f2ZPP5lfdkbSBa5SAM9V NXC2RXAt6NFJpISFTGFiTjO0lC5mD3uBx5xwCSnyBCI7kNLWQnOQacyB+yq6JDKhX3ik c40Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Xnp35UIm; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w66si27030291pfj.144.2018.05.09.06.00.46; Wed, 09 May 2018 06:00:46 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Xnp35UIm; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935056AbeEINAl (ORCPT + 29 others); Wed, 9 May 2018 09:00:41 -0400 Received: from mail-wm0-f67.google.com ([74.125.82.67]:53373 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S935032AbeEINAi (ORCPT ); Wed, 9 May 2018 09:00:38 -0400 Received: by mail-wm0-f67.google.com with SMTP id a67so24468190wmf.3 for ; Wed, 09 May 2018 06:00:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=DLwiU4wS0GGtEn9LMQQ9UroJjIFS9AObUS+vWZ9hkGQ=; b=Xnp35UImSWk+6RyGBMowVmXWyIhioitntiIwO13jtw0W9SFkBsz95DSeL1IWiZXLud LNWGA6gKg95sUO/qj2Otz93N5NXxPQzv8f3zA36jCi6oSv5VkQPQ4FBC5VjSb9sPZPNt WqBR4lsFf2LgQ2IQo4xdjNtwanwkWp6NioGc4= 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; bh=DLwiU4wS0GGtEn9LMQQ9UroJjIFS9AObUS+vWZ9hkGQ=; b=s4Iul64B9wTiJtwZL56Pl9q8+zunzBeug4FlQJaS6Hw57hVFHPROfwY/803NTQG/93 QtdzlTvslUlB+zyT0cP5q2LdjR1qczI955YJzgmtbVOV9cJXCIlqhB7XRKql8t2RZPzD GeBKaNRZIzGV8r8yy94IwP7LjM2zF8luXYVgoatTq4e0QPuAoXkvcrSNFfuC/fr+r/7w wVrEpnafImP/VylsWeYqwODW1KeWlKRqx9Z1SYRyb5/QsRPEaWqcLornlOtJEjI2vyVS YR3FCj7UkHvbOKH+OXG9MdumthsTmRLtICjQlYffqRAl8Tsw/gTlPF9VC9xHtAr5kzrm QS5w== X-Gm-Message-State: ALQs6tDDR0LUMqEbuBC0vrv565WdPCt+s1DFKuKA+oMOCKUiRJREJJVk FybRNGd4XCMbU4ENoZd0Wt1omQ== X-Received: by 2002:a1c:7d4a:: with SMTP id y71-v6mr5504538wmc.89.1525870834663; Wed, 09 May 2018 06:00:34 -0700 (PDT) Received: from localhost.localdomain (cpc90716-aztw32-2-0-cust92.18-1.cable.virginm.net. [86.26.100.93]) by smtp.gmail.com with ESMTPSA id q2-v6sm29422963wrj.57.2018.05.09.06.00.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 09 May 2018 06:00:33 -0700 (PDT) From: Srinivas Kandagatla To: andy.gross@linaro.org, broonie@kernel.org, linux-arm-msm@vger.kernel.org, alsa-devel@alsa-project.org, robh+dt@kernel.org, bgoswami@codeaurora.org Cc: gregkh@linuxfoundation.org, david.brown@linaro.org, mark.rutland@arm.com, lgirdwood@gmail.com, plai@codeaurora.org, tiwai@suse.com, perex@perex.cz, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, rohkumar@qti.qualcomm.com, spatakok@qti.qualcomm.com, Srinivas Kandagatla Subject: [PATCH v8 00/24] ASoC: qcom: Add support to QDSP based Audio Date: Wed, 9 May 2018 13:56:11 +0100 Message-Id: <20180509125635.5653-1-srinivas.kandagatla@linaro.org> X-Mailer: git-send-email 2.16.2 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Thankyou everyone for providing feedback and testing v7 patchset. This patchset aims to provide a basic version of QCOM DSP based audio support which is available in downstream andriod kernels. This patchset support audio playback on HDMI-RX, MI2S, SLIMBus and will add support to other features as we move on. QDSP has both static and dynamic modules. static modules like AFE (Audio FrontEnd), ADM (Audio Device Manager), ASM(Audio Stream Manager) and CORE to provide this audio services. All these services use APR (Asynchronous Packet Router) protocol via smd/glink transport to communicate with Application processor. More details on each module is availble in there respective patch. This patchset is tested on DB820c, with HDMI audio playback, MI2S on DB410c on top of mainline, Also tested SLIMBus analog audio using wcd9355 with an additional patches. Patches are also tested on SDM845 by Rohit. Here is my test branch incase someone want to try these patches https://git.linaro.org/people/srinivas.kandagatla/linux.git/log/?h=v4.17-qdsp6 Here is block diagram to give a quick overview of the components +---------+ +---------+ +---------+ | q6asm | |q6routing| | q6afe | | dais | <------> | mixers | <-----> | dais | +---------+ +---------+ +---------+ ^ ^ ^ | | | | +------------------+----------------+ | | | | | | v v v v v +---------+ +---------+ +---------+ | q6ASM | | q6ADM | | q6AFE | +---------+ +---------+ +---------+ ^ ^ ^ ^ | | | CPU Side | ------+---------------------+-------------------+-------- | | | | |APR(smd/glink) | | | | | +------------------+----------------+ | | | | | | +-----+--+-----------------------------------+--+------- | | | | | QDSP Side | v v v v v v +---------+ +---------+ +---------+ | ASM | <------> | ADM | <-----> | AFE | +---------+ +---------+ +---------+ ^ | +-------------------+ | ---------------------------+-------------------------- | Audio I/O | v v +--------------------------------------------------+ | Audio devices | | CODEC | HDMI-TX | PCM | SLIMBUS | I2S |MI2S |...| | | +--------------------------------------------------+ Changes since v6 (https://lkml.org/lkml/2018/5/1/176) - Added Banajit's and Bjorn's reviewed by tags to patches. - Few minor typos spotted by Banajit. - Made read/write allocations to be atomic as spotted by Rohit. - fixed error path in db820c machine driver. - rebased patchset on top of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git/?h=for-next Srinivas Kandagatla (24): soc: qcom dt-bindings: Add APR bus bindings soc: qcom: Add APR bus driver ASoC: qdsp6: dt-bindings: Add q6core dt bindings ASoC: qdsp6: dt-bindings: Add q6afe dt bindings ASoC: qdsp6: dt-bindings: Add q6adm dt bindings ASoC: qdsp6: dt-bindings: Add q6asm dt bindings ASoC: qdsp6: q6common: Add qdsp6 helper functions ASoC: qdsp6: q6core: Add q6core driver ASoC: qdsp6: q6afe: Add q6afe driver ASoC: qdsp6: qdafe: Add SLIMBus port Support ASoC: qdsp6: q6afe: Add support to MI2S ports ASoC: qdsp6: q6afe: Add support to MI2S sysclks ASoC: qdsp6: q6adm: Add q6adm driver ASoC: qdsp6: q6asm: Add q6asm driver ASoC: qdsp6: q6asm: Add support to memory map and unmap ASoC: qdsp6: q6asm: Add support to audio stream apis ASoC: qdsp6: q6routing: Add q6routing driver ASoC: qdsp6: q6routing: Add support to all SLIMBus Mixers ASoC: qdsp6: q6routing: Add support to MI2S Mixers ASoC: qdsp6: q6afe: Add q6afe dai driver ASoC: qdsp6: q6asm: Add q6asm dai driver ASoC: qdsp6: dt-bindings: Add apq8096 machine bindings ASoC: qcom: apq8096: Add db820c machine driver MAINTAINERS: Add myself as co-maintainer of qcom audio .../devicetree/bindings/soc/qcom/qcom,apr.txt | 84 ++ .../devicetree/bindings/sound/qcom,apq8096.txt | 109 ++ .../devicetree/bindings/sound/qcom,q6adm.txt | 33 + .../devicetree/bindings/sound/qcom,q6afe.txt | 104 ++ .../devicetree/bindings/sound/qcom,q6asm.txt | 33 + .../devicetree/bindings/sound/qcom,q6core.txt | 21 + MAINTAINERS | 1 + drivers/soc/qcom/Kconfig | 9 + drivers/soc/qcom/Makefile | 1 + drivers/soc/qcom/apr.c | 378 ++++++ include/dt-bindings/soc/qcom,apr.h | 28 + include/dt-bindings/sound/qcom,q6afe.h | 31 + include/dt-bindings/sound/qcom,q6asm.h | 22 + include/linux/mod_devicetable.h | 11 + include/linux/soc/qcom/apr.h | 128 ++ sound/soc/qcom/Kconfig | 50 + sound/soc/qcom/Makefile | 5 + sound/soc/qcom/apq8096.c | 255 ++++ sound/soc/qcom/qdsp6/Makefile | 8 + sound/soc/qcom/qdsp6/q6adm.c | 633 +++++++++ sound/soc/qcom/qdsp6/q6adm.h | 25 + sound/soc/qcom/qdsp6/q6afe-dai.c | 748 +++++++++++ sound/soc/qcom/qdsp6/q6afe.c | 1046 +++++++++++++++ sound/soc/qcom/qdsp6/q6afe.h | 193 +++ sound/soc/qcom/qdsp6/q6asm-dai.c | 624 +++++++++ sound/soc/qcom/qdsp6/q6asm.c | 1398 ++++++++++++++++++++ sound/soc/qcom/qdsp6/q6asm.h | 69 + sound/soc/qcom/qdsp6/q6core.c | 380 ++++++ sound/soc/qcom/qdsp6/q6core.h | 15 + sound/soc/qcom/qdsp6/q6dsp-common.c | 66 + sound/soc/qcom/qdsp6/q6dsp-common.h | 24 + sound/soc/qcom/qdsp6/q6dsp-errno.h | 51 + sound/soc/qcom/qdsp6/q6routing.c | 982 ++++++++++++++ sound/soc/qcom/qdsp6/q6routing.h | 9 + 34 files changed, 7574 insertions(+) create mode 100644 Documentation/devicetree/bindings/soc/qcom/qcom,apr.txt create mode 100644 Documentation/devicetree/bindings/sound/qcom,apq8096.txt create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6adm.txt create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6afe.txt create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6asm.txt create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6core.txt create mode 100644 drivers/soc/qcom/apr.c create mode 100644 include/dt-bindings/soc/qcom,apr.h create mode 100644 include/dt-bindings/sound/qcom,q6afe.h create mode 100644 include/dt-bindings/sound/qcom,q6asm.h create mode 100644 include/linux/soc/qcom/apr.h create mode 100644 sound/soc/qcom/apq8096.c create mode 100644 sound/soc/qcom/qdsp6/Makefile create mode 100644 sound/soc/qcom/qdsp6/q6adm.c create mode 100644 sound/soc/qcom/qdsp6/q6adm.h create mode 100644 sound/soc/qcom/qdsp6/q6afe-dai.c create mode 100644 sound/soc/qcom/qdsp6/q6afe.c create mode 100644 sound/soc/qcom/qdsp6/q6afe.h create mode 100644 sound/soc/qcom/qdsp6/q6asm-dai.c create mode 100644 sound/soc/qcom/qdsp6/q6asm.c create mode 100644 sound/soc/qcom/qdsp6/q6asm.h create mode 100644 sound/soc/qcom/qdsp6/q6core.c create mode 100644 sound/soc/qcom/qdsp6/q6core.h create mode 100644 sound/soc/qcom/qdsp6/q6dsp-common.c create mode 100644 sound/soc/qcom/qdsp6/q6dsp-common.h create mode 100644 sound/soc/qcom/qdsp6/q6dsp-errno.h create mode 100644 sound/soc/qcom/qdsp6/q6routing.c create mode 100644 sound/soc/qcom/qdsp6/q6routing.h -- 2.16.2