* [PATCH 1/2] arm64: dts: qcom: sc8280xp-microsoft-blackrock: enable DisplayPort audio
2026-08-23 8:35 [PATCH 0/2] arm64: dts: qcom: sc8280xp-microsoft-blackrock: DP audio + 4-lane altmode Jens Glathe via B4 Relay
@ 2026-08-23 8:35 ` Jens Glathe via B4 Relay
2026-08-24 7:33 ` Konrad Dybcio
2026-08-23 8:35 ` [PATCH 2/2] arm64: dts: qcom: sc8280xp-microsoft-blackrock: enable 4-lane DP altmode Jens Glathe via B4 Relay
1 sibling, 1 reply; 5+ messages in thread
From: Jens Glathe via B4 Relay @ 2026-08-23 8:35 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: Konrad Dybcio, Jérôme de Bretagne, linux-arm-msm,
devicetree, linux-kernel, Jens Glathe
From: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
The Windows Dev Kit 2023 has no built-in speakers, microphones or
headphone jack. Likewise the device with the same mainboard, Surface
Pro 9 5G [1]. The previous WCD938x / WSA / VA sound card definition
was therefore non-functional.
Replace the unused codec nodes, SoundWire controllers, LPASS macros
and related pinctrl with DisplayPort DAI links (DP0/DP1/DP2) so that
audio is available over the DP connectors. Add the required
sound-name-prefix properties and update the card model name to the
conventional SC8280XP-MICROSOFT-BLACKROCK form.
[1]: https://support.microsoft.com/en-us/surface/models/surface-pro-9-features-and-specs
Fixes: 16a7fed11714 ("arm64: dts: qcom: sc8280xp-blackrock: dt definition for WDK2023")
Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
---
.../boot/dts/qcom/sc8280xp-microsoft-blackrock.dts | 134 +++------------------
1 file changed, 20 insertions(+), 114 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-microsoft-blackrock.dts b/arch/arm64/boot/dts/qcom/sc8280xp-microsoft-blackrock.dts
index 4f4b5f4285ec2..a94141d670f62 100644
--- a/arch/arm64/boot/dts/qcom/sc8280xp-microsoft-blackrock.dts
+++ b/arch/arm64/boot/dts/qcom/sc8280xp-microsoft-blackrock.dts
@@ -28,32 +28,6 @@ aliases {
serial1 = &uart2;
};
- wcd938x: audio-codec {
- compatible = "qcom,wcd9380-codec";
-
- pinctrl-0 = <&wcd_default>;
- pinctrl-names = "default";
-
- reset-gpios = <&tlmm 106 GPIO_ACTIVE_LOW>;
-
- vdd-buck-supply = <&vreg_s10b>;
- vdd-rxtx-supply = <&vreg_s10b>;
- vdd-io-supply = <&vreg_s10b>;
- vdd-mic-bias-supply = <&vreg_bob>;
-
- qcom,micbias1-microvolt = <1800000>;
- qcom,micbias2-microvolt = <1800000>;
- qcom,micbias3-microvolt = <1800000>;
- qcom,micbias4-microvolt = <1800000>;
- qcom,mbhc-buttons-vthreshold-microvolt = <75000 150000 237000 500000 500000 500000 500000 500000>;
- qcom,mbhc-headset-vthreshold-microvolt = <1700000>;
- qcom,mbhc-headphone-vthreshold-microvolt = <50000>;
- qcom,rx-device = <&wcd_rx>;
- qcom,tx-device = <&wcd_tx>;
-
- #sound-dai-cells = <1>;
- };
-
dp3_connector: connector {
compatible = "dp-connector";
label = "DP-3";
@@ -585,6 +559,7 @@ &mdss0 {
};
&mdss0_dp0 {
+ sound-name-prefix = "DisplayPort0";
status = "okay";
};
@@ -594,6 +569,7 @@ &mdss0_dp0_out {
};
&mdss0_dp1 {
+ sound-name-prefix = "DisplayPort1";
status = "okay";
};
@@ -603,6 +579,7 @@ &mdss0_dp1_out {
};
&mdss0_dp2 {
+ sound-name-prefix = "DisplayPort2";
compatible = "qcom,sc8280xp-dp";
data-lanes = <0 1 2 3>;
@@ -858,17 +835,17 @@ &rxmacro {
&sound {
compatible = "qcom,sc8280xp-sndcard";
- model = "microsoft/blackrock";
+ model = "SC8280XP-MICROSOFT-BLACKROCK";
- wcd-playback-dai-link {
- link-name = "WCD Playback";
+ dp0-dai-link {
+ link-name = "DP0 Playback";
- cpu {
- sound-dai = <&q6apmbedai RX_CODEC_DMA_RX_0>;
+ codec {
+ sound-dai = <&mdss0_dp0>;
};
- codec {
- sound-dai = <&wcd938x 0>, <&swr1 0>, <&rxmacro 0>;
+ cpu {
+ sound-dai = <&q6apmbedai DISPLAY_PORT_RX_0>;
};
platform {
@@ -876,15 +853,15 @@ platform {
};
};
- wcd-capture-dai-link {
- link-name = "WCD Capture";
+ dp1-dai-link {
+ link-name = "DP1 Playback";
- cpu {
- sound-dai = <&q6apmbedai TX_CODEC_DMA_TX_3>;
+ codec {
+ sound-dai = <&mdss0_dp1>;
};
- codec {
- sound-dai = <&wcd938x 1>, <&swr2 0>, <&txmacro 0>;
+ cpu {
+ sound-dai = <&q6apmbedai DISPLAY_PORT_RX_1>;
};
platform {
@@ -892,67 +869,23 @@ platform {
};
};
- wsa-dai-link {
- link-name = "WSA Playback";
-
- cpu {
- sound-dai = <&q6apmbedai WSA_CODEC_DMA_RX_0>;
- };
+ dp2-dai-link {
+ link-name = "DP2 Playback";
codec {
- sound-dai = <&swr0 0>, <&wsamacro 0>;
- };
-
- platform {
- sound-dai = <&q6apm>;
+ sound-dai = <&mdss0_dp2>;
};
- };
-
- va-dai-link {
- link-name = "VA Capture";
cpu {
- sound-dai = <&q6apmbedai VA_CODEC_DMA_TX_0>;
+ sound-dai = <&q6apmbedai DISPLAY_PORT_RX_2>;
};
platform {
sound-dai = <&q6apm>;
};
-
- codec {
- sound-dai = <&vamacro 0>;
- };
- };
-};
-
-&swr0 {
- status = "okay";
-};
-
-&swr1 {
- status = "okay";
-
- wcd_rx: wcd9380-rx@0,4 {
- compatible = "sdw20217010d00";
- reg = <0 4>;
- qcom,rx-port-mapping = <1 2 3 4 5>;
- };
-};
-
-&swr2 {
- status = "okay";
-
- wcd_tx: wcd9380-tx@0,3 {
- compatible = "sdw20217010d00";
- reg = <0 3>;
- qcom,tx-port-mapping = <1 1 2 3>;
};
};
-&txmacro {
- status = "okay";
-};
-
&uart2 {
pinctrl-0 = <&uart2_default>;
pinctrl-names = "default";
@@ -1076,31 +1009,12 @@ &usb_2_qmpphy0 {
status = "okay";
};
-&vamacro {
- pinctrl-0 = <&dmic01_default>, <&dmic23_default>;
- pinctrl-names = "default";
-
- vdd-micb-supply = <&vreg_s10b>;
-
- qcom,dmic-sample-rate = <4800000>;
-
- status = "okay";
-};
-
-&wsamacro {
- status = "okay";
-};
-
&xo_board_clk {
clock-frequency = <38400000>;
};
/* PINCTRL */
-&lpass_tlmm {
- status = "okay";
-};
-
&pmc8280_1_gpios {
misc_3p3_reg_en: misc-3p3-reg-en-state {
pins = "gpio1";
@@ -1302,14 +1216,6 @@ usb2_en_state: usb2-en-state {
output-low;
};
- wcd_default: wcd-default-state {
- reset-pins {
- pins = "gpio106";
- function = "gpio";
- bias-disable;
- };
- };
-
wlan_en: wlan-en-state {
pins = "gpio134";
function = "gpio";
--
2.53.0
^ permalink raw reply [flat|nested] 5+ messages in thread* [PATCH 2/2] arm64: dts: qcom: sc8280xp-microsoft-blackrock: enable 4-lane DP altmode
2026-08-23 8:35 [PATCH 0/2] arm64: dts: qcom: sc8280xp-microsoft-blackrock: DP audio + 4-lane altmode Jens Glathe via B4 Relay
2026-08-23 8:35 ` [PATCH 1/2] arm64: dts: qcom: sc8280xp-microsoft-blackrock: enable DisplayPort audio Jens Glathe via B4 Relay
@ 2026-08-23 8:35 ` Jens Glathe via B4 Relay
2026-08-24 7:34 ` Konrad Dybcio
1 sibling, 1 reply; 5+ messages in thread
From: Jens Glathe via B4 Relay @ 2026-08-23 8:35 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: Konrad Dybcio, Jérôme de Bretagne, linux-arm-msm,
devicetree, linux-kernel, Jens Glathe
From: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
Allow up to 4 lanes for the DisplayPort links on the USB-C ports and
the mini-DP connector. Add the standard link-frequencies and move
data-lanes to the out endpoints where required by the current bindings.
Also enable mode-switch on the QMP combo PHYs so that altmode events
can reach them (same treatment as on the X13s).
Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
---
arch/arm64/boot/dts/qcom/sc8280xp-microsoft-blackrock.dts | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-microsoft-blackrock.dts b/arch/arm64/boot/dts/qcom/sc8280xp-microsoft-blackrock.dts
index a94141d670f62..aceeda96911db 100644
--- a/arch/arm64/boot/dts/qcom/sc8280xp-microsoft-blackrock.dts
+++ b/arch/arm64/boot/dts/qcom/sc8280xp-microsoft-blackrock.dts
@@ -564,7 +564,9 @@ &mdss0_dp0 {
};
&mdss0_dp0_out {
- data-lanes = <0 1>;
+ data-lanes = <0 1 2 3>;
+
+ link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
remote-endpoint = <&usb_0_qmpphy_dp_in>;
};
@@ -574,7 +576,9 @@ &mdss0_dp1 {
};
&mdss0_dp1_out {
- data-lanes = <0 1>;
+ data-lanes = <0 1 2 3>;
+ link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+
remote-endpoint = <&usb_1_qmpphy_dp_in>;
};
@@ -582,12 +586,13 @@ &mdss0_dp2 {
sound-name-prefix = "DisplayPort2";
compatible = "qcom,sc8280xp-dp";
- data-lanes = <0 1 2 3>;
-
status = "okay";
};
&mdss0_dp2_out {
+ data-lanes = <0 1 2 3>;
+ link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+
remote-endpoint = <&dp1_connector_in>;
};
@@ -932,6 +937,7 @@ &usb_0_qmpphy {
vdda-phy-supply = <&vreg_l9d>;
vdda-pll-supply = <&vreg_l4d>;
+ mode-switch;
orientation-switch;
status = "okay";
@@ -969,6 +975,7 @@ &usb_1_qmpphy {
vdda-phy-supply = <&vreg_l4b>;
vdda-pll-supply = <&vreg_l3b>;
+ mode-switch;
orientation-switch;
status = "okay";
--
2.53.0
^ permalink raw reply [flat|nested] 5+ messages in thread