From patchwork Thu Jul 21 13:42:26 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: AngeloGioacchino Del Regno X-Patchwork-Id: 12925186 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 9D92FC433EF for ; Thu, 21 Jul 2022 13:47:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=ssf9FkIghJNh9Mp4ShCxhR7GVquvEhmaXg37tuLbN1c=; b=TvFA1xodlBSHB3 ThmiP1cLTzT/s+tud1XdIj05qJOv3ySwWzjB43lgMbEhu+mDeoz53f1f/wBPD0DhWo/eIODz6klGr FdepTZgef/s6LPNgD0R9g+hPFowmESCzveOtKj5OigwdqDNw/Av61bZWzc7YJJdW7ck+Tc7mzXnZJ Of/f+XtjdlRyrvq5Li31XUs+QVzOvy6QCgfXYLk+NuzciR8KgF7t/8Ra6lUe/qmfEkc2CBlnK+DJr FKNXL1VV/qwD0TU8r5uWh+NHcjMSANE9Kv+wIhMSsh5KwHs2dxfWvpFMfSUl8PZ3DHORsnEYT1QQu 1mTOWsQ7rForTTmcpyzg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oEWVR-007EbA-Gc; Thu, 21 Jul 2022 13:46:21 +0000 Received: from madras.collabora.co.uk ([46.235.227.172]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oEWRr-007CPJ-Rl; Thu, 21 Jul 2022 13:42:42 +0000 Received: from IcarusMOD.eternityproject.eu (2-237-20-237.ip236.fastwebnet.it [2.237.20.237]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: kholk11) by madras.collabora.co.uk (Postfix) with ESMTPSA id E4CD56601AAF; Thu, 21 Jul 2022 14:42:34 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1658410955; bh=dlqdtSuo04KavAzVuh7wvb7toYorthQcXqSIIZVLL6M=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=g+P9MM+AWoHjLIq62e484C/HRNq88fz3TVaXhZcj0KYZDt9FmuNBEKQZz8g36jNxb H0UyK+//tRmueKYzwOXvC6o4uDBAMaN5movVlvUxkDUuasdF5HyxWVgOKVhlPLmRGP 2dJZYXAJk5PB7pWVcsRGesavGJ1LAgqcVh5uArn5tyPFZSmrX2lA5P1jnVgSA/5qkO 8Vl03pfv8I49ajVikz7IcIR/8Gt+vAQ6V0Cm9fWjI5sPbGiDGxHzULmYFdY9sERy+t n2AZP0b+VfaUCZsZDgVC0vGg066qiRPdgLSYKo3k9A02Ej6zG444fnDEphdv6YjaOx QiOlfAjND6ZoA== From: AngeloGioacchino Del Regno To: matthias.bgg@gmail.com Cc: robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, AngeloGioacchino Del Regno Subject: [PATCH 6/8] arm64: dts: mediatek: cherry: Enable DSP, audio codec and sound card Date: Thu, 21 Jul 2022 15:42:26 +0200 Message-Id: <20220721134228.310178-7-angelogioacchino.delregno@collabora.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220721134228.310178-1-angelogioacchino.delregno@collabora.com> References: <20220721134228.310178-1-angelogioacchino.delregno@collabora.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220721_064240_261097_19656642 X-CRM114-Status: GOOD ( 12.08 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org All machines of the Cherry platform have a working DSP (integrated into the MT8195 SoC), and audio support, some with a different audio codec: specifically, some using Realtek's RT5682I and some RT5682S. Write a configuration for all the audio bits to enable functionality. Signed-off-by: AngeloGioacchino Del Regno --- .../dts/mediatek/mt8195-cherry-tomato-r1.dts | 10 ++ .../dts/mediatek/mt8195-cherry-tomato-r2.dts | 10 ++ .../dts/mediatek/mt8195-cherry-tomato-r3.dts | 10 ++ .../boot/dts/mediatek/mt8195-cherry.dtsi | 117 ++++++++++++++++++ 4 files changed, 147 insertions(+) diff --git a/arch/arm64/boot/dts/mediatek/mt8195-cherry-tomato-r1.dts b/arch/arm64/boot/dts/mediatek/mt8195-cherry-tomato-r1.dts index 3348ba69ff6c..2d5e8f371b6d 100644 --- a/arch/arm64/boot/dts/mediatek/mt8195-cherry-tomato-r1.dts +++ b/arch/arm64/boot/dts/mediatek/mt8195-cherry-tomato-r1.dts @@ -10,6 +10,16 @@ / { compatible = "google,tomato-rev1", "google,tomato", "mediatek,mt8195"; }; +&audio_codec { + compatible = "realtek,rt5682i"; + realtek,btndet-delay = <16>; +}; + +&sound { + compatible = "mediatek,mt8195_mt6359_rt1019_rt5682"; + model = "mt8195_r1019_5682"; +}; + &ts_10 { status = "okay"; }; diff --git a/arch/arm64/boot/dts/mediatek/mt8195-cherry-tomato-r2.dts b/arch/arm64/boot/dts/mediatek/mt8195-cherry-tomato-r2.dts index 4669e9d917f8..2586c32ce6e6 100644 --- a/arch/arm64/boot/dts/mediatek/mt8195-cherry-tomato-r2.dts +++ b/arch/arm64/boot/dts/mediatek/mt8195-cherry-tomato-r2.dts @@ -10,6 +10,11 @@ / { compatible = "google,tomato-rev2", "google,tomato", "mediatek,mt8195"; }; +&audio_codec { + compatible = "realtek,rt5682i"; + realtek,btndet-delay = <16>; +}; + &pio_default { pins-low-power-hdmi-disable { pinmux = , @@ -30,6 +35,11 @@ pins-low-power-pcie0-disable { }; }; +&sound { + compatible = "mediatek,mt8195_mt6359_rt1019_rt5682"; + model = "mt8195_r1019_5682"; +}; + &ts_10 { status = "okay"; }; diff --git a/arch/arm64/boot/dts/mediatek/mt8195-cherry-tomato-r3.dts b/arch/arm64/boot/dts/mediatek/mt8195-cherry-tomato-r3.dts index 5021edd02f7c..f54f9477b99d 100644 --- a/arch/arm64/boot/dts/mediatek/mt8195-cherry-tomato-r3.dts +++ b/arch/arm64/boot/dts/mediatek/mt8195-cherry-tomato-r3.dts @@ -11,6 +11,11 @@ / { "google,tomato", "mediatek,mt8195"; }; +&audio_codec { + compatible = "realtek,rt5682s"; + realtek,amic-delay-ms = <250>; +}; + &pio_default { pins-low-power-hdmi-disable { pinmux = , @@ -31,6 +36,11 @@ pins-low-power-pcie0-disable { }; }; +&sound { + compatible = "mediatek,mt8195_mt6359_rt1019_rt5682"; + model = "m8195_r1019_5682s"; +}; + &ts_10 { status = "okay"; }; diff --git a/arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi b/arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi index 58349d4c3c8b..ca9955a97f8f 100644 --- a/arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi +++ b/arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi @@ -25,6 +25,12 @@ chosen { stdout-path = "serial0:115200n8"; }; + dmic_codec: dmic-codec { + compatible = "dmic-codec"; + num-channels = <2>; + wakeup-delay-ms = <50>; + }; + memory@40000000 { device_type = "memory"; reg = <0 0x40000000 0 0x80000000>; @@ -116,9 +122,49 @@ scp_mem: memory@50000000 { reg = <0 0x50000000 0 0x2900000>; no-map; }; + + adsp_mem: memory@60000000 { + compatible = "shared-dma-pool"; + reg = <0 0x60000000 0 0xd80000>; + no-map; + }; + + afe_mem: memory@60d80000 { + compatible = "shared-dma-pool"; + reg = <0 0x60d80000 0 0x100000>; + no-map; + }; + + adsp_device_mem: memory@60e80000 { + compatible = "shared-dma-pool"; + reg = <0 0x60e80000 0 0x280000>; + no-map; + }; + }; + + spk_amplifier: rt1019p { + compatible = "realtek,rt1019p"; + label = "rt1019p"; + pinctrl-names = "default"; + pinctrl-0 = <&rt1019p_pins_default>; + sdb-gpios = <&pio 100 GPIO_ACTIVE_HIGH>; }; }; +&adsp { + status = "okay"; + + memory-region = <&adsp_device_mem>, <&adsp_mem>; +}; + +&afe { + status = "okay"; + + mediatek,etdm-in2-cowork-source = <2>; + mediatek,etdm-out2-cowork-source = <0>; + memory-region = <&afe_mem>; +}; + &i2c0 { status = "okay"; @@ -152,6 +198,17 @@ &i2c2 { clock-frequency = <400000>; pinctrl-names = "default"; pinctrl-0 = <&i2c2_pins>; + + audio_codec: codec@1a { + /* Realtek RT5682i or RT5682s, sharing the same configuration */ + reg = <0x1a>; + interrupts-extended = <&pio 89 IRQ_TYPE_EDGE_BOTH>; + realtek,jd-src = <1>; + + AVDD-supply = <&mt6359_vio18_ldo_reg>; + MICVDD-supply = <&pp3300_z2>; + VBAT-supply = <&pp3300_z5>; + }; }; &i2c3 { @@ -256,6 +313,11 @@ &mmc1 { vqmmc-supply = <&mt_pmic_vmc_ldo_reg>; }; +&mt6359codec { + mediatek,dmic-mode = <1>; /* one-wire */ + mediatek,mic-type-0 = <2>; /* DMIC */ +}; + /* for CPU-L */ &mt6359_vcore_buck_reg { regulator-always-on; @@ -463,6 +525,34 @@ &pio { "AP_SPI_FLASH_MOSI", "AP_SPI_FLASH_MISO"; + aud_pins_default: audio-default-pins { + pins-cmd-dat { + pinmux = , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + ; + }; + + pins-hp-jack-int-odl { + pinmux = ; + input-enable; + bias-pull-up = ; + }; + }; + cr50_int: cr50-irq-default-pins { pins-gsc-ap-int-odl { pinmux = ; @@ -707,6 +797,21 @@ pins-low-power-pupd { }; }; + rt1011_pins_default: rt1011-default-pins { + pins-spk { + pinmux = , + ; + output-high; + }; + }; + + rt1019p_pins_default: rt1019p-default-pins { + pins-amp-sdb { + pinmux = ; + output-low; + }; + }; + scp_pins: scp-default-pins { pins-vreq { pinmux = ; @@ -779,6 +884,18 @@ cros-ec-rpmsg { }; }; +&sound { + status = "okay"; + + mediatek,adsp = <&adsp>; + mediatek,dai-link = + "DL10_FE", "DPTX_BE", "ETDM1_IN_BE", "ETDM2_IN_BE", + "ETDM1_OUT_BE", "ETDM2_OUT_BE","UL_SRC1_BE", + "AFE_SOF_DL2", "AFE_SOF_DL3", "AFE_SOF_UL4", "AFE_SOF_UL5"; + pinctrl-names = "default"; + pinctrl-0 = <&aud_pins_default>; +}; + &spi0 { status = "okay";