From: Linus Walleij <linusw@kernel.org>
To: Liam Girdwood <lgirdwood@gmail.com>,
Mark Brown <broonie@kernel.org>, Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>, Lee Jones <lee@kernel.org>,
Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>
Cc: linux-sound@vger.kernel.org, devicetree@vger.kernel.org,
mfd@lists.linux.dev, Linus Walleij <linusw@kernel.org>
Subject: [PATCH v2 7/9] ARM: dts: ux500: Convert HREF audio to audio-graph-card2
Date: Fri, 18 Sep 2026 00:51:05 +0200 [thread overview]
Message-ID: <20260918-ux500-simple-sound-v2-7-88d29416e3c3@kernel.org> (raw)
In-Reply-To: <20260918-ux500-simple-sound-v2-0-88d29416e3c3@kernel.org>
Describe the HREF500 and HREF520 sound hardware with two-link audio
graph cards in their PMIC-specific HREF DTSIs, and name the card
HREF-500. Connect MSP1 to codec DAI 0 for playback and MSP3 to codec
DAI 1 for capture.
Describe the DSP_A format, codec-provided bit and frame clocks,
16-by-16-bit TDM frame and active slots on the graph endpoints. Keep the
clocks running continuously, matching the legacy machine driver's normal
one- and two-channel mode.
Keep each complete card, including its endpoint graph, connector
widgets and routes, in the existing PMIC-specific HREF DTSI. The AB8500
variant exposes six digital microphone endpoints. AB8505 has neither
the digital microphone interface nor its VDMIC regulator, so leave
these endpoints out of HREF520 and remove its stale regulator and pin
configuration nodes.
Select ULPCLK as the fixed parent of the codec audio clock in the
HREF-specific codec DTSIs. This replaces the machine driver clock
control with declarative board policy.
Fixes: 4ecae2ae9535 ("ARM: dts: ux500-href: Switch HREF520 to AB8505")
Assisted-by: LLM
Signed-off-by: Linus Walleij <linusw@kernel.org>
---
arch/arm/boot/dts/st/ste-ab8500.dtsi | 6 --
arch/arm/boot/dts/st/ste-ab8505.dtsi | 6 --
arch/arm/boot/dts/st/ste-dbx5x0.dtsi | 5 --
arch/arm/boot/dts/st/ste-href-ab8500.dtsi | 104 ++++++++++++++++++++++++++
arch/arm/boot/dts/st/ste-href-ab8505.dtsi | 118 +++++++++++++++++++++++-------
5 files changed, 196 insertions(+), 43 deletions(-)
diff --git a/arch/arm/boot/dts/st/ste-ab8500.dtsi b/arch/arm/boot/dts/st/ste-ab8500.dtsi
index 8bf083addd66..c8c8521516e4 100644
--- a/arch/arm/boot/dts/st/ste-ab8500.dtsi
+++ b/arch/arm/boot/dts/st/ste-ab8500.dtsi
@@ -365,12 +365,6 @@ ab8500_ldo_ana_reg: ab8500_ldo_ana {
};
};
- sound {
- stericsson,audio-codec = <&codec>;
- clocks = <&prcmu_clk PRCMU_SYSCLK>, <&ab8500_clock AB8500_SYSCLK_ULP>, <&ab8500_clock AB8500_SYSCLK_INT>;
- clock-names = "sysclk", "ulpclk", "intclk";
- };
-
mcde@a0350000 {
vana-supply = <&ab8500_ldo_ana_reg>;
diff --git a/arch/arm/boot/dts/st/ste-ab8505.dtsi b/arch/arm/boot/dts/st/ste-ab8505.dtsi
index e61beb8b5ac3..0bf85b12808d 100644
--- a/arch/arm/boot/dts/st/ste-ab8505.dtsi
+++ b/arch/arm/boot/dts/st/ste-ab8505.dtsi
@@ -302,12 +302,6 @@ ab8500_ldo_ana_reg: ab8500_ldo_ana {
};
};
- sound {
- stericsson,audio-codec = <&codec>;
- clocks = <&prcmu_clk PRCMU_SYSCLK>, <&ab8500_clock AB8500_SYSCLK_ULP>, <&ab8500_clock AB8500_SYSCLK_INT>;
- clock-names = "sysclk", "ulpclk", "intclk";
- };
-
mcde@a0350000 {
vana-supply = <&ab8500_ldo_ana_reg>;
diff --git a/arch/arm/boot/dts/st/ste-dbx5x0.dtsi b/arch/arm/boot/dts/st/ste-dbx5x0.dtsi
index e6585eeb4553..912d2505318e 100644
--- a/arch/arm/boot/dts/st/ste-dbx5x0.dtsi
+++ b/arch/arm/boot/dts/st/ste-dbx5x0.dtsi
@@ -1071,11 +1071,6 @@ mmc@80008000 {
status = "disabled";
};
- sound {
- compatible = "stericsson,snd-soc-mop500";
- stericsson,cpu-dai = <&msp1 &msp3>;
- };
-
msp0: msp@80123000 {
compatible = "stericsson,ux500-msp-i2s";
#sound-dai-cells = <0>;
diff --git a/arch/arm/boot/dts/st/ste-href-ab8500.dtsi b/arch/arm/boot/dts/st/ste-href-ab8500.dtsi
index 5eeb44c5e932..ff72f5f6d652 100644
--- a/arch/arm/boot/dts/st/ste-href-ab8500.dtsi
+++ b/arch/arm/boot/dts/st/ste-href-ab8500.dtsi
@@ -6,6 +6,48 @@
#include "ste-ab8500.dtsi"
/ {
+ href_sound: sound {
+ compatible = "audio-graph-card2";
+ label = "HREF-500";
+ widgets =
+ "Headphone", "Headset",
+ "Speaker", "Earpiece Speaker",
+ "Speaker", "Loudspeaker",
+ "Line", "Line Out",
+ "Speaker", "Vibra 1 Motor",
+ "Speaker", "Vibra 2 Motor",
+ "Microphone", "Mic 1 Jack",
+ "Microphone", "Mic 2 Jack",
+ "Line", "Line In",
+ "Microphone", "Digital Mic 1",
+ "Microphone", "Digital Mic 2",
+ "Microphone", "Digital Mic 3",
+ "Microphone", "Digital Mic 4",
+ "Microphone", "Digital Mic 5",
+ "Microphone", "Digital Mic 6";
+ routing =
+ "Headset", "Headset Left",
+ "Headset", "Headset Right",
+ "Earpiece Speaker", "Earpiece",
+ "Loudspeaker", "Speaker Left",
+ "Loudspeaker", "Speaker Right",
+ "Line Out", "LineOut Left",
+ "Line Out", "LineOut Right",
+ "Vibra 1 Motor", "Vibra 1",
+ "Vibra 2 Motor", "Vibra 2",
+ "Mic 1", "Mic 1 Jack",
+ "Mic 2", "Mic 2 Jack",
+ "LineIn Left", "Line In",
+ "LineIn Right", "Line In",
+ "DMic 1", "Digital Mic 1",
+ "DMic 2", "Digital Mic 2",
+ "DMic 3", "Digital Mic 3",
+ "DMic 4", "Digital Mic 4",
+ "DMic 5", "Digital Mic 5",
+ "DMic 6", "Digital Mic 6";
+ links = <&href_msp1_port &href_msp3_port>;
+ };
+
soc {
prcmu@80157000 {
ab8500 {
@@ -488,3 +530,65 @@ ab8500_chargalg {
};
};
};
+
+&codec {
+ assigned-clocks = <&ab8500_clock AB8500_SYSCLK_INT>;
+ assigned-clock-parents = <&ab8500_clock AB8500_SYSCLK_ULP>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ href_codec_playback: endpoint {
+ remote-endpoint = <&href_msp1_endpoint>;
+ bitclock-master;
+ frame-master;
+ dai-tdm-slot-num = <16>;
+ dai-tdm-slot-width = <16>;
+ dai-tdm-slot-tx-mask = <0 1 0 1>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ href_codec_capture: endpoint {
+ remote-endpoint = <&href_msp3_endpoint>;
+ bitclock-master;
+ frame-master;
+ dai-tdm-slot-num = <16>;
+ dai-tdm-slot-width = <16>;
+ dai-tdm-slot-rx-mask = <1>;
+ };
+ };
+ };
+};
+
+&msp1 {
+ href_msp1_port: port {
+ href_msp1_endpoint: endpoint {
+ continuous-clock;
+ remote-endpoint = <&href_codec_playback>;
+ dai-format = "dsp_a";
+ dai-tdm-slot-num = <16>;
+ dai-tdm-slot-width = <16>;
+ dai-tdm-slot-tx-mask = <0 1 0 1>;
+ };
+ };
+};
+
+&msp3 {
+ href_msp3_port: port {
+ href_msp3_endpoint: endpoint {
+ continuous-clock;
+ remote-endpoint = <&href_codec_capture>;
+ dai-format = "dsp_a";
+ dai-tdm-slot-num = <16>;
+ dai-tdm-slot-width = <16>;
+ dai-tdm-slot-rx-mask = <1>;
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/st/ste-href-ab8505.dtsi b/arch/arm/boot/dts/st/ste-href-ab8505.dtsi
index 268db68ccf87..eba6f674c691 100644
--- a/arch/arm/boot/dts/st/ste-href-ab8505.dtsi
+++ b/arch/arm/boot/dts/st/ste-href-ab8505.dtsi
@@ -6,6 +6,36 @@
#include "ste-ab8505.dtsi"
/ {
+ href_sound: sound {
+ compatible = "audio-graph-card2";
+ label = "HREF-500";
+ widgets =
+ "Headphone", "Headset",
+ "Speaker", "Earpiece Speaker",
+ "Speaker", "Loudspeaker",
+ "Line", "Line Out",
+ "Speaker", "Vibra 1 Motor",
+ "Speaker", "Vibra 2 Motor",
+ "Microphone", "Mic 1 Jack",
+ "Microphone", "Mic 2 Jack",
+ "Line", "Line In";
+ routing =
+ "Headset", "Headset Left",
+ "Headset", "Headset Right",
+ "Earpiece Speaker", "Earpiece",
+ "Loudspeaker", "Speaker Left",
+ "Loudspeaker", "Speaker Right",
+ "Line Out", "LineOut Left",
+ "Line Out", "LineOut Right",
+ "Vibra 1 Motor", "Vibra 1",
+ "Vibra 2 Motor", "Vibra 2",
+ "Mic 1", "Mic 1 Jack",
+ "Mic 2", "Mic 2 Jack",
+ "LineIn Left", "Line In",
+ "LineIn Right", "Line In";
+ links = <&href_msp1_port &href_msp3_port>;
+ };
+
soc {
prcmu@80157000 {
ab8505 {
@@ -48,10 +78,6 @@ ab8500_ldo_anamic2_reg: ab8500_ldo_anamic2 {
regulator-name = "V-AMIC2";
};
- ab8500_ldo_dmic_reg: ab8500_ldo_dmic {
- regulator-name = "V-DMIC";
- };
-
ab8500_ldo_ana_reg: ab8500_ldo_ana {
regulator-name = "V-CSI/DSI";
};
@@ -80,7 +106,6 @@ gpio {
<&pwm_default_mode>,
<&adi1_default_mode>,
<&usbuicc_default_mode>,
- <&dmic_default_mode>,
<&extcpena_default_mode>,
<&modsclsda_default_mode>;
@@ -365,27 +390,6 @@ default_cfg {
};
};
};
- /* This sets up the microphone pins */
- dmic {
- dmic_default_mode: dmic_default {
- default_mux {
- function = "dmic";
- groups = "dmic12_d_1",
- "dmic34_d_1",
- "dmic56_d_1";
- };
- default_cfg {
- pins = "GPIO27_J6",
- "GPIO28_K6",
- "GPIO29_G6",
- "GPIO30_H6",
- "GPIO31_F5",
- "GPIO32_G5";
- input-enable;
- bias-pull-down;
- };
- };
- };
extcpena {
extcpena_default_mode: extcpena_default {
default_mux {
@@ -488,3 +492,65 @@ ab8500_chargalg {
};
};
};
+
+&codec {
+ assigned-clocks = <&ab8500_clock AB8500_SYSCLK_INT>;
+ assigned-clock-parents = <&ab8500_clock AB8500_SYSCLK_ULP>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ href_codec_playback: endpoint {
+ remote-endpoint = <&href_msp1_endpoint>;
+ bitclock-master;
+ frame-master;
+ dai-tdm-slot-num = <16>;
+ dai-tdm-slot-width = <16>;
+ dai-tdm-slot-tx-mask = <0 1 0 1>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ href_codec_capture: endpoint {
+ remote-endpoint = <&href_msp3_endpoint>;
+ bitclock-master;
+ frame-master;
+ dai-tdm-slot-num = <16>;
+ dai-tdm-slot-width = <16>;
+ dai-tdm-slot-rx-mask = <1>;
+ };
+ };
+ };
+};
+
+&msp1 {
+ href_msp1_port: port {
+ href_msp1_endpoint: endpoint {
+ continuous-clock;
+ remote-endpoint = <&href_codec_playback>;
+ dai-format = "dsp_a";
+ dai-tdm-slot-num = <16>;
+ dai-tdm-slot-width = <16>;
+ dai-tdm-slot-tx-mask = <0 1 0 1>;
+ };
+ };
+};
+
+&msp3 {
+ href_msp3_port: port {
+ href_msp3_endpoint: endpoint {
+ continuous-clock;
+ remote-endpoint = <&href_codec_capture>;
+ dai-format = "dsp_a";
+ dai-tdm-slot-num = <16>;
+ dai-tdm-slot-width = <16>;
+ dai-tdm-slot-rx-mask = <1>;
+ };
+ };
+};
--
2.55.0
next prev parent reply other threads:[~2026-09-17 22:51 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-17 22:50 [PATCH v2 0/9] ASoC: ux500: Migrate HREF and Samsung audio to audio-graph-card2 Linus Walleij
2026-09-17 22:50 ` [PATCH v2 1/9] ASoC: dt-bindings: sound: Prepare Ux500 audio graph links Linus Walleij
2026-09-17 22:59 ` sashiko-bot
2026-09-17 22:51 ` [PATCH v2 2/9] mfd: dt-bindings: ab8500: Describe codec graph and microphone wiring Linus Walleij
2026-09-17 22:57 ` sashiko-bot
2026-09-24 14:21 ` (subset) " Lee Jones
2026-09-17 22:51 ` [PATCH v2 3/9] ASoC: dt-bindings: ux500: Remove MOP500 sound card binding Linus Walleij
2026-09-17 22:56 ` sashiko-bot
2026-09-17 22:51 ` [PATCH v2 4/9] ASoC: ab8500: Skip digital microphone support on AB8505 Linus Walleij
2026-09-17 23:07 ` sashiko-bot
2026-09-17 22:51 ` [PATCH v2 5/9] ASoC: ux500: Remove the MOP500 machine driver Linus Walleij
2026-09-17 23:03 ` sashiko-bot
2026-09-18 8:36 ` Linus Walleij
2026-09-17 22:51 ` [PATCH v2 6/9] ARM: dts: ux500: Add sound DAI provider cells Linus Walleij
2026-09-17 22:55 ` sashiko-bot
2026-09-23 17:27 ` Linus Walleij
2026-09-24 6:54 ` Lee Jones
2026-09-24 7:00 ` Linus Walleij
2026-09-24 9:44 ` Lee Jones
2026-09-24 11:04 ` Linus Walleij
2026-09-24 14:22 ` Lee Jones
2026-09-17 22:51 ` Linus Walleij [this message]
2026-09-17 23:06 ` [PATCH v2 7/9] ARM: dts: ux500: Convert HREF audio to audio-graph-card2 sashiko-bot
2026-09-18 8:37 ` Linus Walleij
2026-09-17 22:51 ` [PATCH v2 8/9] ARM: dts: ux500: Add Samsung phone audio graphs Linus Walleij
2026-09-17 23:06 ` sashiko-bot
2026-09-17 22:51 ` [PATCH v2 9/9] ARM: config: u8500: Enable audio graph card2 Linus Walleij
2026-09-17 22:57 ` sashiko-bot
2026-09-18 17:17 ` (subset) [PATCH v2 0/9] ASoC: ux500: Migrate HREF and Samsung audio to audio-graph-card2 Mark Brown
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260918-ux500-simple-sound-v2-7-88d29416e3c3@kernel.org \
--to=linusw@kernel.org \
--cc=broonie@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=krzk+dt@kernel.org \
--cc=lee@kernel.org \
--cc=lgirdwood@gmail.com \
--cc=linux-sound@vger.kernel.org \
--cc=mfd@lists.linux.dev \
--cc=perex@perex.cz \
--cc=robh@kernel.org \
--cc=tiwai@suse.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox