Received: by 10.192.165.148 with SMTP id m20csp1825047imm; Thu, 26 Apr 2018 02:51:02 -0700 (PDT) X-Google-Smtp-Source: AIpwx4/TGc8Ok3BuucMXvhpsoGLS+o1Xti+mtm7YXSEt80CwKxcBxYgfGkF0XhzoBnmsrUQZ8kPK X-Received: by 10.99.97.133 with SMTP id v127mr26549295pgb.441.1524736262477; Thu, 26 Apr 2018 02:51:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524736262; cv=none; d=google.com; s=arc-20160816; b=pT3j/m6GhS1XKYfu9z7r+/CcExJWNg8qVmPz1oF/RJZ8OVhd6hXdVyMsSbs5/v1t6i DSu9sm8cnTw+X1mkUCQUAbhwj8tDw7TMowdwetyPHHb5iyHZs7XAOnCMeP4KXTSobxhT O0BWRTzZFE/bMnMFCdtjqoXu1ovIuO/cTpde821X+i7fVRaJ8I/WuvRoFny1aAa2ZmsR 8a/vUO8rQOUpRZZz6T6vi90uB9G8FOHJQq6+D9dpD7HMiP8TzNvTJ96K7y/lAADrd6CD jdYuzV+h+r+h9rOhQllYA69AqXGwmtow+BAXIFR/6hGdMGJ9wMaoxUV3+JbM4Vf6Q6oW wepQ== 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=fmLSwknBi4BMV8RAqgPuQ1zKtyHJNQeA90U+wou84Ms=; b=bJ/A/+5dU5YolU79tdX9DQJCPGvNu82fi/5VSmhWAQA95nThUlRLcRCDMi9cP6WiLd 98yV0gasZiYUD8rsOsc6fZTD1TIUgSYx353EttbOQjQuZyLNLUJwyhWjjPf/KeYA/Iqr xYEJqSjPNOPudt+WFu6PFkfiE12/F9oNG+uPj2K0TdM6AOqJgaQlCqfaLB2xtvCzQTEp fZbVM5dv6OdQZHJJPCSdTHWx9R5wvglgq7isd4tg82avmAOKO0rJ9BbxgyGhzptRHCuk pRh36c3TSOAUu4nInME58gMdxaJLdw2yORe/FuZKntJsQFfMJAYmRrPdNHU91weDJEk0 gy/A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=D2GSG9Ro; 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 g13si14904473pgq.69.2018.04.26.02.50.48; Thu, 26 Apr 2018 02:51:02 -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=D2GSG9Ro; 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 S1754519AbeDZJtc (ORCPT + 99 others); Thu, 26 Apr 2018 05:49:32 -0400 Received: from mail-wm0-f67.google.com ([74.125.82.67]:37005 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753487AbeDZJta (ORCPT ); Thu, 26 Apr 2018 05:49:30 -0400 Received: by mail-wm0-f67.google.com with SMTP id l16so12053996wmh.2 for ; Thu, 26 Apr 2018 02:49:29 -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=fmLSwknBi4BMV8RAqgPuQ1zKtyHJNQeA90U+wou84Ms=; b=D2GSG9RoWDxTvmF2VXylZl7cNsprITbfugWyRKPhIlTN0ZmPz17cv+5qlolRIC1juX vZPDC9OmkSB1JiIBNAaELsJAOVDut4QnfHI6wUePQEg8g3ll5Pn0yInjroOKACGNvcU5 PU0mUOhYQ2J+/YLD1h14DTAMPy4JnazTmUNu4= 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=fmLSwknBi4BMV8RAqgPuQ1zKtyHJNQeA90U+wou84Ms=; b=C2PmiS+Riou/0dBwxtjabqLcf+b820Fb0+3Sq8i9q/P6SCB6qUTu0cFnPMrRdRJ1ag G6/JVc7ccrq5Ko/BALcu7foVActRtLi0xTj6enu3oB+rENR8fwEMhnVFy3BPMRBl/PXk wOYXzEZx/J1JHcJOjwKiLj1S6IjJ8yJWXtMS5JTsb1qhaQ4GyTD6KW8lxJbYK5lZOb0A CxSdP4JuToFyzltpFF1LEyO0USjOYmzR42Rz01rMQ7XRN6aDtlfUt+ImrJaZkGZbB1Wi veN9BLRC9azYAMcIoxvef9XT5LV2o0MSdxmX/k0f0oU+MtKXRad/uhXjMmP+8CXisgTb cv3w== X-Gm-Message-State: ALQs6tA0TvLABhbxUlfDJHRbiVYwX4z8/nxYT7MWZvrX4LOfRmr+1fAk q2FnGr1YxYTExwz+CiZOpeap8Q== X-Received: by 10.28.220.84 with SMTP id t81mr15139103wmg.90.1524736168661; Thu, 26 Apr 2018 02:49:28 -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 a79sm5287289wme.48.2018.04.26.02.49.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 26 Apr 2018 02:49:27 -0700 (PDT) From: srinivas.kandagatla@linaro.org 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 v6 00/24] ASoC: qcom: Add support to QDSP based Audio Date: Thu, 26 Apr 2018 10:45:42 +0100 Message-Id: <20180426094606.4775-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 From: Srinivas Kandagatla Thankyou everyone for providing feedback and testing v5 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 v5 (https://lkml.org/lkml/2018/4/18/553) - updated bindings as reviewed by Rob H. - added missing binding for q6core - fixed copp double count reported by Amit Pundir - Updated proper SPDX licence on headers - reorder patches to fix bisect errors reported by kbuild 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 | 88 ++ .../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 | 384 ++++++ 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 | 130 ++ sound/soc/qcom/Kconfig | 50 + sound/soc/qcom/Makefile | 5 + sound/soc/qcom/apq8096.c | 238 ++++ sound/soc/qcom/qdsp6/Makefile | 8 + sound/soc/qcom/qdsp6/q6adm.c | 635 ++++++++++ sound/soc/qcom/qdsp6/q6adm.h | 25 + sound/soc/qcom/qdsp6/q6afe-dai.c | 752 +++++++++++ sound/soc/qcom/qdsp6/q6afe.c | 1071 ++++++++++++++++ sound/soc/qcom/qdsp6/q6afe.h | 193 +++ sound/soc/qcom/qdsp6/q6asm-dai.c | 632 ++++++++++ sound/soc/qcom/qdsp6/q6asm.c | 1312 ++++++++++++++++++++ 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, 7502 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