Linux ARM-MSM sub-architecture
 help / color / mirror / Atom feed
* [PATCH v3 0/3] qrb2210-rb1: HDMI/I2S audio playback support
@ 2025-10-22  6:06 Alexey Klimov
  2025-10-22  6:06 ` [PATCH v3 1/3] arm64: dts: qcom: qcm2290: add APR and its services Alexey Klimov
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Alexey Klimov @ 2025-10-22  6:06 UTC (permalink / raw)
  To: Bjorn Andersson, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Konrad Dybcio, Srinivas Kandagatla
  Cc: Dmitry Baryshkov, linux-arm-msm, devicetree, linux-kernel,
	linux-sound, Alexey Klimov, Konrad Dybcio, Dmitry Baryshkov

This series adds a feature to playback/output audio via HDMI
on the Qualcomm RB1 board. Since RB1 and RB2 are very similar
to each and other and most likely use the same mainboard therefore
this series is pretty much a rework of the similar patchset for RB2.

Signed-off-by: Alexey Klimov <alexey.klimov@linaro.org>
---
Changes in v3:
- corrected compatible for sound node for rb1;
- sound node model name contains "Speaker" instead of "Speakers" now
  to indicate that output is single channel (mono);
- resorted pins by gpio indexes (as asked by Konrad), back to the initial
  version;
- dropped output-high from lpass pins description;
- dropped patch ("dt-bindings: pinctrl: qcom,sm6115-lpass-lpi: add QCM2290 compatible")
  applied by Linus;
- Link to v2: https://lore.kernel.org/r/20251007-rb1_hdmi_audio-v2-0-821b6a705e4c@linaro.org

Changes in v2:
- added tags;
- patch that adds sndcard compatble is moved into separate series
and also one new patch is added there;
here: https://lore.kernel.org/linux-sound/20251007-qrb2210-qcm2290-sndcard-v1-0-8222141bca79@linaro.org/
- resorted cpu,codec,platform subnodes of HDMI DAI link
(as asked by Konrad);
- apr => APR in "arm64: dts: qcom: qcm2290: add apr and its services"
(as suggested by Dmitry);
- resorted pins in LPASS TLMM node (as asked by Konrad);

Previous version:
https://lore.kernel.org/linux-sound/20250302-rb1_hdmi_sound_first-v1-0-81a87ae1503c@linaro.org/

---
Alexey Klimov (3):
      arm64: dts: qcom: qcm2290: add APR and its services
      arm64: dts: qcom: qcm2290: add LPASS LPI pin controller
      arm64: dts: qcom: qrb2210-rb1: add HDMI/I2S audio playback support

 arch/arm64/boot/dts/qcom/qcm2290.dtsi    | 110 +++++++++++++++++++++++++++++++
 arch/arm64/boot/dts/qcom/qrb2210-rb1.dts |  55 ++++++++++++++++
 2 files changed, 165 insertions(+)
---
base-commit: fe45352cd106ae41b5ad3f0066c2e54dbb2dfd70
change-id: 20251007-rb1_hdmi_audio-1ab3cd93fc9e
prerequisite-change-id: 20251007-qrb2210-qcm2290-sndcard-da54245aae3f:v2
prerequisite-patch-id: 56bfb709f3b52ca03a04df1090f3413764985be8
prerequisite-patch-id: 986319766f2f9e41cc702af7f6ebbb764f5117da

Best regards,
-- 
Alexey Klimov <alexey.klimov@linaro.org>


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v3 1/3] arm64: dts: qcom: qcm2290: add APR and its services
  2025-10-22  6:06 [PATCH v3 0/3] qrb2210-rb1: HDMI/I2S audio playback support Alexey Klimov
@ 2025-10-22  6:06 ` Alexey Klimov
  2025-10-22  6:06 ` [PATCH v3 2/3] arm64: dts: qcom: qcm2290: add LPASS LPI pin controller Alexey Klimov
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Alexey Klimov @ 2025-10-22  6:06 UTC (permalink / raw)
  To: Bjorn Andersson, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Konrad Dybcio, Srinivas Kandagatla
  Cc: Dmitry Baryshkov, linux-arm-msm, devicetree, linux-kernel,
	linux-sound, Alexey Klimov, Konrad Dybcio, Dmitry Baryshkov

Add APR (asynchronous packet router) node and its associated services
required to enable audio on QRB2210 RB1 board.

Cc: Srinivas Kandagatla <srini@kernel.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Alexey Klimov <alexey.klimov@linaro.org>
---
 arch/arm64/boot/dts/qcom/qcm2290.dtsi | 72 +++++++++++++++++++++++++++++++++++
 1 file changed, 72 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/qcm2290.dtsi b/arch/arm64/boot/dts/qcom/qcm2290.dtsi
index 08141b41de2462ce91896fd84644413fa46ac047..7303aff33814f256a2ea09a71a640db466370eff 100644
--- a/arch/arm64/boot/dts/qcom/qcm2290.dtsi
+++ b/arch/arm64/boot/dts/qcom/qcm2290.dtsi
@@ -17,6 +17,8 @@
 #include <dt-bindings/interconnect/qcom,qcm2290.h>
 #include <dt-bindings/interconnect/qcom,rpm-icc.h>
 #include <dt-bindings/power/qcom-rpmpd.h>
+#include <dt-bindings/soc/qcom,apr.h>
+#include <dt-bindings/sound/qcom,q6asm.h>
 
 / {
 	interrupt-parent = <&intc>;
@@ -2077,6 +2079,76 @@ glink-edge {
 				label = "lpass";
 				qcom,remote-pid = <2>;
 				mboxes = <&apcs_glb 8>;
+
+				apr {
+					compatible = "qcom,apr-v2";
+					qcom,glink-channels = "apr_audio_svc";
+					qcom,domain = <APR_DOMAIN_ADSP>;
+					#address-cells = <1>;
+					#size-cells = <0>;
+
+					service@3 {
+						reg = <APR_SVC_ADSP_CORE>;
+						compatible = "qcom,q6core";
+						qcom,protection-domain = "avs/audio",
+									 "msm/adsp/audio_pd";
+					};
+
+					q6afe: service@4 {
+						compatible = "qcom,q6afe";
+						reg = <APR_SVC_AFE>;
+						qcom,protection-domain = "avs/audio",
+									 "msm/adsp/audio_pd";
+						q6afedai: dais {
+							compatible = "qcom,q6afe-dais";
+							#address-cells = <1>;
+							#size-cells = <0>;
+							#sound-dai-cells = <1>;
+						};
+
+						q6afecc: clock-controller {
+							compatible = "qcom,q6afe-clocks";
+							#clock-cells = <2>;
+						};
+					};
+
+					q6asm: service@7 {
+						compatible = "qcom,q6asm";
+						reg = <APR_SVC_ASM>;
+						qcom,protection-domain = "avs/audio",
+									 "msm/adsp/audio_pd";
+						q6asmdai: dais {
+							compatible = "qcom,q6asm-dais";
+							#address-cells = <1>;
+							#size-cells = <0>;
+							#sound-dai-cells = <1>;
+							iommus = <&apps_smmu 0x1c1 0x0>;
+
+							dai@0 {
+								reg = <MSM_FRONTEND_DAI_MULTIMEDIA1>;
+							};
+
+							dai@1 {
+								reg = <MSM_FRONTEND_DAI_MULTIMEDIA2>;
+							};
+
+							dai@2 {
+								reg = <MSM_FRONTEND_DAI_MULTIMEDIA3>;
+							};
+						};
+					};
+
+					q6adm: service@8 {
+						compatible = "qcom,q6adm";
+						reg = <APR_SVC_ADM>;
+						qcom,protection-domain = "avs/audio",
+									 "msm/adsp/audio_pd";
+						q6routing: routing {
+							compatible = "qcom,q6adm-routing";
+							#sound-dai-cells = <0>;
+						};
+					};
+				};
 			};
 		};
 

-- 
2.47.3


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v3 2/3] arm64: dts: qcom: qcm2290: add LPASS LPI pin controller
  2025-10-22  6:06 [PATCH v3 0/3] qrb2210-rb1: HDMI/I2S audio playback support Alexey Klimov
  2025-10-22  6:06 ` [PATCH v3 1/3] arm64: dts: qcom: qcm2290: add APR and its services Alexey Klimov
@ 2025-10-22  6:06 ` Alexey Klimov
  2025-10-22  6:06 ` [PATCH v3 3/3] arm64: dts: qcom: qrb2210-rb1: add HDMI/I2S audio playback support Alexey Klimov
  2025-10-27 22:36 ` [PATCH v3 0/3] qrb2210-rb1: " Bjorn Andersson
  3 siblings, 0 replies; 5+ messages in thread
From: Alexey Klimov @ 2025-10-22  6:06 UTC (permalink / raw)
  To: Bjorn Andersson, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Konrad Dybcio, Srinivas Kandagatla
  Cc: Dmitry Baryshkov, linux-arm-msm, devicetree, linux-kernel,
	linux-sound, Alexey Klimov

Add the Low Power Audio SubSystem Low Power Island (LPASS LPI) pin
controller device node required for audio subsystem on Qualcomm
QRB2210 RB1. QRB2210 is based on qcm2290 which is based on sm6115.

While at this, also add description of lpi_i2s2 pins (active state)
required for audio playback via HDMI/I2S.

Cc: Srinivas Kandagatla <srini@kernel.org>
Signed-off-by: Alexey Klimov <alexey.klimov@linaro.org>
---
 arch/arm64/boot/dts/qcom/qcm2290.dtsi | 38 +++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/qcm2290.dtsi b/arch/arm64/boot/dts/qcom/qcm2290.dtsi
index 7303aff33814f256a2ea09a71a640db466370eff..a378bd01099633db49051a87d0b0f06e07c3ed2c 100644
--- a/arch/arm64/boot/dts/qcom/qcm2290.dtsi
+++ b/arch/arm64/boot/dts/qcom/qcm2290.dtsi
@@ -19,6 +19,7 @@
 #include <dt-bindings/power/qcom-rpmpd.h>
 #include <dt-bindings/soc/qcom,apr.h>
 #include <dt-bindings/sound/qcom,q6asm.h>
+#include <dt-bindings/sound/qcom,q6dsp-lpass-ports.h>
 
 / {
 	interrupt-parent = <&intc>;
@@ -673,6 +674,43 @@ data-pins {
 			};
 		};
 
+		lpass_tlmm: pinctrl@a7c0000 {
+			compatible = "qcom,qcm2290-lpass-lpi-pinctrl",
+				     "qcom,sm6115-lpass-lpi-pinctrl";
+			reg = <0x0 0x0a7c0000 0x0 0x20000>,
+			      <0x0 0x0a950000 0x0 0x10000>;
+
+			clocks = <&q6afecc LPASS_HW_DCODEC_VOTE LPASS_CLK_ATTRIBUTE_COUPLE_NO>;
+			clock-names = "audio";
+
+			gpio-controller;
+			#gpio-cells = <2>;
+			gpio-ranges = <&lpass_tlmm 0 0 19>;
+
+			lpi_i2s2_active: lpi-i2s2-active-state {
+				sck-pins {
+					pins = "gpio10";
+					function = "i2s2_clk";
+					bias-disable;
+					drive-strength = <8>;
+				};
+
+				ws-pins {
+					pins = "gpio11";
+					function = "i2s2_ws";
+					bias-disable;
+					drive-strength = <8>;
+				};
+
+				data-pins {
+					pins = "gpio12";
+					function = "i2s2_data";
+					bias-disable;
+					drive-strength = <8>;
+				};
+			};
+		};
+
 		gcc: clock-controller@1400000 {
 			compatible = "qcom,gcc-qcm2290";
 			reg = <0x0 0x01400000 0x0 0x1f0000>;

-- 
2.47.3


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v3 3/3] arm64: dts: qcom: qrb2210-rb1: add HDMI/I2S audio playback support
  2025-10-22  6:06 [PATCH v3 0/3] qrb2210-rb1: HDMI/I2S audio playback support Alexey Klimov
  2025-10-22  6:06 ` [PATCH v3 1/3] arm64: dts: qcom: qcm2290: add APR and its services Alexey Klimov
  2025-10-22  6:06 ` [PATCH v3 2/3] arm64: dts: qcom: qcm2290: add LPASS LPI pin controller Alexey Klimov
@ 2025-10-22  6:06 ` Alexey Klimov
  2025-10-27 22:36 ` [PATCH v3 0/3] qrb2210-rb1: " Bjorn Andersson
  3 siblings, 0 replies; 5+ messages in thread
From: Alexey Klimov @ 2025-10-22  6:06 UTC (permalink / raw)
  To: Bjorn Andersson, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Konrad Dybcio, Srinivas Kandagatla
  Cc: Dmitry Baryshkov, linux-arm-msm, devicetree, linux-kernel,
	linux-sound, Alexey Klimov, Konrad Dybcio

Add sound node and aDSP-related pieces to enable HDMI+I2S audio playback
support on Qualcomm QR2210 RB1 board. That is the only sound output
supported for now.

The audio playback is verified using the following commands:
amixer -c0 cset iface=MIXER,name='SEC_MI2S_RX Audio Mixer MultiMedia1' 1
aplay -D hw:0,0 /usr/share/sounds/alsa/Front_Center.wav

Cc: Srinivas Kandagatla <srini@kernel.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Alexey Klimov <alexey.klimov@linaro.org>
---
 arch/arm64/boot/dts/qcom/qrb2210-rb1.dts | 55 ++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/qrb2210-rb1.dts b/arch/arm64/boot/dts/qcom/qrb2210-rb1.dts
index 67ba508e92ba1f0ef3bcf8b248eae125de059869..43af25d17aa8314354b1ecb8617510cdd6c857a3 100644
--- a/arch/arm64/boot/dts/qcom/qrb2210-rb1.dts
+++ b/arch/arm64/boot/dts/qcom/qrb2210-rb1.dts
@@ -188,6 +188,53 @@ vph_pwr: regulator-vph-pwr {
 		regulator-always-on;
 		regulator-boot-on;
 	};
+
+	sound {
+		compatible = "qcom,qrb2210-sndcard";
+		pinctrl-0 = <&lpi_i2s2_active>;
+		pinctrl-names = "default";
+		model = "Qualcomm-RB1-WSA8815-Speaker-DMIC0";
+
+		mm1-dai-link {
+			link-name = "MultiMedia1";
+
+			cpu {
+				sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA1>;
+			};
+		};
+
+		mm2-dai-link {
+			link-name = "MultiMedia2";
+
+			cpu {
+				sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA2>;
+			};
+		};
+
+		mm3-dai-link {
+			link-name = "MultiMedia3";
+
+			cpu {
+				sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA3>;
+			};
+		};
+
+		hdmi-i2s-dai-link {
+			link-name = "HDMI/I2S Playback";
+
+			codec {
+				sound-dai = <&lt9611_codec 0>;
+			};
+
+			cpu {
+				sound-dai = <&q6afedai SECONDARY_MI2S_RX>;
+			};
+
+			platform {
+				sound-dai = <&q6routing>;
+			};
+		};
+	};
 };
 
 &cpu_pd0 {
@@ -323,6 +370,14 @@ &pm4125_vbus {
 	status = "okay";
 };
 
+/* SECONDARY I2S uses 1 I2S SD Line for audio on LT9611UXC HDMI Bridge */
+&q6afedai {
+	dai@18 {
+		reg = <SECONDARY_MI2S_RX>;
+		qcom,sd-lines = <0>;
+	};
+};
+
 &qupv3_id_0 {
 	status = "okay";
 };

-- 
2.47.3


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v3 0/3] qrb2210-rb1: HDMI/I2S audio playback support
  2025-10-22  6:06 [PATCH v3 0/3] qrb2210-rb1: HDMI/I2S audio playback support Alexey Klimov
                   ` (2 preceding siblings ...)
  2025-10-22  6:06 ` [PATCH v3 3/3] arm64: dts: qcom: qrb2210-rb1: add HDMI/I2S audio playback support Alexey Klimov
@ 2025-10-27 22:36 ` Bjorn Andersson
  3 siblings, 0 replies; 5+ messages in thread
From: Bjorn Andersson @ 2025-10-27 22:36 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio,
	Srinivas Kandagatla, Alexey Klimov
  Cc: Dmitry Baryshkov, linux-arm-msm, devicetree, linux-kernel,
	linux-sound, Konrad Dybcio, Dmitry Baryshkov


On Wed, 22 Oct 2025 07:06:40 +0100, Alexey Klimov wrote:
> This series adds a feature to playback/output audio via HDMI
> on the Qualcomm RB1 board. Since RB1 and RB2 are very similar
> to each and other and most likely use the same mainboard therefore
> this series is pretty much a rework of the similar patchset for RB2.
> 
> 

Applied, thanks!

[1/3] arm64: dts: qcom: qcm2290: add APR and its services
      commit: f8d21b5e4caa7a8e06cf6c08d85f6e992562a667
[2/3] arm64: dts: qcom: qcm2290: add LPASS LPI pin controller
      commit: 1fc30731562bb45e53e09d40fc69bc4364310b6e
[3/3] arm64: dts: qcom: qrb2210-rb1: add HDMI/I2S audio playback support
      commit: acb854eba80dceb12329cbe162122491f13a8a2a

Best regards,
-- 
Bjorn Andersson <andersson@kernel.org>

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2025-10-27 22:34 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-22  6:06 [PATCH v3 0/3] qrb2210-rb1: HDMI/I2S audio playback support Alexey Klimov
2025-10-22  6:06 ` [PATCH v3 1/3] arm64: dts: qcom: qcm2290: add APR and its services Alexey Klimov
2025-10-22  6:06 ` [PATCH v3 2/3] arm64: dts: qcom: qcm2290: add LPASS LPI pin controller Alexey Klimov
2025-10-22  6:06 ` [PATCH v3 3/3] arm64: dts: qcom: qrb2210-rb1: add HDMI/I2S audio playback support Alexey Klimov
2025-10-27 22:36 ` [PATCH v3 0/3] qrb2210-rb1: " Bjorn Andersson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox