From nobody Wed Dec 17 06:13:22 2025 Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52]) (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 7244B3161B0 for ; Sun, 14 Dec 2025 21:53:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765749192; cv=none; b=jRylLWfDs1ff9928nGPI/78c0vfBhDrelZZlCfPJCQnPQjqfkq3s1UUvhw9rui9S8EqYlhxeUGf7s79xlq6ZuaDf6gnVO1vW4LfIPnfkAGT4pAAem2Sbua2L/xCKOjqEZwU1HeTJ3AO56XOhjleP68rnUBczCg93MjC2/mcaDJw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765749192; c=relaxed/simple; bh=9KUtdwNzjKPOlpkRFydDU5oxTYkDvAsUbiyPboaBOYo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=q7nou/2PksuI6xaffFMk7eO9D0SbhH12BCNWXnZhE5JlNSZnd62QoPlrq7wg199zS2lePBIW6sQ6kCe0KA0IMMV+Ra9XzfJd03pftwb6HaO1+x0xE6LogcIGCE+MPB7GeQPIFr3Yh2gMVqCCGUpmbzboeCZkB6mAi9z5w3GF+PM= 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=EqmYigmA; arc=none smtp.client-ip=209.85.221.52 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="EqmYigmA" Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-42fbab737f5so1123364f8f.1 for ; Sun, 14 Dec 2025 13:53:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765749189; x=1766353989; 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=/Tdn9gV/6JqfNO9pbAvhWxvcOUTKXJcAnzs6w4PTTfM=; b=EqmYigmATl6bjCAKb8GVYmNgIN6FMVr416AqZVxKFgIr7qithCBqx8QoO9QfLwc/Xm yP7+tbOBXFI7kFK1Ly3Ck16z48yRO7iFLHkGPZBVoQIc1XWPjXP5spxoBqBPdhHHutdw UPPT+6DlbXWnlV5vS5OvzBYoJ0DBcSLCYrCTut3TUctqWIpLuYkOZA0OlMS+ct9e3b0/ uFXFx9LHpKlOrVIaruN+Y7kLcugw1vi5+yV9eV70+suqga/PMj97DCVifnRGwCUCwE44 Ml/pAUHQZ8FldRblflRQYDai1wa77me/eCvG4F6hhAOP0ucJeGG4Bw3VizYRDReNJcDS jOUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765749189; x=1766353989; 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=/Tdn9gV/6JqfNO9pbAvhWxvcOUTKXJcAnzs6w4PTTfM=; b=BEVXX9MLLkbaY2o0wYMmzYgSpmIwiNuKOq/3JvMfmWGH90RcsmV0AwHxXqvPAhgE8N S5ix37X95U0xBhvzSfSgqCEmanEwEvPu9e1YBocs2MX15wEFZ9qa9nUyMJ1VGJp3j5i8 ejWbURLou3RtO/NDYxCUhlmusWrCoBRkb94xseB8k72dHrb4mRAbjkTaS7Gcr7NA4ozC mxloz25wm+KSZWbpMj9ZHlCeuyg2alglOzzuk2svllvM4lcRpZq9ps5Pnp51kyBJXOtf CbKZ41wenIRF4w+90Un3Cb1gfs7QL4daedt+Bg2rbOLURUY+7uqKmpmp/Ut42FzTpPPj dvKg== X-Forwarded-Encrypted: i=1; AJvYcCXUaUvz5kPwQsM6FAQur3KNcO4v7VWA3bkbWCFD1Dbom/q83LQQIT5KtLvgFnwSaoIWucHhbufJLtRXrm8=@vger.kernel.org X-Gm-Message-State: AOJu0YyPZdUNp7ieu5DWU62k7KH7ltH+fVEz1axZUnFLhOpLTCVLNEpR CXUlNfga89UiQdQRbBhWw/Oeyl21Q+R2AQUd1AksRKp5fCVA4yWlIK0m X-Gm-Gg: AY/fxX4snCXEOKKBQ7WJNgDJZv82KogNn5K0K+stItXGV45PJLThBgKmqo+/cFBwCvM 24W5CIUqGbAWnl4XUxEUcuw1mUW8dgFcbJDLDAl4Z5pUMUKoNiScnMNeeyMUzrRvYMKJDJUHDyz PjV7Urn7OKJbcCgV+jnVyF10PO7D47DKhPEhgyQ5seWhBVHLnX6nvxdSVAcs1ZJYhMViEUuULxe syhqkOy1oFo5w1mOk/OtsxyErm1I7rxK4m+UqqVML6106SFewvoUKazWRDaVBmD4EuEntSQ/nAE Qhr0XnDanWFKqifbSQooXsUa5rdGXlNNu/vLVEP4X2+XIu/5NnfVIqSKuLHlWTm2nZ/rQkskNqR DsN8KeDHG6HBl1M1FSkE2vcKSZGpBN4friVunTFuUT1nzfQfzBDjKD6U8d2DWiFiJLWUFkrfi09 22GkmPlZU1NR9ef6b6719PZknMrmOrDC+LhFHvwNG/bYHhYxCILlUvbvcN3hIfyeQ1yOLQrgOqW Piizp/Ejt9br2M= X-Google-Smtp-Source: AGHT+IG+rgfgN+Ap9RYxSwhweoK+D05CCHg0wt/q7sG4diqCgX52kzMUBhkWGakUvtMafmHzyyuIVA== X-Received: by 2002:a05:6000:24c4:b0:411:3c14:3ad9 with SMTP id ffacd0b85a97d-42fb3ecd768mr9691867f8f.21.1765749188732; Sun, 14 Dec 2025 13:53:08 -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 ffacd0b85a97d-430f6a42c8csm7625568f8f.16.2025.12.14.13.53.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Dec 2025 13:53:07 -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 v4 5/6] arm64: dts: imx8mp-var-som: Add support for WM8904 audio codec Date: Sun, 14 Dec 2025 22:52:52 +0100 Message-ID: <20251214215256.5812-6-stefano.r@variscite.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251214215256.5812-1-stefano.r@variscite.com> References: <20251214215256.5812-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 2c49d53e30c3..6da5df11c44a 100644 --- a/arch/arm64/boot/dts/freescale/imx8mp-var-som.dtsi +++ b/arch/arm64/boot/dts/freescale/imx8mp-var-som.dtsi @@ -29,6 +29,14 @@ iw61x_pwrseq: wifi-pwrseq { <&gpio2 19 GPIO_ACTIVE_LOW>; /* WIFI_PWR_EN */ }; =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"; @@ -46,6 +54,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 { @@ -208,6 +244,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 */ @@ -299,6 +381,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