* [PATCH v3 1/9] dt-bindings: soc: qcom,smp2p: add sleepstate support
2026-11-07 2:24 [PATCH v3 0/9] ADSP for SDM670 and sound on Google Pixel 3a Richard Acayan
@ 2026-11-07 2:24 ` Richard Acayan
2026-11-07 2:24 ` [PATCH v3 2/9] dt-bindings: soc: qcom: aoss: Add compatible for SDM670 Richard Acayan
` (10 subsequent siblings)
11 siblings, 0 replies; 15+ messages in thread
From: Richard Acayan @ 2026-11-07 2:24 UTC (permalink / raw)
To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio, Abel Vesa,
Manivannan Sadhasivam, Andy Gross, linux-arm-msm,
linux-remoteproc, devicetree
Cc: Richard Acayan
The sleepstate entry is used by Qualcomm sensor DSPs to control
suspend/resume operations. Even though there is no full support for
sleep states, initialization of the entry is still necessary for some
DSPs, notably the sensors-bearing ADSP on the Pixel 3a (SDM670 SoC).
Allow sleepstates to be declared in the device tree so they can be
initialized.
Link: https://android.googlesource.com/kernel/msm/+/91edfe5385f2640a338e2ad230d0fc03c73b77f8/drivers/soc/qcom/smp2p_sleepstate.c
Signed-off-by: Richard Acayan <mailingradian@gmail.com>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
---
Documentation/devicetree/bindings/soc/qcom/qcom,smp2p.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/soc/qcom/qcom,smp2p.yaml b/Documentation/devicetree/bindings/soc/qcom/qcom,smp2p.yaml
index f91276822858..7862d68c9678 100644
--- a/Documentation/devicetree/bindings/soc/qcom/qcom,smp2p.yaml
+++ b/Documentation/devicetree/bindings/soc/qcom/qcom,smp2p.yaml
@@ -60,7 +60,7 @@ properties:
Two identifiers of the inbound and outbound smem items used for this edge.
patternProperties:
- "^master-kernel|slave-kernel|ipa-ap-to-modem|ipa-modem-to-ap|wlan-ap-to-wpss|wlan-wpss-to-ap$":
+ "^master-kernel|slave-kernel|ipa-ap-to-modem|ipa-modem-to-ap|sleepstate|wlan-ap-to-wpss|wlan-wpss-to-ap$":
type: object
description:
Each SMP2P pair contain a set of inbound and outbound entries, these are
--
2.56.0
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH v3 2/9] dt-bindings: soc: qcom: aoss: Add compatible for SDM670
2026-11-07 2:24 [PATCH v3 0/9] ADSP for SDM670 and sound on Google Pixel 3a Richard Acayan
2026-11-07 2:24 ` [PATCH v3 1/9] dt-bindings: soc: qcom,smp2p: add sleepstate support Richard Acayan
@ 2026-11-07 2:24 ` Richard Acayan
2026-11-07 2:24 ` [PATCH v3 3/9] dt-bindings: remoteproc: qcom: adsp: Add SDM670 ADSP compatible Richard Acayan
` (9 subsequent siblings)
11 siblings, 0 replies; 15+ messages in thread
From: Richard Acayan @ 2026-11-07 2:24 UTC (permalink / raw)
To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio, Abel Vesa,
Manivannan Sadhasivam, Andy Gross, linux-arm-msm,
linux-remoteproc, devicetree
Cc: Richard Acayan
Document the compatible for SDM670.
Signed-off-by: Richard Acayan <mailingradian@gmail.com>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
---
Documentation/devicetree/bindings/soc/qcom/qcom,aoss-qmp.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/soc/qcom/qcom,aoss-qmp.yaml b/Documentation/devicetree/bindings/soc/qcom/qcom,aoss-qmp.yaml
index e94c4fd34177..6a817a1cd395 100644
--- a/Documentation/devicetree/bindings/soc/qcom/qcom,aoss-qmp.yaml
+++ b/Documentation/devicetree/bindings/soc/qcom/qcom,aoss-qmp.yaml
@@ -43,6 +43,7 @@ properties:
- qcom,sc8180x-aoss-qmp
- qcom,sc8280xp-aoss-qmp
- qcom,sdx75-aoss-qmp
+ - qcom,sdm670-aoss-qmp
- qcom,sdm845-aoss-qmp
- qcom,sm6350-aoss-qmp
- qcom,sm7150-aoss-qmp
--
2.56.0
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH v3 3/9] dt-bindings: remoteproc: qcom: adsp: Add SDM670 ADSP compatible
2026-11-07 2:24 [PATCH v3 0/9] ADSP for SDM670 and sound on Google Pixel 3a Richard Acayan
2026-11-07 2:24 ` [PATCH v3 1/9] dt-bindings: soc: qcom,smp2p: add sleepstate support Richard Acayan
2026-11-07 2:24 ` [PATCH v3 2/9] dt-bindings: soc: qcom: aoss: Add compatible for SDM670 Richard Acayan
@ 2026-11-07 2:24 ` Richard Acayan
2026-11-07 2:24 ` [PATCH v3 4/9] remoteproc: qcom: pas: Add SDM670 ADSP support Richard Acayan
` (8 subsequent siblings)
11 siblings, 0 replies; 15+ messages in thread
From: Richard Acayan @ 2026-11-07 2:24 UTC (permalink / raw)
To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio, Abel Vesa,
Manivannan Sadhasivam, Andy Gross, linux-arm-msm,
linux-remoteproc, devicetree
Cc: Richard Acayan
Add the compatible for the Audio DSP on SDM670.
Signed-off-by: Richard Acayan <mailingradian@gmail.com>
---
.../devicetree/bindings/remoteproc/qcom,adsp.yaml | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,adsp.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,adsp.yaml
index 7e8ecae8e6cb..6cac1f77993b 100644
--- a/Documentation/devicetree/bindings/remoteproc/qcom,adsp.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,adsp.yaml
@@ -25,6 +25,7 @@ properties:
- qcom,msm8998-slpi-pas
- qcom,sdm660-adsp-pas
- qcom,sdm660-cdsp-pas
+ - qcom,sdm670-adsp-pas
- qcom,sdm845-adsp-pas
- qcom,sdm845-cdsp-pas
- qcom,sdm845-slpi-pas
@@ -128,6 +129,20 @@ allOf:
required:
- px-supply
+ - if:
+ properties:
+ compatible:
+ enum:
+ - qcom,sdm670-adsp-pas
+ then:
+ properties:
+ power-domains:
+ items:
+ - description: LCX power domain
+ power-domain-names:
+ items:
+ - const: lcx
+
- if:
properties:
compatible:
--
2.56.0
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH v3 4/9] remoteproc: qcom: pas: Add SDM670 ADSP support
2026-11-07 2:24 [PATCH v3 0/9] ADSP for SDM670 and sound on Google Pixel 3a Richard Acayan
` (2 preceding siblings ...)
2026-11-07 2:24 ` [PATCH v3 3/9] dt-bindings: remoteproc: qcom: adsp: Add SDM670 ADSP compatible Richard Acayan
@ 2026-11-07 2:24 ` Richard Acayan
2026-11-07 2:24 ` [PATCH v3 5/9] arm64: dts: qcom: sdm670: add adsp Richard Acayan
` (7 subsequent siblings)
11 siblings, 0 replies; 15+ messages in thread
From: Richard Acayan @ 2026-11-07 2:24 UTC (permalink / raw)
To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio, Abel Vesa,
Manivannan Sadhasivam, Andy Gross, linux-arm-msm,
linux-remoteproc, devicetree
Cc: Richard Acayan
The ADSP is used to control audio and sensors on the SDM670 SoC. Add the
compatible for it, with the same data as SDM845 except for the LCX power
domain.
Signed-off-by: Richard Acayan <mailingradian@gmail.com>
---
drivers/remoteproc/qcom_q6v5_pas.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q6v5_pas.c
index f37b77ae187e..57a111a0d75e 100644
--- a/drivers/remoteproc/qcom_q6v5_pas.c
+++ b/drivers/remoteproc/qcom_q6v5_pas.c
@@ -1122,6 +1122,21 @@ static const struct qcom_pas_data sa8775p_adsp_resource = {
.ssctl_id = 0x14,
};
+static const struct qcom_pas_data sdm670_adsp_resource_init = {
+ .crash_reason_smem = 423,
+ .firmware_name = "adsp.mdt",
+ .pas_id = 1,
+ .auto_boot = true,
+ .proxy_pd_names = (char*[]){
+ "lcx",
+ NULL
+ },
+ .load_state = "adsp",
+ .ssr_name = "lpass",
+ .sysmon_name = "adsp",
+ .ssctl_id = 0x14,
+};
+
static const struct qcom_pas_data sdm845_adsp_resource_init = {
.crash_reason_smem = 423,
.firmware_name = "adsp.mdt",
@@ -2035,6 +2050,7 @@ static const struct of_device_id qcom_pas_of_match[] = {
{ .compatible = "qcom,sc8280xp-nsp1-pas", .data = &sc8280xp_nsp1_resource },
{ .compatible = "qcom,sdm660-adsp-pas", .data = &adsp_resource_init },
{ .compatible = "qcom,sdm660-cdsp-pas", .data = &cdsp_resource_init },
+ { .compatible = "qcom,sdm670-adsp-pas", .data = &sdm670_adsp_resource_init },
{ .compatible = "qcom,sdm845-adsp-pas", .data = &sdm845_adsp_resource_init },
{ .compatible = "qcom,sdm845-cdsp-pas", .data = &sdm845_cdsp_resource_init },
{ .compatible = "qcom,sdm845-slpi-pas", .data = &sdm845_slpi_resource_init },
--
2.56.0
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH v3 5/9] arm64: dts: qcom: sdm670: add adsp
2026-11-07 2:24 [PATCH v3 0/9] ADSP for SDM670 and sound on Google Pixel 3a Richard Acayan
` (3 preceding siblings ...)
2026-11-07 2:24 ` [PATCH v3 4/9] remoteproc: qcom: pas: Add SDM670 ADSP support Richard Acayan
@ 2026-11-07 2:24 ` Richard Acayan
2026-11-07 2:24 ` [PATCH v3 6/9] arm64: dts: qcom: sdm670-google: enable adsp Richard Acayan
` (6 subsequent siblings)
11 siblings, 0 replies; 15+ messages in thread
From: Richard Acayan @ 2026-11-07 2:24 UTC (permalink / raw)
To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio, Abel Vesa,
Manivannan Sadhasivam, Andy Gross, linux-arm-msm,
linux-remoteproc, devicetree
Cc: Richard Acayan
The Audio DSP (Digital Signal Processor) is responsible for audio and
sensors on SDM670. Add this, along with the SMP2P nodes used to
communicate with it.
The sleep state is included to prevent the following crash:
qcom_q6v5_pas remoteproc-adsp: fatal error received: err_qdi.c:450:EF:sensor_process:1:sar.cc:27:chre_utils fatal
Otherwise, it is unused.
Signed-off-by: Richard Acayan <mailingradian@gmail.com>
---
arch/arm64/boot/dts/qcom/sdm670.dtsi | 177 +++++++++++++++++++++++++++
1 file changed, 177 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/sdm670.dtsi b/arch/arm64/boot/dts/qcom/sdm670.dtsi
index 711e15b56cb8..e99183c22208 100644
--- a/arch/arm64/boot/dts/qcom/sdm670.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm670.dtsi
@@ -19,6 +19,7 @@
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/phy/phy-qcom-qusb2.h>
#include <dt-bindings/power/qcom-rpmpd.h>
+#include <dt-bindings/soc/qcom,apr.h>
#include <dt-bindings/soc/qcom,rpmh-rsc.h>
/ {
@@ -500,6 +501,34 @@ cluster_pd: power-domain-cluster {
};
};
+ smp2p-lpass {
+ compatible = "qcom,smp2p";
+ qcom,smem = <443>, <429>;
+
+ interrupts = <GIC_SPI 172 IRQ_TYPE_EDGE_RISING>;
+
+ mboxes = <&apss_shared 26>;
+
+ qcom,local-pid = <0>;
+ qcom,remote-pid = <2>;
+
+ adsp_smp2p_out: master-kernel {
+ qcom,entry-name = "master-kernel";
+ #qcom,smem-state-cells = <1>;
+ };
+
+ adsp_smp2p_in: slave-kernel {
+ qcom,entry-name = "slave-kernel";
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ adsp_smp2p_sleepstate: sleepstate {
+ qcom,entry-name = "sleepstate";
+ #qcom,smem-state-cells = <1>;
+ };
+ };
+
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
@@ -2383,6 +2412,19 @@ dispcc: clock-controller@af00000 {
#power-domain-cells = <1>;
};
+ aoss_qmp: power-management@c300000 {
+ compatible = "qcom,sdm670-aoss-qmp", "qcom,aoss-qmp";
+ reg = <0 0x0c300000 0 0x100000>;
+ interrupts = <GIC_SPI 389 IRQ_TYPE_EDGE_RISING>;
+ mboxes = <&apss_shared 0>;
+
+ #clock-cells = <0>;
+
+ cx_cdev: cx {
+ #cooling-cells = <2>;
+ };
+ };
+
apps_smmu: iommu@15000000 {
compatible = "qcom,sdm670-smmu-500", "qcom,smmu-500", "arm,mmu-500";
reg = <0 0x15000000 0 0x80000>;
@@ -2463,6 +2505,12 @@ gladiator_noc: interconnect@17900000 {
qcom,bcm-voters = <&apps_bcm_voter>;
};
+ apss_shared: mailbox@17990000 {
+ compatible = "qcom,sdm670-apss-shared", "qcom,sdm845-apss-shared";
+ reg = <0 0x17990000 0 0x1000>;
+ #mbox-cells = <1>;
+ };
+
apps_rsc: rsc@179c0000 {
compatible = "qcom,rpmh-rsc";
reg = <0 0x179c0000 0 0x10000>,
@@ -2573,6 +2621,135 @@ cpufreq_hw: cpufreq@17d43000 {
#freq-domain-cells = <1>;
};
+ adsp_pas: remoteproc@62400000 {
+ compatible = "qcom,sdm670-adsp-pas";
+ reg = <0 0x62400000 0 0x4040>;
+
+ interrupts-extended = <&intc GIC_SPI 162 IRQ_TYPE_EDGE_RISING>,
+ <&adsp_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
+ <&adsp_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
+ <&adsp_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
+ <&adsp_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "wdog", "fatal", "ready",
+ "handover", "stop-ack";
+
+ clocks = <&rpmhcc RPMH_CXO_CLK>;
+ clock-names = "xo";
+
+ memory-region = <&adsp_mem>;
+
+ power-domains = <&rpmhpd SDM670_LCX>;
+ power-domain-names = "lcx";
+
+ qcom,qmp = <&aoss_qmp>;
+
+ qcom,smem-states = <&adsp_smp2p_out 0>;
+ qcom,smem-state-names = "stop";
+
+ status = "disabled";
+
+ glink-edge {
+ interrupts = <GIC_SPI 170 IRQ_TYPE_EDGE_RISING>;
+ label = "lpass";
+ qcom,remote-pid = <2>;
+ mboxes = <&apss_shared 24>;
+
+ apr {
+ compatible = "qcom,apr-v2";
+ qcom,glink-channels = "apr_audio_svc";
+ qcom,domain = <APR_DOMAIN_ADSP>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ qcom,intents = <512 20>;
+
+ q6core: 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";
+
+ q6afecc: clock-controller {
+ compatible = "qcom,q6afe-clocks";
+ #clock-cells = <2>;
+ };
+
+ q6afedai: dais {
+ compatible = "qcom,q6afe-dais";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ #sound-dai-cells = <1>;
+ };
+ };
+
+ 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 0x1801 0x0>;
+ };
+ };
+
+ 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>;
+ };
+ };
+ };
+
+ fastrpc {
+ compatible = "qcom,fastrpc";
+ qcom,glink-channels = "fastrpcglink-apps-dsp";
+ label = "adsp";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ compute-cb@3 {
+ compatible = "qcom,fastrpc-compute-cb";
+ reg = <3>;
+ iommus = <&apps_smmu 0x1803 0x0>;
+ };
+
+ compute-cb@4 {
+ compatible = "qcom,fastrpc-compute-cb";
+ reg = <4>;
+ iommus = <&apps_smmu 0x1804 0x0>;
+ };
+
+ compute-cb@5 {
+ compatible = "qcom,fastrpc-compute-cb";
+ reg = <5>;
+ iommus = <&apps_smmu 0x1805 0x0>;
+ };
+
+ compute-cb@6 {
+ compatible = "qcom,fastrpc-compute-cb";
+ reg = <6>;
+ iommus = <&apps_smmu 0x1806 0x0>;
+ };
+ };
+ };
+ };
+
lpi_tlmm: pinctrl@62b40000 {
compatible = "qcom,sdm670-lpass-lpi-pinctrl";
reg = <0 0x62b40000 0 0x20000>;
--
2.56.0
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH v3 6/9] arm64: dts: qcom: sdm670-google: enable adsp
2026-11-07 2:24 [PATCH v3 0/9] ADSP for SDM670 and sound on Google Pixel 3a Richard Acayan
` (4 preceding siblings ...)
2026-11-07 2:24 ` [PATCH v3 5/9] arm64: dts: qcom: sdm670: add adsp Richard Acayan
@ 2026-11-07 2:24 ` Richard Acayan
2026-11-07 2:24 ` [PATCH v3 7/9] arm64: dts: qcom: pm660l: add analog audio codec Richard Acayan
` (5 subsequent siblings)
11 siblings, 0 replies; 15+ messages in thread
From: Richard Acayan @ 2026-11-07 2:24 UTC (permalink / raw)
To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio, Abel Vesa,
Manivannan Sadhasivam, Andy Gross, linux-arm-msm,
linux-remoteproc, devicetree
Cc: Richard Acayan
Enable the ADSP on the Pixel 3a in anticipation of audio support.
Signed-off-by: Richard Acayan <mailingradian@gmail.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/sdm670-google-common.dtsi | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/sdm670-google-common.dtsi b/arch/arm64/boot/dts/qcom/sdm670-google-common.dtsi
index 4ce9b62abe53..2044593c22f3 100644
--- a/arch/arm64/boot/dts/qcom/sdm670-google-common.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm670-google-common.dtsi
@@ -199,6 +199,12 @@ cam_vio_ldo: cam-vio-ldo-regulator {
};
};
+&adsp_pas {
+ firmware-name = "qcom/sdm670/sargo/adsp.mbn";
+
+ status = "okay";
+};
+
&apps_rsc {
regulators-0 {
compatible = "qcom,pm660-rpmh-regulators";
--
2.56.0
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH v3 7/9] arm64: dts: qcom: pm660l: add analog audio codec
2026-11-07 2:24 [PATCH v3 0/9] ADSP for SDM670 and sound on Google Pixel 3a Richard Acayan
` (5 preceding siblings ...)
2026-11-07 2:24 ` [PATCH v3 6/9] arm64: dts: qcom: sdm670-google: enable adsp Richard Acayan
@ 2026-11-07 2:24 ` Richard Acayan
2026-11-09 13:25 ` Konrad Dybcio
2026-11-07 2:24 ` [PATCH v3 8/9] arm64: dts: qcom: sdm670: add digital " Richard Acayan
` (4 subsequent siblings)
11 siblings, 1 reply; 15+ messages in thread
From: Richard Acayan @ 2026-11-07 2:24 UTC (permalink / raw)
To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio, Abel Vesa,
Manivannan Sadhasivam, Andy Gross, linux-arm-msm,
linux-remoteproc, devicetree
Cc: Richard Acayan
The PM660L analog audio codec (PMIC revision 4) controls the headphone
jack, and optionally the earpiece and speaker, at the vendor's decision.
Add the analog audio codec.
Signed-off-by: Richard Acayan <mailingradian@gmail.com>
---
arch/arm64/boot/dts/qcom/pm660l.dtsi | 37 ++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/pm660l.dtsi b/arch/arm64/boot/dts/qcom/pm660l.dtsi
index 3f8b9eafe164..608c1c2120c9 100644
--- a/arch/arm64/boot/dts/qcom/pm660l.dtsi
+++ b/arch/arm64/boot/dts/qcom/pm660l.dtsi
@@ -87,6 +87,43 @@ pm660l_wled: leds@d800 {
status = "disabled";
};
+ pm660l_codec: audio-codec@f000 {
+ compatible = "qcom,pm660l-wcd-analog-codec",
+ "qcom,pm8953-wcd-analog-codec";
+ reg = <0xf000>;
+ interrupts = <0x3 0xf0 0x0 IRQ_TYPE_EDGE_BOTH>,
+ <0x3 0xf0 0x1 IRQ_TYPE_EDGE_BOTH>,
+ <0x3 0xf0 0x2 IRQ_TYPE_EDGE_BOTH>,
+ <0x3 0xf0 0x3 IRQ_TYPE_EDGE_BOTH>,
+ <0x3 0xf0 0x4 IRQ_TYPE_EDGE_BOTH>,
+ <0x3 0xf0 0x5 IRQ_TYPE_EDGE_BOTH>,
+ <0x3 0xf0 0x6 IRQ_TYPE_EDGE_BOTH>,
+ <0x3 0xf0 0x7 IRQ_TYPE_EDGE_BOTH>,
+ <0x3 0xf1 0x0 IRQ_TYPE_EDGE_BOTH>,
+ <0x3 0xf1 0x1 IRQ_TYPE_EDGE_BOTH>,
+ <0x3 0xf1 0x2 IRQ_TYPE_EDGE_BOTH>,
+ <0x3 0xf1 0x3 IRQ_TYPE_EDGE_BOTH>,
+ <0x3 0xf1 0x4 IRQ_TYPE_EDGE_BOTH>,
+ <0x3 0xf1 0x5 IRQ_TYPE_EDGE_BOTH>;
+ interrupt-names = "cdc_spk_cnp_int",
+ "cdc_spk_clip_int",
+ "cdc_spk_ocp_int",
+ "mbhc_ins_rem_det1",
+ "mbhc_but_rel_det",
+ "mbhc_but_press_det",
+ "mbhc_ins_rem_det",
+ "mbhc_switch_int",
+ "cdc_ear_ocp_int",
+ "cdc_hphr_ocp_int",
+ "cdc_hphl_ocp_det",
+ "cdc_ear_cnp_int",
+ "cdc_hphr_cnp_int",
+ "cdc_hphl_cnp_int";
+ sound-name-prefix = "Analog";
+ #sound-dai-cells = <1>;
+ status = "disabled";
+ };
+
pm660l_spmi_regulators: regulators {
compatible = "qcom,pm660l-regulators";
};
--
2.56.0
^ permalink raw reply related [flat|nested] 15+ messages in thread* Re: [PATCH v3 7/9] arm64: dts: qcom: pm660l: add analog audio codec
2026-11-07 2:24 ` [PATCH v3 7/9] arm64: dts: qcom: pm660l: add analog audio codec Richard Acayan
@ 2026-11-09 13:25 ` Konrad Dybcio
0 siblings, 0 replies; 15+ messages in thread
From: Konrad Dybcio @ 2026-11-09 13:25 UTC (permalink / raw)
To: Richard Acayan, Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio, Abel Vesa,
Manivannan Sadhasivam, Andy Gross, linux-arm-msm,
linux-remoteproc, devicetree
On 11/7/26 3:24 AM, Richard Acayan wrote:
> The PM660L analog audio codec (PMIC revision 4) controls the headphone
> jack, and optionally the earpiece and speaker, at the vendor's decision.
> Add the analog audio codec.
>
> Signed-off-by: Richard Acayan <mailingradian@gmail.com>
> ---
[...]
> + sound-name-prefix = "Analog";
> + #sound-dai-cells = <1>;
> + status = "disabled";
Nit: only in case you resend for something else, please add a \n
before 'status'
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Konrad
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v3 8/9] arm64: dts: qcom: sdm670: add digital audio codec
2026-11-07 2:24 [PATCH v3 0/9] ADSP for SDM670 and sound on Google Pixel 3a Richard Acayan
` (6 preceding siblings ...)
2026-11-07 2:24 ` [PATCH v3 7/9] arm64: dts: qcom: pm660l: add analog audio codec Richard Acayan
@ 2026-11-07 2:24 ` Richard Acayan
2026-11-07 2:24 ` [PATCH v3 9/9] arm64: dts: qcom: sdm670-google: add sound card Richard Acayan
` (3 subsequent siblings)
11 siblings, 0 replies; 15+ messages in thread
From: Richard Acayan @ 2026-11-07 2:24 UTC (permalink / raw)
To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio, Abel Vesa,
Manivannan Sadhasivam, Andy Gross, linux-arm-msm,
linux-remoteproc, devicetree
Cc: Richard Acayan
Add the digital WCD audio codec to the SDM670 device tree.
Signed-off-by: Richard Acayan <mailingradian@gmail.com>
---
arch/arm64/boot/dts/qcom/sdm670.dtsi | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/sdm670.dtsi b/arch/arm64/boot/dts/qcom/sdm670.dtsi
index e99183c22208..3e5ca16e3056 100644
--- a/arch/arm64/boot/dts/qcom/sdm670.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm670.dtsi
@@ -21,6 +21,7 @@
#include <dt-bindings/power/qcom-rpmpd.h>
#include <dt-bindings/soc/qcom,apr.h>
#include <dt-bindings/soc/qcom,rpmh-rsc.h>
+#include <dt-bindings/sound/qcom,q6dsp-lpass-ports.h>
/ {
interrupt-parent = <&intc>;
@@ -33,6 +34,12 @@ / {
chosen { };
clocks {
+ lpass_cdc_bclk: lpass-cdc-bclk {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-frequency = <1536000>;
+ };
+
sleep_clk: sleep-clk {
compatible = "fixed-clock";
#clock-cells = <0>;
@@ -2822,5 +2829,20 @@ data2-pins {
};
};
};
+
+ lpass_codec: audio-codec@62ec0000 {
+ compatible = "qcom,sdm670-wcd-digital-codec",
+ "qcom,msm8916-wcd-digital-codec";
+ reg = <0 0x62ec0000 0 0x400>;
+
+ clocks = <&lpass_cdc_bclk>,
+ <&q6afecc LPASS_CLK_ID_INT_MCLK_0 LPASS_CLK_ATTRIBUTE_COUPLE_NO>;
+ clock-names = "ahbix-clk", "mclk";
+
+ sound-name-prefix = "Digital";
+ #sound-dai-cells = <1>;
+
+ status = "disabled";
+ };
};
};
--
2.56.0
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH v3 9/9] arm64: dts: qcom: sdm670-google: add sound card
2026-11-07 2:24 [PATCH v3 0/9] ADSP for SDM670 and sound on Google Pixel 3a Richard Acayan
` (7 preceding siblings ...)
2026-11-07 2:24 ` [PATCH v3 8/9] arm64: dts: qcom: sdm670: add digital " Richard Acayan
@ 2026-11-07 2:24 ` Richard Acayan
2026-11-08 20:08 ` (subset) [PATCH v3 0/9] ADSP for SDM670 and sound on Google Pixel 3a Bjorn Andersson
` (2 subsequent siblings)
11 siblings, 0 replies; 15+ messages in thread
From: Richard Acayan @ 2026-11-07 2:24 UTC (permalink / raw)
To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio, Abel Vesa,
Manivannan Sadhasivam, Andy Gross, linux-arm-msm,
linux-remoteproc, devicetree
Cc: Richard Acayan
The Pixel 3a has a sound card for built-in audio (RT5514 and CS35L36
codecs) and for the headphone jack (WCD codec). Add the sound card,
q6asm frontends, and WCD codec for headset audio.
Signed-off-by: Richard Acayan <mailingradian@gmail.com>
---
.../boot/dts/qcom/sdm670-google-common.dtsi | 136 ++++++++++++++++++
1 file changed, 136 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/sdm670-google-common.dtsi b/arch/arm64/boot/dts/qcom/sdm670-google-common.dtsi
index 2044593c22f3..c623b02f091d 100644
--- a/arch/arm64/boot/dts/qcom/sdm670-google-common.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm670-google-common.dtsi
@@ -12,6 +12,7 @@
#include <dt-bindings/media/video-interface-devices.h>
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
#include <dt-bindings/power/qcom-rpmpd.h>
+#include <dt-bindings/sound/qcom,q6asm.h>
#include "sdm670.dtsi"
#include "pm660.dtsi"
#include "pm660l.dtsi"
@@ -130,6 +131,87 @@ debug_info_mem: debug-info@a1800000 {
};
};
+ sound {
+ compatible = "qcom,sdm660-sndcard";
+ model = "Google Pixel 3a";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&cdc_pdm_default>,
+ <&cdc_dmic_default>;
+
+ audio-routing = "Analog PDM_RX1", "Digital PDM_RX1",
+ "Analog PDM_RX2", "Digital PDM_RX2",
+ "Analog PDM_RX3", "Digital PDM_RX3",
+ "Digital LPASS_PDM_TX", "Analog PDM_TX",
+ "Analog AMIC2", "Analog MIC BIAS External2";
+
+ 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>;
+ };
+ };
+
+ mm4-dai-link {
+ link-name = "MultiMedia4";
+
+ cpu {
+ sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA4>;
+ };
+ };
+
+ lpi-mi2s-rx-dai-link {
+ link-name = "LPI MI2S Playback";
+
+ codec {
+ sound-dai = <&pm660l_codec 0>,
+ <&lpass_codec 0>;
+ };
+
+ cpu {
+ sound-dai = <&q6afedai LPI_MI2S_RX_0>;
+ };
+
+ platform {
+ sound-dai = <&q6routing>;
+ };
+ };
+
+ lpi-mi2s-tx-dai-link {
+ link-name = "LPI MI2S Capture";
+
+ codec {
+ sound-dai = <&pm660l_codec 1>,
+ <&lpass_codec 1>;
+ };
+
+ cpu {
+ sound-dai = <&q6afedai LPI_MI2S_TX_3>;
+ };
+
+ platform {
+ sound-dai = <&q6routing>;
+ };
+ };
+ };
+
/*
* The touchscreen regulator seems to be controlled somehow by a gpio.
* Model it as a fixed regulator and keep it on. Without schematics we
@@ -550,6 +632,13 @@ rmi4_f12: rmi4-f12@12 {
};
};
+&lpass_codec {
+ assigned-clocks = <&q6afecc LPASS_CLK_ID_INT_MCLK_0 LPASS_CLK_ATTRIBUTE_COUPLE_NO>;
+ assigned-clock-rates = <9600000>;
+
+ status = "okay";
+};
+
&lpi_tlmm {
/* sensor gpios are protected */
gpio-reserved-ranges = <0 8>, <12 6>;
@@ -613,6 +702,23 @@ &pm660_rradc {
status = "okay";
};
+&pm660l_codec {
+ vdd-cdc-io-supply = <&vreg_l10a_1p8>;
+ vdd-cdc-tx-rx-cx-supply = <&vreg_l1b_0p925>;
+ vdd-micbias-supply = <&vreg_l7b_3p125>;
+
+ qcom,mbhc-vthreshold-low = <75 150 237 437 437>;
+ qcom,mbhc-vthreshold-high = <75 150 237 437 437>;
+
+ qcom,micbias-lvl = <2500>;
+
+ qcom,hphl-jack-type-normally-open;
+ qcom,gnd-jack-type-normally-open;
+ qcom,micbias2-ext-cap;
+
+ status = "okay";
+};
+
&pm660l_flash {
status = "okay";
@@ -655,6 +761,36 @@ &qupv3_id_1 {
status = "okay";
};
+&q6afedai {
+ dai@89 {
+ reg = <LPI_MI2S_RX_0>;
+ qcom,sd-lines = <0 1>;
+ };
+
+ dai@90 {
+ reg = <LPI_MI2S_TX_3>;
+ qcom,sd-lines = <0 1>;
+ };
+};
+
+&q6asmdai {
+ dai@0 {
+ reg = <MSM_FRONTEND_DAI_MULTIMEDIA1>;
+ };
+
+ dai@1 {
+ reg = <MSM_FRONTEND_DAI_MULTIMEDIA2>;
+ };
+
+ dai@2 {
+ reg = <MSM_FRONTEND_DAI_MULTIMEDIA3>;
+ };
+
+ dai@3 {
+ reg = <MSM_FRONTEND_DAI_MULTIMEDIA4>;
+ };
+};
+
&sdhc_1 {
supports-cqe;
mmc-hs200-1_8v;
--
2.56.0
^ permalink raw reply related [flat|nested] 15+ messages in thread* Re: (subset) [PATCH v3 0/9] ADSP for SDM670 and sound on Google Pixel 3a
2026-11-07 2:24 [PATCH v3 0/9] ADSP for SDM670 and sound on Google Pixel 3a Richard Acayan
` (8 preceding siblings ...)
2026-11-07 2:24 ` [PATCH v3 9/9] arm64: dts: qcom: sdm670-google: add sound card Richard Acayan
@ 2026-11-08 20:08 ` Bjorn Andersson
2026-11-09 13:23 ` Konrad Dybcio
2026-11-10 4:34 ` (subset) " Bjorn Andersson
11 siblings, 0 replies; 15+ messages in thread
From: Bjorn Andersson @ 2026-11-08 20:08 UTC (permalink / raw)
To: Mathieu Poirier, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Konrad Dybcio, Abel Vesa, Manivannan Sadhasivam, Andy Gross,
linux-arm-msm, linux-remoteproc, devicetree, Richard Acayan
On Fri, 06 Nov 2026 21:24:44 -0500, Richard Acayan wrote:
> This series adds a user for the SDM660 sound support code [1]. It also
> adds the ADSP remoteproc for SDM670.
>
> [1] https://lore.kernel.org/r/20260730174353.108023-1-mailingradian@gmail.com
>
> Changes since v2 (https://lore.kernel.org/r/20261003175659.23536-1-mailingradian@gmail.com):
> - stop using fallback compatible and add lcx power domain (3-5/9)
> - move lpass codec bclk from sdm670-google-common.dtsi to sdm670.dtsi
> (5/9, 9/9)
> - reformat q6dsp dts (5/9)
> - set flags for codec interrupts (7/9)
> - move "qcom,..." properties to board dtsi (7/9, 9/9)
> - add review tags (6/9)
>
> [...]
Applied, thanks!
[3/9] dt-bindings: remoteproc: qcom: adsp: Add SDM670 ADSP compatible
commit: cf7fc0d6b1f3bc6564b1c75a3e22047b94234635
[4/9] remoteproc: qcom: pas: Add SDM670 ADSP support
commit: 772724ad88a2ebd3826a0dd33dbfbbb11f0d4ca0
Best regards,
--
Bjorn Andersson <andersson@kernel.org>
^ permalink raw reply [flat|nested] 15+ messages in thread* Re: [PATCH v3 0/9] ADSP for SDM670 and sound on Google Pixel 3a
2026-11-07 2:24 [PATCH v3 0/9] ADSP for SDM670 and sound on Google Pixel 3a Richard Acayan
` (9 preceding siblings ...)
2026-11-08 20:08 ` (subset) [PATCH v3 0/9] ADSP for SDM670 and sound on Google Pixel 3a Bjorn Andersson
@ 2026-11-09 13:23 ` Konrad Dybcio
2026-11-11 2:18 ` Richard Acayan
2026-11-10 4:34 ` (subset) " Bjorn Andersson
11 siblings, 1 reply; 15+ messages in thread
From: Konrad Dybcio @ 2026-11-09 13:23 UTC (permalink / raw)
To: Richard Acayan, Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio, Abel Vesa,
Manivannan Sadhasivam, Andy Gross, linux-arm-msm,
linux-remoteproc, devicetree
On 11/7/26 3:24 AM, Richard Acayan wrote:
> This series adds a user for the SDM660 sound support code [1]. It also
> adds the ADSP remoteproc for SDM670.
>
> [1] https://lore.kernel.org/r/20260730174353.108023-1-mailingradian@gmail.com
>
> Changes since v2 (https://lore.kernel.org/r/20261003175659.23536-1-mailingradian@gmail.com):
> - stop using fallback compatible and add lcx power domain (3-5/9)
Can you share the output of `cat /sys/kernel/debug/cmd-db`?
The SoC also has a LMX domain, which downstream seems not to wire
up to the DSP for some reason.
Konrad
^ permalink raw reply [flat|nested] 15+ messages in thread* Re: [PATCH v3 0/9] ADSP for SDM670 and sound on Google Pixel 3a
2026-11-09 13:23 ` Konrad Dybcio
@ 2026-11-11 2:18 ` Richard Acayan
0 siblings, 0 replies; 15+ messages in thread
From: Richard Acayan @ 2026-11-11 2:18 UTC (permalink / raw)
To: Konrad Dybcio
Cc: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio, Abel Vesa,
Manivannan Sadhasivam, Andy Gross, linux-arm-msm,
linux-remoteproc, devicetree
On Mon, Nov 09, 2026 at 02:23:15PM +0100, Konrad Dybcio wrote:
> On 11/7/26 3:24 AM, Richard Acayan wrote:
> > This series adds a user for the SDM660 sound support code [1]. It also
> > adds the ADSP remoteproc for SDM670.
> >
> > [1] https://lore.kernel.org/r/20260730174353.108023-1-mailingradian@gmail.com
> >
> > Changes since v2 (https://lore.kernel.org/r/20261003175659.23536-1-mailingradian@gmail.com):
> > - stop using fallback compatible and add lcx power domain (3-5/9)
>
> Can you share the output of `cat /sys/kernel/debug/cmd-db`?
> The SoC also has a LMX domain, which downstream seems not to wire
> up to the DSP for some reason.
Here's the ARC dump:
Slave ARC (v16.0)
-------------------------
0x30000: cx.lvl [00 00 10 00 30 00 40 00 80 00 c0 00 00 01 80 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
0x30004: cx.tmr
0x30010: mx.lvl [00 00 10 00 10 00 00 01 80 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
0x30014: mx.tmr
0x30020: ebi.lvl [00 00 10 00 30 00 40 00 80 00 c0 00 00 01 80 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
0x30024: ebi.tmr
0x30030: lcx.lvl [00 00 10 00 30 00 40 00 80 00 c0 00 00 01 80 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
0x30034: lcx.tmr
0x30040: lmx.lvl [00 00 10 00 c0 00 00 01 80 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
0x30044: lmx.tmr
0x30050: gfx.lvl [00 00 10 00 30 00 40 00 80 00 c0 00 00 01 40 01 80 01 a0 01 00 00 00 00 00 00 00 00 00 00 00 00]
0x30054: gfx.tmr
0x30060: mss.lvl [00 00 10 00 30 00 40 00 80 00 c0 00 00 01 40 01 80 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
0x30064: mss.tmr
0x30070: ddr.lvl [00 00 20 00 80 00 a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
0x30074: ddr.tmr
0x30080: xo.lvl [00 00 20 00 50 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
0x30084: xo.tmr
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: (subset) [PATCH v3 0/9] ADSP for SDM670 and sound on Google Pixel 3a
2026-11-07 2:24 [PATCH v3 0/9] ADSP for SDM670 and sound on Google Pixel 3a Richard Acayan
` (10 preceding siblings ...)
2026-11-09 13:23 ` Konrad Dybcio
@ 2026-11-10 4:34 ` Bjorn Andersson
11 siblings, 0 replies; 15+ messages in thread
From: Bjorn Andersson @ 2026-11-10 4:34 UTC (permalink / raw)
To: Mathieu Poirier, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Konrad Dybcio, Abel Vesa, Manivannan Sadhasivam, Andy Gross,
linux-arm-msm, linux-remoteproc, devicetree, Richard Acayan
On Fri, 06 Nov 2026 21:24:44 -0500, Richard Acayan wrote:
> This series adds a user for the SDM660 sound support code [1]. It also
> adds the ADSP remoteproc for SDM670.
>
> [1] https://lore.kernel.org/r/20260730174353.108023-1-mailingradian@gmail.com
>
> Changes since v2 (https://lore.kernel.org/r/20261003175659.23536-1-mailingradian@gmail.com):
> - stop using fallback compatible and add lcx power domain (3-5/9)
> - move lpass codec bclk from sdm670-google-common.dtsi to sdm670.dtsi
> (5/9, 9/9)
> - reformat q6dsp dts (5/9)
> - set flags for codec interrupts (7/9)
> - move "qcom,..." properties to board dtsi (7/9, 9/9)
> - add review tags (6/9)
>
> [...]
Applied, thanks!
[2/9] dt-bindings: soc: qcom: aoss: Add compatible for SDM670
commit: 9d1c507083783fa16a0f510b8ed7bac1e151f856
Best regards,
--
Bjorn Andersson <andersson@kernel.org>
^ permalink raw reply [flat|nested] 15+ messages in thread