From nobody Sun Dec 14 19:35:43 2025 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 19B982E6CA8 for ; Sat, 13 Dec 2025 23:09:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765667379; cv=none; b=s0cqIVK9n0BNfY7YwOCIzccWIRVfdJLQDhZMrR4AHMATxn23p6aLpCG3Mzs/ununALRu4Hxh7+CR+fdbsi23Y5j2NqomfKfLpBnwKXxoWM5BlIFCANXfGTT+frRpmMZyxoe+0uICP1T60yhkpLxJMdzJ2A7BMC+aoueYX6WFcP4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765667379; c=relaxed/simple; bh=2BUPsrNioNxK4+IHCCv/2w8ycDCSKi9sjQBr9y1shEE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cFdVNdepQZaDA3AQfR+86CQx5bhlX8fSeQAG9s5xwmCWYgL+BdGudTb4y67BjhlPzZdj0PPm4lZmfoS0SyqPlEkle54FSdCBxBkQIQRU6/XUMDfS9HBmco1H2wVEbKr4izKXSk2/+yvmYjsmD0oHrmWwvVaIOobnudeiEisFpL4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=MQGPdZ06; arc=none smtp.client-ip=209.85.128.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="MQGPdZ06" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-477ba2c1ca2so26588875e9.2 for ; Sat, 13 Dec 2025 15:09:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765667375; x=1766272175; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=WOpZh7LYAA8Dtx9qfwir93rZZO8/sCuUlp6Rdd8i9AU=; b=MQGPdZ06M6M+2h4Ok5mIQRPsNZBjN+MTLdea4Wjq/lms9KDUdjttXU1AZioXeyMnJg oPmCSfzW04/TGdjEUCvCCt14V6UuC0/zA0sEaAbU2c/t/40bPCOWnr/12Ee7Ir5h7zip 0ICNW3IU21iLmhsMwJj1dqV0j1yI1VdnK5BX7iP5F2AxpNEh14/E7jrIoF2GS+uaVffZ FE2b/5cl6cAaIRDKLSiKdRERuVaZ9rTSjdNWwxkZvSRCNFX5yoZaaIO/JyjsEoTjXURN tfE97Zw6rGPQZAXL4415lEe5HzRldQ0fXuzIh50iLQeGYajFgLMcDOFwlnRrRGkBsDXG iUQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765667375; x=1766272175; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=WOpZh7LYAA8Dtx9qfwir93rZZO8/sCuUlp6Rdd8i9AU=; b=PXHBSkc1CINnumj15QZUlcHMeLrBgKYu0ZRAIDY3+xENHmHOJfkX6iA17n1JYn8APk bLXENxeTyC2Qsz5HFxaM2gWpoOIz4hU5/4Zpbg3m5LAyLQkaoxnw6plyd2Tg/wgLd9GG vivlbIxaoFrjxBdwAbDzYCcnBOQio3vZ6podBWHK8k9Ljy8pnu3vJ2v39s03dQsXEYev wXwvK+BS1MJoHEgKOi76HqkCD+1zcJWtDMr4Fv+Tua7uA62SBiiLeZdC5ed9nzoL8PX7 PZMvQ0G7eKHcToso72yoci7nfspOVnMYHKBxJIiXuRZR6e7APlBRFcJyfxD8Rr/rJj2Z NO1g== X-Forwarded-Encrypted: i=1; AJvYcCXH+L38GTa3IR1w7VGfuoeIWL0EWQDkod0ln5rj+fUl/Ip5v2swGCJTc5CuFjGzUfN5daslkblhWgvgqtE=@vger.kernel.org X-Gm-Message-State: AOJu0YwdiWYXvpotbCg0kw5nh221NVwgR0nbRJoXYZ8N4tt4CYTwrHfZ AWshvnfoMkI3IB/D2ZJRnie8cgJQ7fPDBrgzVHziNEhvO0mENGgjFXeW X-Gm-Gg: AY/fxX5DKKf5Al7xgkaWuYu+9+11mQlARUtPAcS/xOlcDgyb9+/GD5mdcSOZTCd8Pu6 nRhkqvacqLjd0YHNkfd5hHfgdl++6vhh+V2RSgGsj6hTbrGV1rVZNf9sZ6olV/W/wC7rli4gYXD Zh61t+E5KVftap278p7+oNfrcecwpcWlAzX6+ZEONNo89HsVcM3MGrDxnDkRKt+WQ2iG1/wOtwp wOR91SmDOh7Qg21AAVRI0Mne8FaXCuBRq4FnxV4DIEOOd+oT9VoS8Es3s5xySMJu6tWeyuLGYWt GwXexQOVVqHYBwyrxa34ejrMDxnQJvFRmMQS+hZ4ojYKUufA4tKC6bUQg+ZkQsfZyGd4d628iwA +EOsWnaci0Mkr5FFCEyQwqfJwHgHepOm59jDC5Xsh2NSrCZ6zsxay7HZE9fuMKjlLv9G7v6RBP3 sCMMAU3VuQKzUxCnPyZt950Yg1Rr0mmYK1QcYOvXNHsAZcX5R1PUtvraCE/0sMVccXW0DAhxs+7 aXUIRmctrfinKI= X-Google-Smtp-Source: AGHT+IFh/ZiZ9L++4UdOLlAP7bnIG/paHtZaS1ZXQpXk440Sin8Fz6Voei7JBvcemO+FNI3s4UJtDQ== X-Received: by 2002:a05:600c:37ce:b0:477:9574:d641 with SMTP id 5b1f17b1804b1-47a8f903a23mr65879575e9.22.1765667375035; Sat, 13 Dec 2025 15:09:35 -0800 (PST) Received: from Lord-Beerus.station (net-5-94-28-5.cust.vodafonedsl.it. [5.94.28.5]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47a8f4f4150sm106040995e9.11.2025.12.13.15.09.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Dec 2025 15:09:34 -0800 (PST) From: Stefano Radaelli X-Google-Original-From: Stefano Radaelli To: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Stefano Radaelli , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org Subject: [PATCH v2 5/6] arm64: dts: imx8mp-var-som: Add support for WM8904 audio codec Date: Sun, 14 Dec 2025 00:09:05 +0100 Message-ID: <20251213230909.16810-6-stefano.r@variscite.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251213230909.16810-1-stefano.r@variscite.com> References: <20251213230909.16810-1-stefano.r@variscite.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The VAR-SOM-MX8MP can integrate the WM8904, a high-performance ultra-low-power stereo codec optimized for portable audio applications. This patch adds the WM8904 device to the appropriate I2C bus, enables the SAI peripheral, and introduces the sound node to expose the sound card to the system. Signed-off-by: Stefano Radaelli --- .../boot/dts/freescale/imx8mp-var-som.dtsi | 94 +++++++++++++++++++ 1 file changed, 94 insertions(+) diff --git a/arch/arm64/boot/dts/freescale/imx8mp-var-som.dtsi b/arch/arm64= /boot/dts/freescale/imx8mp-var-som.dtsi index e7f5ec10cbac..169fc6a9c8cb 100644 --- a/arch/arm64/boot/dts/freescale/imx8mp-var-som.dtsi +++ b/arch/arm64/boot/dts/freescale/imx8mp-var-som.dtsi @@ -30,6 +30,14 @@ iw61x_pwrseq: wifi-pwrseq { status =3D "okay"; }; =20 + reg_audio_supply: regulator-3p3v { + compatible =3D "regulator-fixed"; + regulator-name =3D "wm8904-supply"; + regulator-min-microvolt =3D <3300000>; + regulator-max-microvolt =3D <3300000>; + regulator-always-on; + }; + reg_phy_supply: regulator-phy-supply { compatible =3D "regulator-fixed"; regulator-name =3D "phy-supply"; @@ -47,6 +55,34 @@ reg_phy_vddio: regulator-phy-vddio { regulator-min-microvolt =3D <1800000>; regulator-max-microvolt =3D <1800000>; }; + + sound { + compatible =3D "simple-audio-card"; + simple-audio-card,bitclock-master =3D <&codec_dai>; + simple-audio-card,format =3D "i2s"; + simple-audio-card,frame-master =3D <&codec_dai>; + simple-audio-card,mclk-fs =3D <256>; + simple-audio-card,name =3D "wm8904-audio"; + simple-audio-card,routing =3D + "Headphone Jack", "HPOUTL", + "Headphone Jack", "HPOUTR", + "IN2L", "Line In Jack", + "IN2R", "Line In Jack", + "IN1L", "Microphone Jack", + "IN1R", "Microphone Jack"; + simple-audio-card,widgets =3D + "Microphone", "Microphone Jack", + "Headphone", "Headphone Jack", + "Line", "Line In Jack"; + + codec_dai: simple-audio-card,codec { + sound-dai =3D <&wm8904>; + }; + + simple-audio-card,cpu { + sound-dai =3D <&sai3>; + }; + }; }; =20 &A53_0 { @@ -209,6 +245,52 @@ ldo5: LDO5 { }; }; }; + + wm8904: audio-codec@1a { + compatible =3D "wlf,wm8904"; + reg =3D <0x1a>; + #sound-dai-cells =3D <0>; + clocks =3D <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI3_MCLK1>; + clock-names =3D "mclk"; + AVDD-supply =3D <®_audio_supply>; + CPVDD-supply =3D <®_audio_supply>; + DBVDD-supply =3D <®_audio_supply>; + DCVDD-supply =3D <®_audio_supply>; + MICVDD-supply =3D <®_audio_supply>; + wlf,drc-cfg-names =3D "default", "peaklimiter", "tradition", + "soft", "music"; + /* + * Config registers per name, respectively: + * KNEE_IP =3D 0, KNEE_OP =3D 0, HI_COMP =3D 1, LO_COMP =3D 1 + * KNEE_IP =3D -24, KNEE_OP =3D -6, HI_COMP =3D 1/4, LO_COMP =3D 1 + * KNEE_IP =3D -42, KNEE_OP =3D -3, HI_COMP =3D 0, LO_COMP =3D 1 + * KNEE_IP =3D -45, KNEE_OP =3D -9, HI_COMP =3D 1/8, LO_COMP =3D 1 + * KNEE_IP =3D -30, KNEE_OP =3D -10.5, HI_COMP =3D 1/4, LO_COMP =3D 1 + */ + wlf,drc-cfg-regs =3D /bits/ 16 <0x01af 0x3248 0x0000 0x0000>, + /bits/ 16 <0x04af 0x324b 0x0010 0x0408>, + /bits/ 16 <0x04af 0x324b 0x0028 0x0704>, + /bits/ 16 <0x04af 0x324b 0x0018 0x078c>, + /bits/ 16 <0x04af 0x324b 0x0010 0x050e>; + /* GPIO1 =3D DMIC_CLK, don't touch others */ + wlf,gpio-cfg =3D <0x0018>, <0xffff>, <0xffff>, <0xffff>; + }; +}; + +&sai3 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_sai3>; + assigned-clocks =3D <&clk IMX8MP_CLK_SAI3>; + assigned-clock-parents =3D <&clk IMX8MP_AUDIO_PLL1_OUT>; + assigned-clock-rates =3D <11536000>; + clocks =3D <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI3_IPG>, + <&clk IMX8MP_CLK_DUMMY>, + <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI3_MCLK1>, + <&clk IMX8MP_CLK_DUMMY>, + <&clk IMX8MP_CLK_DUMMY>; + clock-names =3D "bus", "mclk0", "mclk1", "mclk2", "mclk3"; + fsl,sai-mclk-direction-output; + status =3D "okay"; }; =20 /* BT */ @@ -300,6 +382,18 @@ MX8MP_IOMUXC_SPDIF_RX__GPIO5_IO04 0x1c0 >; }; =20 + pinctrl_sai3: sai3grp { + fsl,pins =3D < + MX8MP_IOMUXC_SAI3_TXFS__AUDIOMIX_SAI3_TX_SYNC 0xd6 + MX8MP_IOMUXC_SAI3_TXC__AUDIOMIX_SAI3_TX_BCLK 0xd6 + MX8MP_IOMUXC_SAI3_RXD__AUDIOMIX_SAI3_RX_DATA00 0xd6 + MX8MP_IOMUXC_SAI3_TXD__AUDIOMIX_SAI3_TX_DATA00 0xd6 + MX8MP_IOMUXC_SAI3_MCLK__AUDIOMIX_SAI3_MCLK 0xd6 + MX8MP_IOMUXC_SAI3_RXFS__AUDIOMIX_SAI3_RX_SYNC 0xd6 + MX8MP_IOMUXC_SAI3_RXC__AUDIOMIX_SAI3_RX_BCLK 0xd6 + >; + }; + pinctrl_uart3: uart3grp { fsl,pins =3D < MX8MP_IOMUXC_ECSPI1_SCLK__UART3_DCE_RX 0x140 --=20 2.47.3