* [PATCH v5 0/3] arm64: dts: qcom: allow SM[456]50 HDK board to play audio via I2S
@ 2026-10-22 9:16 Neil Armstrong
2026-10-22 9:16 ` [PATCH v5 1/3] arm64: dts: qcom: sm8450-hdk: Enable I2S for HDMI Neil Armstrong
` (2 more replies)
0 siblings, 3 replies; 10+ messages in thread
From: Neil Armstrong @ 2026-10-22 9:16 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Abel Vesa
Cc: linux-arm-msm, devicetree, linux-kernel, Neil Armstrong
Following [1], this adds the necessary settings to setup
the I2S link to the HDMI bridge to allow audio playback.
All dependencies are merged v7.3-rc1
[1] https://lore.kernel.org/all/20260724182446.1484894-1-mohammad.rafi.shaik@oss.qualcomm.com/
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
---
Changes in v5:
- Rebased on linux-next
- Link to v4: https://patch.msgid.link/20260831-topic-sm8x50-next-hdk-i2s-v4-0-a224aa073f9d@linaro.org
Changes in v4:
- Rebased on v7.3-rc1
- Link to v3: https://patch.msgid.link/20260805-topic-sm8x50-next-hdk-i2s-v3-0-07a6483c430f@linaro.org
Changes in v3:
- Fixed node unit number on patch 3
- Link to v2: https://patch.msgid.link/20260731-topic-sm8x50-next-hdk-i2s-v2-0-42c1acee5a2d@linaro.org
Changes in v2:
- Dropped applied patch 1
- Fixed node unit number
- Reversed clock names order to respect bindings
- Link to v1: https://patch.msgid.link/20260728-topic-sm8x50-next-hdk-i2s-v1-0-2393a0fe4aa9@linaro.org
To: Bjorn Andersson <andersson@kernel.org>
To: Konrad Dybcio <konradybcio@kernel.org>
To: Abel Vesa <abelvesa@kernel.org>
To: Rob Herring <robh@kernel.org>
To: Krzysztof Kozlowski <krzk+dt@kernel.org>
To: Conor Dooley <conor+dt@kernel.org>
Cc: linux-arm-msm@vger.kernel.org
Cc: devicetree@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
---
Neil Armstrong (3):
arm64: dts: qcom: sm8450-hdk: Enable I2S for HDMI
arm64: dts: qcom: sm8550-hdk: Enable I2S for HDMI
arm64: dts: qcom: sm8650-hdk: Enable I2S for HDMI
arch/arm64/boot/dts/qcom/sm8450-hdk.dts | 36 +++++++++++++++-
arch/arm64/boot/dts/qcom/sm8450.dtsi | 40 ++++++++++++++++++
arch/arm64/boot/dts/qcom/sm8550-hdk.dts | 36 +++++++++++++++-
arch/arm64/boot/dts/qcom/sm8550.dtsi | 73 +++++++++++++++++++++++++++++++++
arch/arm64/boot/dts/qcom/sm8650-hdk.dts | 35 +++++++++++++++-
arch/arm64/boot/dts/qcom/sm8650.dtsi | 40 ++++++++++++++++++
6 files changed, 257 insertions(+), 3 deletions(-)
---
base-commit: 9a482184d910775cf648863148944945b74e2815
change-id: 20260728-topic-sm8x50-next-hdk-i2s-6d63c25eceac
Best regards,
--
Neil Armstrong <neil.armstrong@linaro.org>
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v5 1/3] arm64: dts: qcom: sm8450-hdk: Enable I2S for HDMI
2026-10-22 9:16 [PATCH v5 0/3] arm64: dts: qcom: allow SM[456]50 HDK board to play audio via I2S Neil Armstrong
@ 2026-10-22 9:16 ` Neil Armstrong
2026-10-22 10:23 ` Dmitry Baryshkov
2026-10-24 20:27 ` Abel Vesa
2026-10-22 9:16 ` [PATCH v5 2/3] arm64: dts: qcom: sm8550-hdk: " Neil Armstrong
2026-10-22 9:16 ` [PATCH v5 3/3] arm64: dts: qcom: sm8650-hdk: " Neil Armstrong
2 siblings, 2 replies; 10+ messages in thread
From: Neil Armstrong @ 2026-10-22 9:16 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Abel Vesa
Cc: linux-arm-msm, devicetree, linux-kernel, Neil Armstrong
Add the necessary nodes to configure the right I2S interface
to output audio via the DSI HDMI bridge.
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
---
arch/arm64/boot/dts/qcom/sm8450-hdk.dts | 36 ++++++++++++++++++++++++++++-
arch/arm64/boot/dts/qcom/sm8450.dtsi | 40 +++++++++++++++++++++++++++++++++
2 files changed, 75 insertions(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/qcom/sm8450-hdk.dts b/arch/arm64/boot/dts/qcom/sm8450-hdk.dts
index 4ade28f40cae..9b55d17869b4 100644
--- a/arch/arm64/boot/dts/qcom/sm8450-hdk.dts
+++ b/arch/arm64/boot/dts/qcom/sm8450-hdk.dts
@@ -665,7 +665,12 @@ lt9611_codec: hdmi-bridge@2b {
vcc-supply = <<9611_3v3>;
pinctrl-names = "default";
- pinctrl-0 = <<9611_irq_pin <9611_rst_pin>;
+ pinctrl-0 = <<9611_irq_pin>,
+ <<9611_rst_pin>,
+ <&i2s0_default_state>,
+ <&audio_mclk0_default_state>;
+
+ #sound-dai-cells = <1>;
ports {
#address-cells = <1>;
@@ -947,6 +952,19 @@ channel@44b {
};
};
+&q6apmbedai {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ dai@10 {
+ reg = <PRIMARY_MI2S_RX>;
+ clocks = <&q6prmcc LPASS_CLK_ID_PRI_MI2S_IBIT LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
+ <&q6prmcc LPASS_CLK_ID_MCLK_1 LPASS_CLK_ATTRIBUTE_COUPLE_NO>;
+ clock-names = "bclk",
+ "mclk";
+ };
+};
+
&remoteproc_adsp {
status = "okay";
firmware-name = "qcom/sm8450/adsp.mbn";
@@ -1079,6 +1097,22 @@ platform {
sound-dai = <&q6apm>;
};
};
+
+ prim-mi2s-dai-link {
+ link-name = "HDMI Playback";
+
+ cpu {
+ sound-dai = <&q6apmbedai PRIMARY_MI2S_RX>;
+ };
+
+ codec {
+ sound-dai = <<9611_codec 0>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
};
&swr0 {
diff --git a/arch/arm64/boot/dts/qcom/sm8450.dtsi b/arch/arm64/boot/dts/qcom/sm8450.dtsi
index 05417cb5c4e5..cf25e16b2f68 100644
--- a/arch/arm64/boot/dts/qcom/sm8450.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8450.dtsi
@@ -4296,6 +4296,46 @@ qup_uart20_default: qup-uart20-default-state {
pins = "gpio76", "gpio77", "gpio78", "gpio79";
function = "qup20";
};
+
+ audio_mclk0_default_state: audio-mclk0-default-state {
+ pins = "gpio125";
+ function = "pri_mi2s";
+ drive-strength = <8>;
+ bias-disable;
+ output-high;
+ };
+
+ i2s0_default_state: i2s0-default-state {
+ sck-pins {
+ pins = "gpio126";
+ function = "mi2s0_sck";
+ drive-strength = <8>;
+ bias-disable;
+ output-high;
+ };
+
+ data0-pins {
+ pins = "gpio127";
+ function = "mi2s0_data0";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ data1-pins {
+ pins = "gpio128";
+ function = "mi2s0_data1";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ ws-pins {
+ pins = "gpio129";
+ function = "mi2s0_ws";
+ drive-strength = <8>;
+ bias-disable;
+ output-high;
+ };
+ };
};
lpass_tlmm: pinctrl@3440000 {
--
2.34.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v5 2/3] arm64: dts: qcom: sm8550-hdk: Enable I2S for HDMI
2026-10-22 9:16 [PATCH v5 0/3] arm64: dts: qcom: allow SM[456]50 HDK board to play audio via I2S Neil Armstrong
2026-10-22 9:16 ` [PATCH v5 1/3] arm64: dts: qcom: sm8450-hdk: Enable I2S for HDMI Neil Armstrong
@ 2026-10-22 9:16 ` Neil Armstrong
2026-10-22 9:32 ` sashiko-bot
2026-10-22 9:16 ` [PATCH v5 3/3] arm64: dts: qcom: sm8650-hdk: " Neil Armstrong
2 siblings, 1 reply; 10+ messages in thread
From: Neil Armstrong @ 2026-10-22 9:16 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Abel Vesa
Cc: linux-arm-msm, devicetree, linux-kernel, Neil Armstrong
Add the necessary nodes to configure the right I2S interface
to output audio via the DSI HDMI bridge.
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
---
arch/arm64/boot/dts/qcom/sm8550-hdk.dts | 36 +++++++++++++++-
arch/arm64/boot/dts/qcom/sm8550.dtsi | 73 +++++++++++++++++++++++++++++++++
2 files changed, 108 insertions(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/qcom/sm8550-hdk.dts b/arch/arm64/boot/dts/qcom/sm8550-hdk.dts
index e75e3b878e89..6c09816983a2 100644
--- a/arch/arm64/boot/dts/qcom/sm8550-hdk.dts
+++ b/arch/arm64/boot/dts/qcom/sm8550-hdk.dts
@@ -278,6 +278,22 @@ platform {
sound-dai = <&q6apm>;
};
};
+
+ prim-mi2s-dai-link {
+ link-name = "HDMI Playback";
+
+ cpu {
+ sound-dai = <&q6apmbedai PRIMARY_MI2S_RX>;
+ };
+
+ codec {
+ sound-dai = <<9611_codec 0>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
};
thermal-zones {
@@ -974,9 +990,14 @@ lt9611_codec: hdmi-bridge@2b {
vdd-supply = <<9611_1v2>;
vcc-supply = <<9611_3v3>;
- pinctrl-0 = <<9611_irq_pin>, <<9611_rst_pin>;
+ pinctrl-0 = <<9611_irq_pin>,
+ <<9611_rst_pin>,
+ <&i2s0_default_state>,
+ <&audio_mclk0_default_state>;
pinctrl-names = "default";
+ #sound-dai-cells = <1>;
+
ports {
#address-cells = <1>;
#size-cells = <0>;
@@ -1421,6 +1442,19 @@ pmk8550_sleep_clk: sleep-clk-state {
};
};
+&q6apmbedai {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ dai@10 {
+ reg = <PRIMARY_MI2S_RX>;
+ clocks = <&q6prmcc LPASS_CLK_ID_PRI_MI2S_IBIT LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
+ <&q6prmcc LPASS_CLK_ID_MCLK_1 LPASS_CLK_ATTRIBUTE_COUPLE_NO>;
+ clock-names = "bclk",
+ "mclk";
+ };
+};
+
&qupv3_id_0 {
status = "okay";
};
diff --git a/arch/arm64/boot/dts/qcom/sm8550.dtsi b/arch/arm64/boot/dts/qcom/sm8550.dtsi
index 03f6d40edea7..2a78f8f89f1f 100644
--- a/arch/arm64/boot/dts/qcom/sm8550.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8550.dtsi
@@ -5564,6 +5564,79 @@ data-pins {
drive-strength = <10>;
};
};
+
+ audio_mclk0_default_state: audio-mclk0-default-state {
+ pins = "gpio125";
+ function = "audio_ext_mclk0";
+ drive-strength = <8>;
+ bias-disable;
+ output-high;
+ };
+
+ i2s0_default_state: i2s0-default-state {
+ sck-pins {
+ pins = "gpio126";
+ function = "i2s0_sck";
+ drive-strength = <8>;
+ bias-disable;
+ output-high;
+ };
+
+ data0-pins {
+ pins = "gpio127";
+ function = "i2s0_data0";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ data1-pins {
+ pins = "gpio128";
+ function = "i2s0_data1";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ ws-pins {
+ pins = "gpio129";
+ function = "i2s0_ws";
+ drive-strength = <8>;
+ bias-disable;
+ output-high;
+ };
+ };
+
+ audio_mclk1_default_state: audio-mclk1-default-state {
+ pins = "gpio124";
+ function = "audio_ext_mclk1";
+ drive-strength = <8>;
+ bias-disable;
+ output-high;
+ };
+
+ i2s1_default_state: i2s1-default-state {
+ sck-pins {
+ pins = "gpio121";
+ function = "i2s1_sck";
+ drive-strength = <8>;
+ bias-disable;
+ output-high;
+ };
+
+ data0-pins {
+ pins = "gpio122";
+ function = "i2s1_data0";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ ws-pins {
+ pins = "gpio123";
+ function = "i2s1_ws";
+ drive-strength = <8>;
+ bias-disable;
+ output-high;
+ };
+ };
};
sram@14680000 {
--
2.34.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v5 3/3] arm64: dts: qcom: sm8650-hdk: Enable I2S for HDMI
2026-10-22 9:16 [PATCH v5 0/3] arm64: dts: qcom: allow SM[456]50 HDK board to play audio via I2S Neil Armstrong
2026-10-22 9:16 ` [PATCH v5 1/3] arm64: dts: qcom: sm8450-hdk: Enable I2S for HDMI Neil Armstrong
2026-10-22 9:16 ` [PATCH v5 2/3] arm64: dts: qcom: sm8550-hdk: " Neil Armstrong
@ 2026-10-22 9:16 ` Neil Armstrong
2026-10-22 9:33 ` sashiko-bot
2 siblings, 1 reply; 10+ messages in thread
From: Neil Armstrong @ 2026-10-22 9:16 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Abel Vesa
Cc: linux-arm-msm, devicetree, linux-kernel, Neil Armstrong
Add the necessary nodes to configure the right I2S interface
to output audio via the DSI HDMI bridge.
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
---
arch/arm64/boot/dts/qcom/sm8650-hdk.dts | 35 ++++++++++++++++++++++++++++-
arch/arm64/boot/dts/qcom/sm8650.dtsi | 40 +++++++++++++++++++++++++++++++++
2 files changed, 74 insertions(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/qcom/sm8650-hdk.dts b/arch/arm64/boot/dts/qcom/sm8650-hdk.dts
index 6cb0dc089b17..eba989e6766b 100644
--- a/arch/arm64/boot/dts/qcom/sm8650-hdk.dts
+++ b/arch/arm64/boot/dts/qcom/sm8650-hdk.dts
@@ -218,6 +218,22 @@ platform {
sound-dai = <&q6apm>;
};
};
+
+ pri-mi2s-dai-link {
+ link-name = "HDMI Playback";
+
+ cpu {
+ sound-dai = <&q6apmbedai PRIMARY_MI2S_RX>;
+ };
+
+ codec {
+ sound-dai = <<9611_codec 0>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
};
thermal-zones {
@@ -939,6 +955,7 @@ &i2c6 {
lt9611_codec: hdmi-bridge@2b {
compatible = "lontium,lt9611uxc";
reg = <0x2b>;
+ #sound-dai-cells = <1>;
interrupts-extended = <&tlmm 85 IRQ_TYPE_EDGE_FALLING>;
@@ -947,7 +964,10 @@ lt9611_codec: hdmi-bridge@2b {
vdd-supply = <<9611_1v2>;
vcc-supply = <<9611_3v3>;
- pinctrl-0 = <<9611_irq_pin>, <<9611_rst_pin>;
+ pinctrl-0 = <<9611_irq_pin>,
+ <<9611_rst_pin>,
+ <&i2s0_default_state>,
+ <&audio_mclk0_default_state>;
pinctrl-names = "default";
ports {
@@ -1350,6 +1370,19 @@ &pon_resin {
status = "okay";
};
+&q6apmbedai {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ dai@10 {
+ reg = <PRIMARY_MI2S_RX>;
+ clocks = <&q6prmcc LPASS_CLK_ID_PRI_MI2S_IBIT LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
+ <&q6prmcc LPASS_CLK_ID_MCLK_1 LPASS_CLK_ATTRIBUTE_COUPLE_NO>;
+ clock-names = "bclk",
+ "mclk";
+ };
+};
+
&qup_i2c3_data_clk {
/* Use internal I2C pull-up */
bias-pull-up = <2200>;
diff --git a/arch/arm64/boot/dts/qcom/sm8650.dtsi b/arch/arm64/boot/dts/qcom/sm8650.dtsi
index 86fbb0fd6472..922868e2889c 100644
--- a/arch/arm64/boot/dts/qcom/sm8650.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8650.dtsi
@@ -6607,6 +6607,46 @@ wake-pins {
};
};
+ audio_mclk0_default_state: audio-mclk0-default-state {
+ pins = "gpio125";
+ function = "audio_ext_mclk0";
+ drive-strength = <8>;
+ bias-disable;
+ output-high;
+ };
+
+ i2s0_default_state: i2s0-default-state {
+ sck-pins {
+ pins = "gpio126";
+ function = "i2s0_sck";
+ drive-strength = <8>;
+ bias-disable;
+ output-high;
+ };
+
+ data0-pins {
+ pins = "gpio127";
+ function = "i2s0_data0";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ data1-pins {
+ pins = "gpio128";
+ function = "i2s0_data1";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ ws-pins {
+ pins = "gpio129";
+ function = "i2s0_ws";
+ drive-strength = <8>;
+ bias-disable;
+ output-high;
+ };
+ };
+
qup_i2c0_data_clk: qup-i2c0-data-clk-state {
/* SDA, SCL */
pins = "gpio32", "gpio33";
--
2.34.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v5 2/3] arm64: dts: qcom: sm8550-hdk: Enable I2S for HDMI
2026-10-22 9:16 ` [PATCH v5 2/3] arm64: dts: qcom: sm8550-hdk: " Neil Armstrong
@ 2026-10-22 9:32 ` sashiko-bot
2026-10-22 9:44 ` Neil Armstrong
0 siblings, 1 reply; 10+ messages in thread
From: sashiko-bot @ 2026-10-22 9:32 UTC (permalink / raw)
To: Neil Armstrong; +Cc: devicetree, robh, conor+dt
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] arm64: dts: qcom: sm8550-hdk: active HDMI DAI link breaks display-card audio
--
commit c6bfa3ecf122e125408eec9949d0c3f7b965b70b
Author: Neil Armstrong <neil.armstrong@linaro.org>
arm64: dts: qcom: sm8550-hdk: Enable I2S for HDMI
This commit adds I2S and audio MCLK pinctrl states to sm8550.dtsi and
configures the PRIMARY_MI2S_RX backend DAI and HDMI playback DAI link on
sm8550-hdk.dts to output audio via the LT9611UXC DSI-to-HDMI bridge.
> diff --git a/arch/arm64/boot/dts/qcom/sm8550-hdk.dts b/arch/arm64/boot/dts/qcom/sm8550-hdk.dts
> index e75e3b878e89e..6c09816983a23 100644
> --- a/arch/arm64/boot/dts/qcom/sm8550-hdk.dts
> +++ b/arch/arm64/boot/dts/qcom/sm8550-hdk.dts
> @@ -278,6 +278,22 @@ platform {
> sound-dai = <&q6apm>;
> };
> };
> +
> + prim-mi2s-dai-link {
> + link-name = "HDMI Playback";
> +
> + cpu {
> + sound-dai = <&q6apmbedai PRIMARY_MI2S_RX>;
> + };
> +
> + codec {
> + sound-dai = <<9611_codec 0>;
> + };
> +
> + platform {
> + sound-dai = <&q6apm>;
> + };
> + };
> };
[Severity: Medium]
Will leaving prim-mi2s-dai-link enabled when the display card overlay is
applied prevent the sound card from probing on sm8550-hdk-display-card.dtb
and sm8550-hdk-display-card-rear-camera-card.dtb?
In arch/arm64/boot/dts/qcom/sm8550-hdk-display-card.dtso, the LT9611UXC
bridge is disabled because DSI0 is routed to the display card panel instead:
<9611_codec {
status = "disabled";
};
When the sound card probes via sc8280xp_platform_probe() ->
qcom_snd_parse_of() in sound/soc/qcom/common.c, it iterates over all
available child nodes of /sound and resolves each codec phandle:
qcom_snd_parse_of()
for_each_available_child_of_node_scoped(dev->of_node, np)
snd_soc_of_get_dai_link_codecs()
snd_soc_of_get_dlc()
snd_soc_get_dlc()
In sound/soc/soc-core.c:snd_soc_get_dlc(), the lookup checks registered
components without checking whether args->np is disabled in DT:
int snd_soc_get_dlc(const struct of_phandle_args *args,
struct snd_soc_dai_link_component *dlc)
{
struct snd_soc_component *pos;
int ret = -EPROBE_DEFER;
guard(mutex)(&client_mutex);
for_each_component(pos) {
struct device_node *component_of_node =
snd_soc_component_to_node(pos);
if (component_of_node != args->np || !pos->num_dai)
continue;
Because lt9611_codec is disabled by the overlay, its component is never
registered, causing snd_soc_get_dlc() and qcom_snd_parse_of() to return
-EPROBE_DEFER indefinitely and breaking all board audio when the display
card overlay is used.
Should prim-mi2s-dai-link be given a label in sm8550-hdk.dts and disabled
in sm8550-hdk-display-card.dtso alongside lt9611_codec?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261022-topic-sm8x50-next-hdk-i2s-v5-0-aa1030a75e46@linaro.org?part=2
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v5 3/3] arm64: dts: qcom: sm8650-hdk: Enable I2S for HDMI
2026-10-22 9:16 ` [PATCH v5 3/3] arm64: dts: qcom: sm8650-hdk: " Neil Armstrong
@ 2026-10-22 9:33 ` sashiko-bot
2026-10-22 9:44 ` Neil Armstrong
0 siblings, 1 reply; 10+ messages in thread
From: sashiko-bot @ 2026-10-22 9:33 UTC (permalink / raw)
To: Neil Armstrong; +Cc: devicetree, robh, conor+dt
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] arm64: dts: qcom: HDMI DAI link breaks sound probe with display-card overlay
--
commit 1d7b2eb9f1841da26b5c6030ed7671341483661b
Author: Neil Armstrong <neil.armstrong@linaro.org>
arm64: dts: qcom: sm8650-hdk: Enable I2S for HDMI
This commit adds the primary MI2S DAI link, Q6APM backend DAI clocks, and
TLMM pin configuration needed to route HDMI audio through the LT9611UXC DSI
bridge on the SM8650 HDK.
> diff --git a/arch/arm64/boot/dts/qcom/sm8650-hdk.dts b/arch/arm64/boot/dts/qcom/sm8650-hdk.dts
> index 6cb0dc089b17a..eba989e6766bf 100644
> --- a/arch/arm64/boot/dts/qcom/sm8650-hdk.dts
> +++ b/arch/arm64/boot/dts/qcom/sm8650-hdk.dts
> @@ -218,6 +218,22 @@ platform {
> sound-dai = <&q6apm>;
> };
> };
> +
> + pri-mi2s-dai-link {
> + link-name = "HDMI Playback";
> +
> + cpu {
> + sound-dai = <&q6apmbedai PRIMARY_MI2S_RX>;
> + };
> +
> + codec {
> + sound-dai = <<9611_codec 0>;
> + };
> +
> + platform {
> + sound-dai = <&q6apm>;
> + };
> + };
> };
[Severity: High]
Does adding pri-mi2s-dai-link unconditionally here cause a sound card probe
regression when booting with the display-card overlay
(sm8650-hdk-display-card.dtb or
sm8650-hdk-display-card-rear-camera-card.dtb)?
In arch/arm64/boot/dts/qcom/sm8650-hdk-display-card.dtso, both &i2c6 and
<9611_codec are disabled because the DSI lanes are routed to the display
daughterboard instead of the HDMI bridge:
<9611_codec {
status = "disabled";
};
When that overlay is applied, lt9611_codec never probes or registers its ASoC
component, but pri-mi2s-dai-link remains enabled under /sound.
During sound card probe in sc8280xp_platform_probe() -> qcom_snd_parse_of()
(sound/soc/qcom/common.c), for_each_available_child_of_node_scoped() iterates
over every available child node of /sound and resolves the codec DAI via
snd_soc_of_get_dai_link_codecs() -> snd_soc_of_get_dlc() ->
snd_soc_get_dlc() (sound/soc/soc-core.c):
if (codec) {
ret = snd_soc_of_get_dai_link_codecs(dev, codec, link);
if (ret < 0) {
dev_err_probe(dev, ret,
"%s: codec dai not found\n", link->name);
return ret;
}
Because neither of_parse_phandle_with_args() nor snd_soc_get_dlc() checks
of_device_is_available() on the target codec node, snd_soc_get_dlc() returns
-EPROBE_DEFER indefinitely when looking up <9611_codec, causing the entire
sound card probe to defer forever and breaking all audio on the board. (The
same issue also appears to affect prim-mi2s-dai-link in
arch/arm64/boot/dts/qcom/sm8550-hdk.dts with
arch/arm64/boot/dts/qcom/sm8550-hdk-display-card.dtso.)
Should pri-mi2s-dai-link be given a label so that
arch/arm64/boot/dts/qcom/sm8650-hdk-display-card.dtso can set its status to
"disabled" alongside <9611_codec?
[ ... ]
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261022-topic-sm8x50-next-hdk-i2s-v5-0-aa1030a75e46@linaro.org?part=3
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v5 2/3] arm64: dts: qcom: sm8550-hdk: Enable I2S for HDMI
2026-10-22 9:32 ` sashiko-bot
@ 2026-10-22 9:44 ` Neil Armstrong
0 siblings, 0 replies; 10+ messages in thread
From: Neil Armstrong @ 2026-10-22 9:44 UTC (permalink / raw)
To: sashiko-reviews; +Cc: devicetree, robh, conor+dt
On 10/22/26 11:32, sashiko-bot@kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
> - [Medium] arm64: dts: qcom: sm8550-hdk: active HDMI DAI link breaks display-card audio
> --
>
> commit c6bfa3ecf122e125408eec9949d0c3f7b965b70b
> Author: Neil Armstrong <neil.armstrong@linaro.org>
>
> arm64: dts: qcom: sm8550-hdk: Enable I2S for HDMI
>
> This commit adds I2S and audio MCLK pinctrl states to sm8550.dtsi and
> configures the PRIMARY_MI2S_RX backend DAI and HDMI playback DAI link on
> sm8550-hdk.dts to output audio via the LT9611UXC DSI-to-HDMI bridge.
>
>> diff --git a/arch/arm64/boot/dts/qcom/sm8550-hdk.dts b/arch/arm64/boot/dts/qcom/sm8550-hdk.dts
>> index e75e3b878e89e..6c09816983a23 100644
>> --- a/arch/arm64/boot/dts/qcom/sm8550-hdk.dts
>> +++ b/arch/arm64/boot/dts/qcom/sm8550-hdk.dts
>> @@ -278,6 +278,22 @@ platform {
>> sound-dai = <&q6apm>;
>> };
>> };
>> +
>> + prim-mi2s-dai-link {
>> + link-name = "HDMI Playback";
>> +
>> + cpu {
>> + sound-dai = <&q6apmbedai PRIMARY_MI2S_RX>;
>> + };
>> +
>> + codec {
>> + sound-dai = <<9611_codec 0>;
>> + };
>> +
>> + platform {
>> + sound-dai = <&q6apm>;
>> + };
>> + };
>> };
>
> [Severity: Medium]
> Will leaving prim-mi2s-dai-link enabled when the display card overlay is
> applied prevent the sound card from probing on sm8550-hdk-display-card.dtb
> and sm8550-hdk-display-card-rear-camera-card.dtb?
>
> In arch/arm64/boot/dts/qcom/sm8550-hdk-display-card.dtso, the LT9611UXC
> bridge is disabled because DSI0 is routed to the display card panel instead:
>
> <9611_codec {
> status = "disabled";
> };
>
> When the sound card probes via sc8280xp_platform_probe() ->
> qcom_snd_parse_of() in sound/soc/qcom/common.c, it iterates over all
> available child nodes of /sound and resolves each codec phandle:
>
> qcom_snd_parse_of()
> for_each_available_child_of_node_scoped(dev->of_node, np)
> snd_soc_of_get_dai_link_codecs()
> snd_soc_of_get_dlc()
> snd_soc_get_dlc()
>
> In sound/soc/soc-core.c:snd_soc_get_dlc(), the lookup checks registered
> components without checking whether args->np is disabled in DT:
>
> int snd_soc_get_dlc(const struct of_phandle_args *args,
> struct snd_soc_dai_link_component *dlc)
> {
> struct snd_soc_component *pos;
> int ret = -EPROBE_DEFER;
> guard(mutex)(&client_mutex);
>
> for_each_component(pos) {
> struct device_node *component_of_node =
> snd_soc_component_to_node(pos);
>
> if (component_of_node != args->np || !pos->num_dai)
> continue;
>
> Because lt9611_codec is disabled by the overlay, its component is never
> registered, causing snd_soc_get_dlc() and qcom_snd_parse_of() to return
> -EPROBE_DEFER indefinitely and breaking all board audio when the display
> card overlay is used.
>
> Should prim-mi2s-dai-link be given a label in sm8550-hdk.dts and disabled
> in sm8550-hdk-display-card.dtso alongside lt9611_codec?
>
Good catch, will fix
Neil
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v5 3/3] arm64: dts: qcom: sm8650-hdk: Enable I2S for HDMI
2026-10-22 9:33 ` sashiko-bot
@ 2026-10-22 9:44 ` Neil Armstrong
0 siblings, 0 replies; 10+ messages in thread
From: Neil Armstrong @ 2026-10-22 9:44 UTC (permalink / raw)
To: sashiko-reviews; +Cc: devicetree, robh, conor+dt
On 10/22/26 11:33, sashiko-bot@kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
> - [High] arm64: dts: qcom: HDMI DAI link breaks sound probe with display-card overlay
> --
>
> commit 1d7b2eb9f1841da26b5c6030ed7671341483661b
> Author: Neil Armstrong <neil.armstrong@linaro.org>
>
> arm64: dts: qcom: sm8650-hdk: Enable I2S for HDMI
>
> This commit adds the primary MI2S DAI link, Q6APM backend DAI clocks, and
> TLMM pin configuration needed to route HDMI audio through the LT9611UXC DSI
> bridge on the SM8650 HDK.
>
>> diff --git a/arch/arm64/boot/dts/qcom/sm8650-hdk.dts b/arch/arm64/boot/dts/qcom/sm8650-hdk.dts
>> index 6cb0dc089b17a..eba989e6766bf 100644
>> --- a/arch/arm64/boot/dts/qcom/sm8650-hdk.dts
>> +++ b/arch/arm64/boot/dts/qcom/sm8650-hdk.dts
>> @@ -218,6 +218,22 @@ platform {
>> sound-dai = <&q6apm>;
>> };
>> };
>> +
>> + pri-mi2s-dai-link {
>> + link-name = "HDMI Playback";
>> +
>> + cpu {
>> + sound-dai = <&q6apmbedai PRIMARY_MI2S_RX>;
>> + };
>> +
>> + codec {
>> + sound-dai = <<9611_codec 0>;
>> + };
>> +
>> + platform {
>> + sound-dai = <&q6apm>;
>> + };
>> + };
>> };
>
> [Severity: High]
> Does adding pri-mi2s-dai-link unconditionally here cause a sound card probe
> regression when booting with the display-card overlay
> (sm8650-hdk-display-card.dtb or
> sm8650-hdk-display-card-rear-camera-card.dtb)?
>
> In arch/arm64/boot/dts/qcom/sm8650-hdk-display-card.dtso, both &i2c6 and
> <9611_codec are disabled because the DSI lanes are routed to the display
> daughterboard instead of the HDMI bridge:
>
> <9611_codec {
> status = "disabled";
> };
>
> When that overlay is applied, lt9611_codec never probes or registers its ASoC
> component, but pri-mi2s-dai-link remains enabled under /sound.
>
> During sound card probe in sc8280xp_platform_probe() -> qcom_snd_parse_of()
> (sound/soc/qcom/common.c), for_each_available_child_of_node_scoped() iterates
> over every available child node of /sound and resolves the codec DAI via
> snd_soc_of_get_dai_link_codecs() -> snd_soc_of_get_dlc() ->
> snd_soc_get_dlc() (sound/soc/soc-core.c):
>
> if (codec) {
> ret = snd_soc_of_get_dai_link_codecs(dev, codec, link);
> if (ret < 0) {
> dev_err_probe(dev, ret,
> "%s: codec dai not found\n", link->name);
> return ret;
> }
>
> Because neither of_parse_phandle_with_args() nor snd_soc_get_dlc() checks
> of_device_is_available() on the target codec node, snd_soc_get_dlc() returns
> -EPROBE_DEFER indefinitely when looking up <9611_codec, causing the entire
> sound card probe to defer forever and breaking all audio on the board. (The
> same issue also appears to affect prim-mi2s-dai-link in
> arch/arm64/boot/dts/qcom/sm8550-hdk.dts with
> arch/arm64/boot/dts/qcom/sm8550-hdk-display-card.dtso.)
>
> Should pri-mi2s-dai-link be given a label so that
> arch/arm64/boot/dts/qcom/sm8650-hdk-display-card.dtso can set its status to
> "disabled" alongside <9611_codec?
>
> [ ... ]
>
Good catch, will fix
Neil
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v5 1/3] arm64: dts: qcom: sm8450-hdk: Enable I2S for HDMI
2026-10-22 9:16 ` [PATCH v5 1/3] arm64: dts: qcom: sm8450-hdk: Enable I2S for HDMI Neil Armstrong
@ 2026-10-22 10:23 ` Dmitry Baryshkov
2026-10-24 20:27 ` Abel Vesa
1 sibling, 0 replies; 10+ messages in thread
From: Dmitry Baryshkov @ 2026-10-22 10:23 UTC (permalink / raw)
To: Neil Armstrong
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Abel Vesa, linux-arm-msm, devicetree, linux-kernel
On Thu, Oct 22, 2026 at 11:16:57AM +0200, Neil Armstrong wrote:
> Add the necessary nodes to configure the right I2S interface
> to output audio via the DSI HDMI bridge.
>
> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
> ---
> arch/arm64/boot/dts/qcom/sm8450-hdk.dts | 36 ++++++++++++++++++++++++++++-
> arch/arm64/boot/dts/qcom/sm8450.dtsi | 40 +++++++++++++++++++++++++++++++++
> 2 files changed, 75 insertions(+), 1 deletion(-)
>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v5 1/3] arm64: dts: qcom: sm8450-hdk: Enable I2S for HDMI
2026-10-22 9:16 ` [PATCH v5 1/3] arm64: dts: qcom: sm8450-hdk: Enable I2S for HDMI Neil Armstrong
2026-10-22 10:23 ` Dmitry Baryshkov
@ 2026-10-24 20:27 ` Abel Vesa
1 sibling, 0 replies; 10+ messages in thread
From: Abel Vesa @ 2026-10-24 20:27 UTC (permalink / raw)
To: Neil Armstrong
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Abel Vesa, linux-arm-msm, devicetree, linux-kernel
On 26-10-22 11:16:57, Neil Armstrong wrote:
> Add the necessary nodes to configure the right I2S interface
> to output audio via the DSI HDMI bridge.
>
> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2026-10-24 20:27 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-22 9:16 [PATCH v5 0/3] arm64: dts: qcom: allow SM[456]50 HDK board to play audio via I2S Neil Armstrong
2026-10-22 9:16 ` [PATCH v5 1/3] arm64: dts: qcom: sm8450-hdk: Enable I2S for HDMI Neil Armstrong
2026-10-22 10:23 ` Dmitry Baryshkov
2026-10-24 20:27 ` Abel Vesa
2026-10-22 9:16 ` [PATCH v5 2/3] arm64: dts: qcom: sm8550-hdk: " Neil Armstrong
2026-10-22 9:32 ` sashiko-bot
2026-10-22 9:44 ` Neil Armstrong
2026-10-22 9:16 ` [PATCH v5 3/3] arm64: dts: qcom: sm8650-hdk: " Neil Armstrong
2026-10-22 9:33 ` sashiko-bot
2026-10-22 9:44 ` Neil Armstrong
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox