[PATCH 3/3] arm64: dts: qcom: nord-ride-embedded: Add sound support
From: Shawn Guo
Date: Sun Sep 13 2026 - 22:42:32 EST
From: Mohammad Rafi Shaik <mohammad.rafi.shaik@xxxxxxxxxxxxxxxx>
Enable audio on the nord-ride-sx board. Add a soundcard node using
the qcom,nord-ride-sndcard compatible with two DAI links:
- PCM1681 playback over Tertiary MI2S RX
- ADAU1979 capture over Tertiary MI2S TX
Add PCM1681/ADAU1979 codec nodes on I2C18, with the PCM1681 system
clock supplied via MCLK0. The DAC control lines come off a TCA6408 I/O
expander on the same bus, so add that too and hog its dac_enable and
click-pop-mute-n outputs, both of which have to be asserted before the
DAC produces sound.
Assisted-by: LLM
Signed-off-by: Mohammad Rafi Shaik <mohammad.rafi.shaik@xxxxxxxxxxxxxxxx>
Signed-off-by: Shawn Guo <shengchao.guo@xxxxxxxxxxxxxxxx>
---
.../boot/dts/qcom/nord-ride-embedded.dts | 112 ++++++++++++++++++
1 file changed, 112 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/nord-ride-embedded.dts b/arch/arm64/boot/dts/qcom/nord-ride-embedded.dts
index f225c6d39b0a..0a201c19bfc0 100644
--- a/arch/arm64/boot/dts/qcom/nord-ride-embedded.dts
+++ b/arch/arm64/boot/dts/qcom/nord-ride-embedded.dts
@@ -8,6 +8,7 @@
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
+#include <dt-bindings/sound/qcom,q6afe.h>
#include "nord-embedded.dtsi"
#include "pmau0102-nord.dtsi"
@@ -72,6 +73,46 @@ regulator-usb2-vbus {
enable-active-high;
regulator-always-on;
};
+
+ sound {
+ compatible = "qcom,nord-ride-sndcard";
+ model = "NORD-RIDE-SX";
+
+ pinctrl-0 = <&aud_intfc8_mi2s_active>, <&aud_mclk0_mira_active>;
+ pinctrl-names = "default";
+
+ aud-intfc8-mi2s-playback-dai-link {
+ link-name = "PCM1681 Playback";
+
+ codec {
+ sound-dai = <&pcm1681>;
+ };
+
+ cpu {
+ sound-dai = <&q6apmbedai TERTIARY_MI2S_RX>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+
+ aud-intfc8-mi2s-capture-dai-link {
+ link-name = "ADAU1979 Capture";
+
+ codec {
+ sound-dai = <&adau1979>;
+ };
+
+ cpu {
+ sound-dai = <&q6apmbedai TERTIARY_MI2S_TX>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+ };
};
&apps_rsc {
@@ -490,6 +531,60 @@ usb_1_con_ss: endpoint {
};
};
+&i2c18 {
+ clock-frequency = <400000>;
+
+ status = "okay";
+
+ expander0: gpio@20 {
+ compatible = "ti,tca6408";
+ reg = <0x20>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ #interrupt-cells = <2>;
+ interrupt-controller;
+ interrupts-extended = <&pmau0102_l_gpios 6 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&pmau0102_l_gpios 5 GPIO_ACTIVE_LOW>;
+
+ click-pop-mute-hog {
+ gpio-hog;
+ gpios = <5 GPIO_ACTIVE_HIGH>;
+ output-high;
+ line-name = "click-pop-mute-n";
+ };
+
+ dac-enable-hog {
+ gpio-hog;
+ gpios = <6 GPIO_ACTIVE_HIGH>;
+ output-high;
+ line-name = "dac_enable";
+ };
+ };
+
+ /* ADI ADAU1979 - 4-channel 24-bit ADC */
+ adau1979: adau1979@31 {
+ compatible = "adi,adau1979";
+ reg = <0x31>;
+
+ AVDD-supply = <&vreg_per_3p3>;
+ DVDD-supply = <&vreg_per_3p3>;
+ #sound-dai-cells = <0>;
+ };
+
+ /* PCM1681 DAC */
+ pcm1681: pcm1681@4c {
+ compatible = "ti,pcm1681";
+ reg = <0x4c>;
+
+ clocks = <&q6prmcc LPASS_CLK_ID_MCLK_1 LPASS_CLK_ATTRIBUTE_COUPLE_NO>;
+ clock-names = "sck";
+ assigned-clocks = <&q6prmcc LPASS_CLK_ID_MCLK_1 LPASS_CLK_ATTRIBUTE_COUPLE_NO>;
+ assigned-clock-rates = <12288000>;
+
+ #sound-dai-cells = <0>;
+ };
+};
+
&pmau0102_i_gpios {
usb_pd_int_default: usb-pd-int-state {
pins = "gpio8";
@@ -500,6 +595,23 @@ usb_pd_int_default: usb-pd-int-state {
};
};
+&q6apmbedai {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ dai@20 {
+ reg = <TERTIARY_MI2S_RX>;
+ clocks = <&q6prmcc LPASS_CLK_ID_QAIF_IF8_IBIT LPASS_CLK_ATTRIBUTE_COUPLE_NO>;
+ clock-names = "bclk";
+ };
+
+ dai@21 {
+ reg = <TERTIARY_MI2S_TX>;
+ clocks = <&q6prmcc LPASS_CLK_ID_QAIF_IF8_IBIT LPASS_CLK_ATTRIBUTE_COUPLE_NO>;
+ clock-names = "bclk";
+ };
+};
+
&qupv3_0 {
firmware-name = "qcom/nord/qupv3fw.elf";
--
2.43.0