Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp1117039ybt; Fri, 26 Jun 2020 21:59:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw8dlNPx46HCOrOYPHdnipA9DkhETSz94l27Yo7AG6YqJ4k4qeXDWt2CmKHatLntSofnhn/ X-Received: by 2002:a17:907:33ce:: with SMTP id zk14mr5351728ejb.2.1593233993791; Fri, 26 Jun 2020 21:59:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593233993; cv=none; d=google.com; s=arc-20160816; b=MOVOmo2XOyvJnT7GxH9rre5wYVSMkF9IsB9h0eF+Kk3Th4DDfQQNDlBVv0B0q8QnSQ kYjziLcmSEeCsTyzU+ii9V8RIC3luTpbhWQWrUOHzps2A0CHQ//rVnb50UY8x44xTdCa 67ZKf87v17MtjbZeIDzp7NJJH1/mcBrywovjrUr4tgfaNheWNUznCuluzuuO80p6dPvQ pFMsWnpZsw/F+qNw950g6f9FiX6s5ZwPHvB8NHDhDkZILwD3Xo8hIyoeGTe4IqQsJhVR XLLUmNdqnAXFNxv1sTZANSFcE8CAVp4dH/17u99LU5gcCU2tHVqcIwE7WeL/t6SI3dw9 MC5w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:dkim-signature:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from; bh=taGJx4bnloUgV2sDI2d4cd/qcV9qYym60K4y+pWho+I=; b=W/23VTHFgAal8TTirstnxnMGX+XTnEMcYRz90CFRecsYrqNtsBBfnwojqTVk05eWkP Qqoa8xzqYTlGAIfCWwgPeB6tGZ7fpR7SoVIxul3oWvuNiACTe02ss4krW2d1mBU5cuj1 Nq+Q+K3jQaWhTsVM2L0A5emTM2IMfsBzWgpDMSYFYkMC9dQU1Hi8b3mgXMJPTP4N2zgC P5YGo0OKP7ZF6YsIu6HjUzWDXuFKHB2Ms03Uo6E7T2EJU1mGm9mjxalNbBaDuDwPqViH EBRSo3RypKy/NgaTlDEpGywxHh58jWnaVXe8Ou8yr0JmugNaAXO8gocuyEHuJLVjyaUd XFVg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nvidia.com header.s=n1 header.b=ddLfQ6Zq; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nvidia.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m15si4636629ejr.38.2020.06.26.21.59.30; Fri, 26 Jun 2020 21:59:53 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@nvidia.com header.s=n1 header.b=ddLfQ6Zq; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nvidia.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726566AbgF0E4Z (ORCPT + 99 others); Sat, 27 Jun 2020 00:56:25 -0400 Received: from hqnvemgate26.nvidia.com ([216.228.121.65]:17453 "EHLO hqnvemgate26.nvidia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725885AbgF0E4X (ORCPT ); Sat, 27 Jun 2020 00:56:23 -0400 Received: from hqpgpgate102.nvidia.com (Not Verified[216.228.121.13]) by hqnvemgate26.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) id ; Fri, 26 Jun 2020 21:56:09 -0700 Received: from hqmail.nvidia.com ([172.20.161.6]) by hqpgpgate102.nvidia.com (PGP Universal service); Fri, 26 Jun 2020 21:56:21 -0700 X-PGP-Universal: processed; by hqpgpgate102.nvidia.com on Fri, 26 Jun 2020 21:56:21 -0700 Received: from HQMAIL101.nvidia.com (172.20.187.10) by HQMAIL109.nvidia.com (172.20.187.15) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Sat, 27 Jun 2020 04:56:21 +0000 Received: from hqnvemgw03.nvidia.com (10.124.88.68) by HQMAIL101.nvidia.com (172.20.187.10) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Sat, 27 Jun 2020 04:56:21 +0000 Received: from audio.nvidia.com (Not Verified[10.24.34.185]) by hqnvemgw03.nvidia.com with Trustwave SEG (v7,5,8,10121) id ; Fri, 26 Jun 2020 21:56:20 -0700 From: Sameer Pujar To: , , , , , CC: , , , , , , , , , , , , , , , Sameer Pujar Subject: [PATCH v4 23/23] arm64: tegra: Add support for APE sound card on Jetson Nano and TX1 Date: Sat, 27 Jun 2020 10:23:45 +0530 Message-ID: <1593233625-14961-24-git-send-email-spujar@nvidia.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1593233625-14961-1-git-send-email-spujar@nvidia.com> References: <1593233625-14961-1-git-send-email-spujar@nvidia.com> MIME-Version: 1.0 Content-Type: text/plain DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1593233769; bh=taGJx4bnloUgV2sDI2d4cd/qcV9qYym60K4y+pWho+I=; h=X-PGP-Universal:From:To:CC:Subject:Date:Message-ID:X-Mailer: In-Reply-To:References:MIME-Version:Content-Type; b=ddLfQ6ZqgcJjKddkhaXM+i6RtbI0Dj80XmVHjRcUwn0osUbF1Cu38zjubnmUFsLH2 uEiAeafhsLn3CkzUVJB69CHPogvF7dMtAa5e4qCg84Y8kB0x19mr/lerMbRfCQJXaX 7BOLLueVWOH/vnWTwd2FCySGciMOD4n63HOPUMVVk1Qw0sLkvw2fXvKBc7Kkc2UJTc NM0nuWCVNxLDz8QUS7LE0FFo3/QxfmXFphZdpgHlknF8xpl8vIFpUuJqnFQ5PHw0AB qTGDZuiN5RqpEHLO3x+m6kYy/wgFz46gHrSX3UXYmRtskm+VlJuUPsPtw3JJhOG+Tl 6Bagn6CFRAwbQ== Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This adds APE sound card support on Jetson Nano and TX1 which is based on simple-card driver. Earlier in the series simple-card driver is enhanced to work with multiple ASoC components. Based on board design required I/O interfaces are exposed for I2S and DMIC. More complicated audio paths will be added going forward. Signed-off-by: Sameer Pujar --- arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts | 94 ++++++++++++++++++++++ arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts | 49 +++++++++++ arch/arm64/boot/dts/nvidia/tegra210.dtsi | 67 +++++++++++++++ 3 files changed, 210 insertions(+) diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts b/arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts index 3c21137..7c4b521 100644 --- a/arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts +++ b/arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts @@ -166,4 +166,98 @@ }; }; }; + + tegra_sound { + status = "okay"; + + simple-audio-card,name = "jetson-tx1-ape"; + + simple-audio-card,widgets = + "Microphone", "MIC", + "Speaker", "SPK"; + + simple-audio-card,routing = + "SPK", "I2S1 Playback", + "SPK", "I2S2 Playback", + "SPK", "I2S3 Playback", + "SPK", "I2S4 Playback", + "SPK", "I2S5 Playback", + "I2S1 Capture", "MIC", + "I2S2 Capture", "MIC", + "I2S3 Capture", "MIC", + "I2S4 Capture", "MIC", + "I2S5 Capture", "MIC", + "DMIC1 Capture", "MIC", + "DMIC2 Capture", "MIC", + "DMIC3 Capture", "MIC"; + + /* BE links */ + simple-audio-card,dai-link@1 { + format = "i2s"; + bitclock-master = <&cpu_i2s1>; + frame-master = <&cpu_i2s1>; + + cpu_i2s1: cpu@0 { + sound-dai = <&tegra_i2s1 0>; + }; + }; + + simple-audio-card,dai-link@2 { + format = "i2s"; + bitclock-master = <&cpu_i2s2>; + frame-master = <&cpu_i2s2>; + + cpu_i2s2: cpu@0 { + sound-dai = <&tegra_i2s2 0>; + }; + }; + + simple-audio-card,dai-link@3 { + format = "i2s"; + bitclock-master = <&cpu_i2s3>; + frame-master = <&cpu_i2s3>; + + cpu_i2s3: cpu@0 { + sound-dai = <&tegra_i2s3 0>; + }; + }; + + simple-audio-card,dai-link@4 { + format = "i2s"; + bitclock-master = <&cpu_i2s4>; + frame-master = <&cpu_i2s4>; + + cpu_i2s4: cpu@0 { + sound-dai = <&tegra_i2s4 0>; + }; + }; + + simple-audio-card,dai-link@5 { + format = "i2s"; + bitclock-master = <&cpu_i2s5>; + frame-master = <&cpu_i2s5>; + + cpu_i2s5: cpu@0 { + sound-dai = <&tegra_i2s5 0>; + }; + }; + + simple-audio-card,dai-link@6 { + cpu@0 { + sound-dai = <&tegra_dmic1 0>; + }; + }; + + simple-audio-card,dai-link@7 { + cpu@0 { + sound-dai = <&tegra_dmic2 0>; + }; + }; + + simple-audio-card,dai-link@8 { + cpu@0 { + sound-dai = <&tegra_dmic3 0>; + }; + }; + }; }; diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts b/arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts index 721f66c..31994f6 100644 --- a/arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts +++ b/arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts @@ -842,4 +842,53 @@ }; }; }; + + tegra_sound { + status = "okay"; + + simple-audio-card,name = "jetson-nano-ape"; + simple-audio-card,widgets = + "Microphone", "MIC", + "Speaker", "SPK"; + simple-audio-card,routing = + "SPK", "I2S3 Playback", + "SPK", "I2S4 Playback", + "I2S3 Capture", "MIC", + "I2S4 Capture", "MIC", + "DMIC1 Capture", "MIC", + "DMIC2 Capture", "MIC"; + + /* BE links */ + simple-audio-card,dai-link@1 { + format = "i2s"; + bitclock-master = <&cpu_i2s1>; + frame-master = <&cpu_i2s1>; + + cpu_i2s1: cpu@0 { + sound-dai = <&tegra_i2s3 0>; + }; + }; + + simple-audio-card,dai-link@2 { + format = "i2s"; + bitclock-master = <&cpu_i2s2>; + frame-master = <&cpu_i2s2>; + + cpu_i2s2: cpu@0 { + sound-dai = <&tegra_i2s4 0>; + }; + }; + + simple-audio-card,dai-link@3 { + cpu@0 { + sound-dai = <&tegra_dmic1 0>; + }; + }; + + simple-audio-card,dai-link@4 { + cpu@0 { + sound-dai = <&tegra_dmic2 0>; + }; + }; + }; }; diff --git a/arch/arm64/boot/dts/nvidia/tegra210.dtsi b/arch/arm64/boot/dts/nvidia/tegra210.dtsi index 73ae58f..f1925f1 100644 --- a/arch/arm64/boot/dts/nvidia/tegra210.dtsi +++ b/arch/arm64/boot/dts/nvidia/tegra210.dtsi @@ -1841,4 +1841,71 @@ }; }; }; + + tegra_sound { + status = "disabled"; + + compatible = "simple-cc-audio-card"; + + clocks = <&tegra_car TEGRA210_CLK_PLL_A>, + <&tegra_car TEGRA210_CLK_PLL_A_OUT0>, + <&tegra_car TEGRA210_CLK_EXTERN1>; + clock-names = "pll_a", "plla_out0", "aud_mclk"; + assigned-clocks = <&tegra_car TEGRA210_CLK_PLL_A>, + <&tegra_car TEGRA210_CLK_PLL_A_OUT0>, + <&tegra_car TEGRA210_CLK_EXTERN1>; + assigned-clock-parents = <0>, <0>, <&tegra_car TEGRA210_CLK_PLL_A_OUT0>; + assigned-clock-rates = <368640000>, <49152000>, <12288000>; + + simple-audio-card,aux-devs = <&tegra_ahub>; + + /* FE links */ + simple-audio-card,dai-link@0 { + cpu@0 { + sound-dai = <&tegra_admaif 0>; + }; + + cpu@1 { + sound-dai = <&tegra_admaif 1>; + }; + + cpu@2 { + sound-dai = <&tegra_admaif 2>; + }; + + cpu@3 { + sound-dai = <&tegra_admaif 3>; + }; + + cpu@4 { + sound-dai = <&tegra_admaif 4>; + }; + + cpu@5 { + sound-dai = <&tegra_admaif 5>; + }; + + cpu@6 { + sound-dai = <&tegra_admaif 6>; + }; + + cpu@7 { + sound-dai = <&tegra_admaif 7>; + }; + + cpu@8 { + sound-dai = <&tegra_admaif 8>; + }; + + cpu@9 { + sound-dai = <&tegra_admaif 9>; + }; + + /* + * Empty codec list. + * Router MUX controls take care of audio path by + * connecting multiple components. + */ + }; + }; }; -- 2.7.4