Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp1488634pxa; Sun, 2 Aug 2020 09:19:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwkF3ivslO6M2vqJ2hdZr/rO1wLwu42yve8MnZ6UjwPxXxpP/K7RptPALIXStUkwWPg9ZjT X-Received: by 2002:a17:906:a10d:: with SMTP id t13mr41476ejy.388.1596385176940; Sun, 02 Aug 2020 09:19:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1596385176; cv=none; d=google.com; s=arc-20160816; b=SrvQrwqNhS6WR2h0W2oTtzx7cBzhStsqz78wdAA80K5fX7wb5eK5vrI4da943MlJmY w8Wo129VYcsAgE0SMJOFrVtQ7jillPmkumyqtuPP2hsNWE9RthZAE94smkEACCTGfHXN iA5hCwk2KxqrCcrzWEbwDcvW0pNReHjKSG3INxaE9l04KIXvzlUmI1OWPSDqLMTCNbTq EtKh3erOseraTHxXuuaRIozrAYOTNPjg6sE3d34+lT6CbTlAcg5u3UMiPO9Pab70j5H0 9ACIqdL6Z1XLB8BI/Xe6t862FonDZzzzT7qn+rKtnEs4UCJ6DuJhvvLasEGAPz1iQNWs wkBg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=cQWVw3SB6z9jM5b72JAUPp1juAi0vMTElnJ5suGz3g8=; b=0vrv5XZNBPSnhg0MBHBKb8sWCmm6ilOMKOhZ6Lw+BYOJxdkdUYnzwQ3baG2O1DP6qA Jq5dEmc3xfeAowzblxB3Rhq57TFVr0p+xrX3DpR2USEzpQaSoGbrt1WRRH3VvQr9eqJC FdsZb4cAaRmQdq6P60ftO4FWMw7F6AZ8QcPKJrVoG/aQnaVAiAwXBJPq57XCavRSTpqA h2Wcp4PhSXHC8opz2m1xDULiOzmf3pxpbyGCm2xA3qkFOlUOdG8HMlofaouUxUDc2rj5 xYdh9B4ETMedGQUskqnXUPVT7M8NNLJbwbqYvbQLUW6WAkRs2i4L8OLSVC+0IzQChCyU 7WRQ== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id h7si1565857edr.140.2020.08.02.09.18.47; Sun, 02 Aug 2020 09:19:36 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726536AbgHBPmy (ORCPT + 99 others); Sun, 2 Aug 2020 11:42:54 -0400 Received: from www1102.sakura.ne.jp ([219.94.129.142]:16270 "EHLO www1102.sakura.ne.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725768AbgHBPmy (ORCPT ); Sun, 2 Aug 2020 11:42:54 -0400 Received: from fsav105.sakura.ne.jp (fsav105.sakura.ne.jp [27.133.134.232]) by www1102.sakura.ne.jp (8.15.2/8.15.2) with ESMTP id 072Fgb3C098877; Mon, 3 Aug 2020 00:42:37 +0900 (JST) (envelope-from katsuhiro@katsuster.net) Received: from www1102.sakura.ne.jp (219.94.129.142) by fsav105.sakura.ne.jp (F-Secure/fsigk_smtp/550/fsav105.sakura.ne.jp); Mon, 03 Aug 2020 00:42:37 +0900 (JST) X-Virus-Status: clean(F-Secure/fsigk_smtp/550/fsav105.sakura.ne.jp) Received: from localhost.localdomain (121.252.232.153.ap.dti.ne.jp [153.232.252.121]) (authenticated bits=0) by www1102.sakura.ne.jp (8.15.2/8.15.2) with ESMTPSA id 072FgW67098844 (version=TLSv1.2 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 3 Aug 2020 00:42:37 +0900 (JST) (envelope-from katsuhiro@katsuster.net) From: Katsuhiro Suzuki To: Heiko Stuebner Cc: linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Katsuhiro Suzuki Subject: [PATCH v2] arm64: dts: rockchip: enable HDMI sound nodes for rk3328-rock64 Date: Mon, 3 Aug 2020 00:42:31 +0900 Message-Id: <20200802154231.2639186-1-katsuhiro@katsuster.net> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch enables HDMI sound (I2S0) and Analog sound (I2S1) which are defined in rk3328.dtsi, and replace SPDIF nodes. We can use SPDIF pass-through with suitable ALSA settings and on mpv or other media players. - Settings: https://github.com/LibreELEC/LibreELEC.tv/blob/master/projects/Rockchip/filesystem/usr/share/alsa/cards/SPDIF.conf - Ex.: mpv foo.ac3 --audio-spdif=ac3 --audio-device='alsa/SPDIF.pcm.iec958.0:SPDIF' [Why use simple-audio-card for SPDIF?] For newly adding nodes, ASoC guys recommend to use audio-graph-card. But all other sound nodes for rk3328 have already been defined by simple-audio-card. In this time, I chose for consistent sound nodes. [DMA allocation problem] After this patch is applied, UART2 will fail to allocate DMA resources but UART driver can work fine without DMA. This error is related to the DMAC of rk3328 (pl330 or compatible). DMAC connected to 16 DMA sources. Each sources have ID number that is called 'Req number' in rk3328 TRM. After this patch is applied total 7 of DMA sources will be activated as follows: | Req number | Source | Required | | | | channels | |------------+--------+-----------| | 8, 9 | SPI0 | 2ch | | 11, 12 | I2S0 | 2ch | | 14, 15 | I2S1 | 2ch | | 10 | SPDIF | 1ch | |------------+--------+-----------| | | Total | 7ch | |------------+--------+-----------| | 6, 7 | UART2 | 2ch | -> cannot get DMA channels Due to rk3328 DMAC specification we can use max 8 channels at same time. If SPI0/I2S0/I2S1/SPDIF will be activated by this patch, required DMAC channels reach to 7. So the last two channels (for UART2) cannot get DMA resources. Virt-dma mechanism for pl0330 DMAC driver is needed to fix this problem. Signed-off-by: Katsuhiro Suzuki --- .../arm64/boot/dts/rockchip/rk3328-rock64.dts | 56 ++++++++----------- 1 file changed, 24 insertions(+), 32 deletions(-) diff --git a/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts b/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts index 86cfb5c50a94..c984662043da 100644 --- a/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts +++ b/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts @@ -84,34 +84,32 @@ standby_led: led-1 { }; }; - sound { - compatible = "audio-graph-card"; - label = "rockchip,rk3328"; - dais = <&i2s1_p0 - &spdif_p0>; + spdif_sound: spdif-sound { + compatible = "simple-audio-card"; + simple-audio-card,name = "SPDIF"; + + simple-audio-card,cpu { + sound-dai = <&spdif>; + }; + + simple-audio-card,codec { + sound-dai = <&spdif_dit>; + }; }; - spdif-dit { + spdif_dit: spdif-dit { compatible = "linux,spdif-dit"; #sound-dai-cells = <0>; - - port { - dit_p0_0: endpoint { - remote-endpoint = <&spdif_p0_0>; - }; - }; }; }; +&analog_sound { + status = "okay"; +}; + &codec { mute-gpios = <&grf_gpio 0 GPIO_ACTIVE_LOW>; status = "okay"; - - port@0 { - codec_p0_0: endpoint { - remote-endpoint = <&i2s1_p0_0>; - }; - }; }; &cpu0 { @@ -163,6 +161,10 @@ &hdmi { status = "okay"; }; +&hdmi_sound { + status = "okay"; +}; + &hdmiphy { status = "okay"; }; @@ -278,16 +280,12 @@ regulator-state-mem { }; }; -&i2s1 { +&i2s0 { status = "okay"; +}; - i2s1_p0: port { - i2s1_p0_0: endpoint { - dai-format = "i2s"; - mclk-fs = <256>; - remote-endpoint = <&codec_p0_0>; - }; - }; +&i2s1 { + status = "okay"; }; &io_domains { @@ -337,12 +335,6 @@ &sdmmc { &spdif { pinctrl-0 = <&spdifm0_tx>; status = "okay"; - - spdif_p0: port { - spdif_p0_0: endpoint { - remote-endpoint = <&dit_p0_0>; - }; - }; }; &spi0 { -- 2.27.0