* [PATCH v1 0/2] arm64: dts: qcom: Add audio support for QCS615 Talos EVK
@ 2025-10-24 2:37 Le Qi
2025-10-24 2:37 ` [PATCH v1 1/2] arm64: dts: qcom: sm6150: Add gpr node Le Qi
2025-10-24 2:37 ` [PATCH v1 2/2] arm64: dts: qcom: talos-evk: Add sound card support with DA7212 codec Le Qi
0 siblings, 2 replies; 7+ messages in thread
From: Le Qi @ 2025-10-24 2:37 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: linux-arm-msm, devicetree, linux-kernel, kernel, Le Qi
This series adds initial audio support for the QCS615-based Talos EVK
platform. It introduces the GPR (Generic Pack Router) node in the SoC
device tree and enables a sound card node with the DA7212 codec on the
Talos EVK board.
With these changes, playback through headphones and capture from the
headset microphone have been tested and verified to work.
Le Qi (2):
arm64: dts: qcom: sm6150: Add gpr node
arm64: dts: qcom: talos-evk: Add sound card support with DA7212 codec
arch/arm64/boot/dts/qcom/sm6150.dtsi | 36 ++++++++++
arch/arm64/boot/dts/qcom/talos-evk-som.dtsi | 78 +++++++++++++++++++++
2 files changed, 114 insertions(+)
Base-commit: 1fdbb3ff1233e204e26f9f6821ae9c125a055229
Depends-on: <20251009090619.1097388-2-le.qi@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20251009090619.1097388-2-le.qi@oss.qualcomm.com
Depends-on: <20251014120223.1914790-1-tessolveupstream@gmail.com>
Link: https://lore.kernel.org/r/20251014120223.1914790-1-tessolveupstream@gmail.com
Depends-on: <53ef53b423uespn7xspqfxnnvqvhzb5b22a4oaimf6g2qy7ruo@273oegazxbaz>
Link: https://lore.kernel.org/r/53ef53b423uespn7xspqfxnnvqvhzb5b22a4oaimf6g2qy7ruo@273oegazxbaz
--
2.34.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v1 1/2] arm64: dts: qcom: sm6150: Add gpr node
2025-10-24 2:37 [PATCH v1 0/2] arm64: dts: qcom: Add audio support for QCS615 Talos EVK Le Qi
@ 2025-10-24 2:37 ` Le Qi
2025-10-24 8:13 ` Konrad Dybcio
2025-10-24 2:37 ` [PATCH v1 2/2] arm64: dts: qcom: talos-evk: Add sound card support with DA7212 codec Le Qi
1 sibling, 1 reply; 7+ messages in thread
From: Le Qi @ 2025-10-24 2:37 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: linux-arm-msm, devicetree, linux-kernel, kernel, Le Qi
Add GPR(Generic Pack router) node along with
APM(Audio Process Manager) and PRM(Proxy resource
Manager) audio services.
Signed-off-by: Le Qi <le.qi@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/sm6150.dtsi | 36 ++++++++++++++++++++++++++++
1 file changed, 36 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/sm6150.dtsi b/arch/arm64/boot/dts/qcom/sm6150.dtsi
index 3d2a1cb02b62..ec244c47983e 100644
--- a/arch/arm64/boot/dts/qcom/sm6150.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm6150.dtsi
@@ -16,6 +16,7 @@
#include <dt-bindings/power/qcom-rpmpd.h>
#include <dt-bindings/power/qcom,rpmhpd.h>
#include <dt-bindings/soc/qcom,rpmh-rsc.h>
+#include <dt-bindings/soc/qcom,gpr.h>
/ {
interrupt-parent = <&intc>;
@@ -4246,6 +4247,41 @@ compute-cb@6 {
dma-coherent;
};
};
+
+ gpr: gpr {
+ compatible = "qcom,gpr";
+ qcom,glink-channels = "adsp_apps";
+ qcom,domain = <GPR_DOMAIN_ID_ADSP>;
+ qcom,intents = <512 20>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ q6apm: service@1 {
+ compatible = "qcom,q6apm";
+ reg = <GPR_APM_MODULE_IID>;
+ #sound-dai-cells = <0>;
+
+ q6apmbedai: bedais {
+ compatible = "qcom,q6apm-lpass-dais";
+ #sound-dai-cells = <1>;
+ };
+
+ q6apmdai: dais {
+ compatible = "qcom,q6apm-dais";
+ iommus = <&apps_smmu 0x1721 0x0>;
+ };
+ };
+
+ q6prm: service@2 {
+ compatible = "qcom,q6prm";
+ reg = <GPR_PRM_MODULE_IID>;
+
+ q6prmcc: clock-controller {
+ compatible = "qcom,q6prm-lpass-clocks";
+ #clock-cells = <2>;
+ };
+ };
+ };
};
};
--
2.34.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v1 2/2] arm64: dts: qcom: talos-evk: Add sound card support with DA7212 codec
2025-10-24 2:37 [PATCH v1 0/2] arm64: dts: qcom: Add audio support for QCS615 Talos EVK Le Qi
2025-10-24 2:37 ` [PATCH v1 1/2] arm64: dts: qcom: sm6150: Add gpr node Le Qi
@ 2025-10-24 2:37 ` Le Qi
2025-10-24 7:59 ` Konrad Dybcio
1 sibling, 1 reply; 7+ messages in thread
From: Le Qi @ 2025-10-24 2:37 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: linux-arm-msm, devicetree, linux-kernel, kernel, Le Qi
Add the sound card node for QCS615 Talos EVK with DA7212 codec
connected over the Primary MI2S interface. The configuration enables
headphone playback and headset microphone capture, both of which have
been tested to work.
The sound card integrates:
- DA7212 codec on I2C5
- Primary MI2S playback and capture DAI links
- Pin control for MI2S1 signals
Signed-off-by: Le Qi <le.qi@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/talos-evk-som.dtsi | 78 +++++++++++++++++++++
1 file changed, 78 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/talos-evk-som.dtsi b/arch/arm64/boot/dts/qcom/talos-evk-som.dtsi
index b58cae02c9cb..523a61b5e0c8 100644
--- a/arch/arm64/boot/dts/qcom/talos-evk-som.dtsi
+++ b/arch/arm64/boot/dts/qcom/talos-evk-som.dtsi
@@ -6,6 +6,7 @@
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
+#include <dt-bindings/sound/qcom,q6afe.h>
#include "sm6150.dtsi"
#include "pm8150.dtsi"
/ {
@@ -50,6 +51,46 @@ regulator-usb2-vbus {
regulator-always-on;
};
+ sound {
+ compatible = "qcom,qcs615-sndcard";
+ model = "qcs615-snd-card";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&mi2s1_data0>, <&mi2s1_data1>, <&mi2s1_sck>, <&mi2s1_ws>;
+
+ pri-mi2s-playback-dai-link {
+ link-name = "Primary MI2S Playback";
+
+ codec {
+ sound-dai = <&codec_da7212>;
+ };
+
+ cpu {
+ sound-dai = <&q6apmbedai PRIMARY_MI2S_RX>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+
+ pri-mi2s-capture-dai-link {
+ link-name = "Primary MI2S Capture";
+
+ codec {
+ sound-dai = <&codec_da7212>;
+ };
+
+ cpu {
+ sound-dai = <&q6apmbedai PRIMARY_MI2S_TX>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+ };
+
vreg_v3p3_can: regulator-v3p3-can {
compatible = "regulator-fixed";
regulator-name = "vreg-v3p3-can";
@@ -231,6 +272,15 @@ vreg_l17a: ldo17 {
&i2c5 {
status = "okay";
+ codec_da7212: codec@1a {
+ compatible = "dlg,da7212";
+ reg = <0x1a>;
+ #sound-dai-cells = <0>;
+ VDDA-supply = <&vreg_v1p8_out>;
+ VDDIO-supply = <&vreg_v1p8_out>;
+ VDDMIC-supply = <&vreg_v3p3_out>;
+ };
+
eeprom@57 {
compatible = "atmel,24c02";
reg = <0x57>;
@@ -360,6 +410,34 @@ mcp2515@0 {
};
&tlmm {
+ mi2s1_data0: mi2s1-data0-state {
+ pins = "gpio110";
+ function = "mi2s_1";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ mi2s1_data1: mi2s1-data1-state {
+ pins = "gpio111";
+ function = "mi2s_1";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ mi2s1_sck: mi2s1-sck-state {
+ pins = "gpio108";
+ function = "mi2s_1";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ mi2s1_ws: mi2s1-ws-state {
+ pins = "gpio109";
+ function = "mi2s_1";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
pcie_default_state: pcie-default-state {
clkreq-pins {
pins = "gpio90";
--
2.34.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v1 2/2] arm64: dts: qcom: talos-evk: Add sound card support with DA7212 codec
2025-10-24 2:37 ` [PATCH v1 2/2] arm64: dts: qcom: talos-evk: Add sound card support with DA7212 codec Le Qi
@ 2025-10-24 7:59 ` Konrad Dybcio
2025-10-27 3:18 ` Le Qi
0 siblings, 1 reply; 7+ messages in thread
From: Konrad Dybcio @ 2025-10-24 7:59 UTC (permalink / raw)
To: Le Qi, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-msm, devicetree, linux-kernel, kernel
On 10/24/25 4:37 AM, Le Qi wrote:
> Add the sound card node for QCS615 Talos EVK with DA7212 codec
> connected over the Primary MI2S interface. The configuration enables
> headphone playback and headset microphone capture, both of which have
> been tested to work.
>
> The sound card integrates:
> - DA7212 codec on I2C5
> - Primary MI2S playback and capture DAI links
> - Pin control for MI2S1 signals
>
> Signed-off-by: Le Qi <le.qi@oss.qualcomm.com>
> ---
[...]
> + sound {
> + compatible = "qcom,qcs615-sndcard";
> + model = "qcs615-snd-card";
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&mi2s1_data0>, <&mi2s1_data1>, <&mi2s1_sck>, <&mi2s1_ws>;
property-n
property-names
in this order, please
[...]
> &tlmm {
> + mi2s1_data0: mi2s1-data0-state {
> + pins = "gpio110";
> + function = "mi2s_1";
> + drive-strength = <8>;
> + bias-disable;
> + };
> +
> + mi2s1_data1: mi2s1-data1-state {
> + pins = "gpio111";
> + function = "mi2s_1";
> + drive-strength = <8>;
> + bias-disable;
> + };
> +
> + mi2s1_sck: mi2s1-sck-state {
> + pins = "gpio108";
> + function = "mi2s_1";
> + drive-strength = <8>;
> + bias-disable;
> + };
> +
> + mi2s1_ws: mi2s1-ws-state {
> + pins = "gpio109";
> + function = "mi2s_1";
> + drive-strength = <8>;
> + bias-disable;
> + };
You can group these together (i.e. create a single entry with
pins = "gpio108", "gpio109"...) and move them to the SoC DTSI
Konrad
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v1 1/2] arm64: dts: qcom: sm6150: Add gpr node
2025-10-24 2:37 ` [PATCH v1 1/2] arm64: dts: qcom: sm6150: Add gpr node Le Qi
@ 2025-10-24 8:13 ` Konrad Dybcio
2025-10-27 3:17 ` Le Qi
0 siblings, 1 reply; 7+ messages in thread
From: Konrad Dybcio @ 2025-10-24 8:13 UTC (permalink / raw)
To: Le Qi, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-msm, devicetree, linux-kernel, kernel
On 10/24/25 4:37 AM, Le Qi wrote:
> Add GPR(Generic Pack router) node along with
> APM(Audio Process Manager) and PRM(Proxy resource
> Manager) audio services.
This is a really weird
way of breaking your message that makes
it difficult to read
(stick to something more like 72 characters, please)
>
> Signed-off-by: Le Qi <le.qi@oss.qualcomm.com>
> ---
> arch/arm64/boot/dts/qcom/sm6150.dtsi | 36 ++++++++++++++++++++++++++++
> 1 file changed, 36 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/sm6150.dtsi b/arch/arm64/boot/dts/qcom/sm6150.dtsi
> index 3d2a1cb02b62..ec244c47983e 100644
> --- a/arch/arm64/boot/dts/qcom/sm6150.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sm6150.dtsi
> @@ -16,6 +16,7 @@
> #include <dt-bindings/power/qcom-rpmpd.h>
> #include <dt-bindings/power/qcom,rpmhpd.h>
> #include <dt-bindings/soc/qcom,rpmh-rsc.h>
> +#include <dt-bindings/soc/qcom,gpr.h>
>
> / {
> interrupt-parent = <&intc>;
> @@ -4246,6 +4247,41 @@ compute-cb@6 {
> dma-coherent;
> };
> };
> +
> + gpr: gpr {
> + compatible = "qcom,gpr";
> + qcom,glink-channels = "adsp_apps";
> + qcom,domain = <GPR_DOMAIN_ID_ADSP>;
> + qcom,intents = <512 20>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + q6apm: service@1 {
> + compatible = "qcom,q6apm";
> + reg = <GPR_APM_MODULE_IID>;
> + #sound-dai-cells = <0>;
> +
> + q6apmbedai: bedais {
> + compatible = "qcom,q6apm-lpass-dais";
> + #sound-dai-cells = <1>;
> + };
> +
> + q6apmdai: dais {
> + compatible = "qcom,q6apm-dais";
> + iommus = <&apps_smmu 0x1721 0x0>;
I see that the documentation mentions a mask of 0x0 (like you did
here), but downstream does something funny here:
iommus = <&apps_smmu 0x1721 0x0>;
qcom,smmu-sid-mask = /bits/ 64 <0xf>;
with the latter value being consumed by the driver manually and when
it binds some sort of DMA_BUFs, the effective SID (ID & mask -- notice
there's no bitflipping of the mask part here unlike in the SMMU driver)
is prepended to the address:
smmu->pa |= ((sid & mask) << 32);
We can then check that the SMMU driver reads the SMR mask as a 16b field,
meaning the result is (sid & 0xffff) and not (sid & 0xf)..
If we take the hardcoded-downstream mask and compare it with the HSR,
we can notice that all the streams in the 0x172X range correspond to
LPASS_ADSP, so perhaps it's a design choice that the DSP end only cares
about the least significant digit
TLDR this seems to be all OK
Konrad
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v1 1/2] arm64: dts: qcom: sm6150: Add gpr node
2025-10-24 8:13 ` Konrad Dybcio
@ 2025-10-27 3:17 ` Le Qi
0 siblings, 0 replies; 7+ messages in thread
From: Le Qi @ 2025-10-27 3:17 UTC (permalink / raw)
To: Konrad Dybcio, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-msm, devicetree, linux-kernel, kernel
On 10/24/2025 4:13 PM, Konrad Dybcio wrote:
> On 10/24/25 4:37 AM, Le Qi wrote:
>> Add GPR(Generic Pack router) node along with
>> APM(Audio Process Manager) and PRM(Proxy resource
>> Manager) audio services.
>
> This is a really weird
> way of breaking your message that makes
> it difficult to read
>
> (stick to something more like 72 characters, please)
Thanks, will modify this in next patch.
>
>>
>> Signed-off-by: Le Qi <le.qi@oss.qualcomm.com>
>> ---
>> arch/arm64/boot/dts/qcom/sm6150.dtsi | 36 ++++++++++++++++++++++++++++
>> 1 file changed, 36 insertions(+)
>>
>> diff --git a/arch/arm64/boot/dts/qcom/sm6150.dtsi b/arch/arm64/boot/dts/qcom/sm6150.dtsi
>> index 3d2a1cb02b62..ec244c47983e 100644
>> --- a/arch/arm64/boot/dts/qcom/sm6150.dtsi
>> +++ b/arch/arm64/boot/dts/qcom/sm6150.dtsi
>> @@ -16,6 +16,7 @@
>> #include <dt-bindings/power/qcom-rpmpd.h>
>> #include <dt-bindings/power/qcom,rpmhpd.h>
>> #include <dt-bindings/soc/qcom,rpmh-rsc.h>
>> +#include <dt-bindings/soc/qcom,gpr.h>
>>
>> / {
>> interrupt-parent = <&intc>;
>> @@ -4246,6 +4247,41 @@ compute-cb@6 {
>> dma-coherent;
>> };
>> };
>> +
>> + gpr: gpr {
>> + compatible = "qcom,gpr";
>> + qcom,glink-channels = "adsp_apps";
>> + qcom,domain = <GPR_DOMAIN_ID_ADSP>;
>> + qcom,intents = <512 20>;
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> +
>> + q6apm: service@1 {
>> + compatible = "qcom,q6apm";
>> + reg = <GPR_APM_MODULE_IID>;
>> + #sound-dai-cells = <0>;
>> +
>> + q6apmbedai: bedais {
>> + compatible = "qcom,q6apm-lpass-dais";
>> + #sound-dai-cells = <1>;
>> + };
>> +
>> + q6apmdai: dais {
>> + compatible = "qcom,q6apm-dais";
>> + iommus = <&apps_smmu 0x1721 0x0>;
>
> I see that the documentation mentions a mask of 0x0 (like you did
> here), but downstream does something funny here:
>
> iommus = <&apps_smmu 0x1721 0x0>;
> qcom,smmu-sid-mask = /bits/ 64 <0xf>;
>
> with the latter value being consumed by the driver manually and when
> it binds some sort of DMA_BUFs, the effective SID (ID & mask -- notice
> there's no bitflipping of the mask part here unlike in the SMMU driver)
> is prepended to the address:
>
> smmu->pa |= ((sid & mask) << 32);
>
> We can then check that the SMMU driver reads the SMR mask as a 16b field,
> meaning the result is (sid & 0xffff) and not (sid & 0xf)..
>
> If we take the hardcoded-downstream mask and compare it with the HSR,
> we can notice that all the streams in the 0x172X range correspond to
> LPASS_ADSP, so perhaps it's a design choice that the DSP end only cares
> about the least significant digit
>
> TLDR this seems to be all OK
>
> Konrad
Thank you so much for the detailed explanation.
--
Thx and BRs,
Le Qi
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v1 2/2] arm64: dts: qcom: talos-evk: Add sound card support with DA7212 codec
2025-10-24 7:59 ` Konrad Dybcio
@ 2025-10-27 3:18 ` Le Qi
0 siblings, 0 replies; 7+ messages in thread
From: Le Qi @ 2025-10-27 3:18 UTC (permalink / raw)
To: Konrad Dybcio, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-msm, devicetree, linux-kernel, kernel
On 10/24/2025 3:59 PM, Konrad Dybcio wrote:
> On 10/24/25 4:37 AM, Le Qi wrote:
>> Add the sound card node for QCS615 Talos EVK with DA7212 codec
>> connected over the Primary MI2S interface. The configuration enables
>> headphone playback and headset microphone capture, both of which have
>> been tested to work.
>>
>> The sound card integrates:
>> - DA7212 codec on I2C5
>> - Primary MI2S playback and capture DAI links
>> - Pin control for MI2S1 signals
>>
>> Signed-off-by: Le Qi <le.qi@oss.qualcomm.com>
>> ---
>
> [...]
>
>> + sound {
>> + compatible = "qcom,qcs615-sndcard";
>> + model = "qcs615-snd-card";
>> +
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&mi2s1_data0>, <&mi2s1_data1>, <&mi2s1_sck>, <&mi2s1_ws>;
>
> property-n
> property-names
>
> in this order, please
Sure, will modify in next patch, thanks.
>
> [...]
>
>> &tlmm {
>> + mi2s1_data0: mi2s1-data0-state {
>> + pins = "gpio110";
>> + function = "mi2s_1";
>> + drive-strength = <8>;
>> + bias-disable;
>> + };
>> +
>> + mi2s1_data1: mi2s1-data1-state {
>> + pins = "gpio111";
>> + function = "mi2s_1";
>> + drive-strength = <8>;
>> + bias-disable;
>> + };
>> +
>> + mi2s1_sck: mi2s1-sck-state {
>> + pins = "gpio108";
>> + function = "mi2s_1";
>> + drive-strength = <8>;
>> + bias-disable;
>> + };
>> +
>> + mi2s1_ws: mi2s1-ws-state {
>> + pins = "gpio109";
>> + function = "mi2s_1";
>> + drive-strength = <8>;
>> + bias-disable;
>> + };
>
> You can group these together (i.e. create a single entry with
> pins = "gpio108", "gpio109"...) and move them to the SoC DTSI
>
> Konrad
--
Thx and BRs,
Le Qi
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-10-27 3:18 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-24 2:37 [PATCH v1 0/2] arm64: dts: qcom: Add audio support for QCS615 Talos EVK Le Qi
2025-10-24 2:37 ` [PATCH v1 1/2] arm64: dts: qcom: sm6150: Add gpr node Le Qi
2025-10-24 8:13 ` Konrad Dybcio
2025-10-27 3:17 ` Le Qi
2025-10-24 2:37 ` [PATCH v1 2/2] arm64: dts: qcom: talos-evk: Add sound card support with DA7212 codec Le Qi
2025-10-24 7:59 ` Konrad Dybcio
2025-10-27 3:18 ` Le Qi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).