[PATCH v3 4/8] arm64: dts: qcom: shikra: Add soundwire and macro nodes
From: Mohammad Rafi Shaik
Date: Thu Sep 17 2026 - 00:41:19 EST
Add SoC-level SoundWire masters and LPASS RX/VA macro nodes, along with
DMIC and SWR pinctrl states required by the audio data path.
Keep these nodes disabled in shikra.dtsi so board dts files can selectively
enable and configure them.
Signed-off-by: Mohammad Rafi Shaik <mohammad.rafi.shaik@xxxxxxxxxxxxxxxx>
---
arch/arm64/boot/dts/qcom/shikra.dtsi | 172 +++++++++++++++++++++++++++++++++++
1 file changed, 172 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/shikra.dtsi b/arch/arm64/boot/dts/qcom/shikra.dtsi
index 21e4e6a7e12a..ec0a3cd4a27d 100644
--- a/arch/arm64/boot/dts/qcom/shikra.dtsi
+++ b/arch/arm64/boot/dts/qcom/shikra.dtsi
@@ -953,6 +953,70 @@ rclk-pins {
bias-bus-hold;
};
};
+
+ dmic01_default: dmic01-default-state {
+ clk-pins {
+ pins = "gpio96";
+ function = "dmic";
+ drive-strength = <8>;
+ output-high;
+ };
+
+ data-pins {
+ pins = "gpio97";
+ function = "dmic";
+ drive-strength = <8>;
+ bias-disable;
+ };
+ };
+
+ dmic23_default: dmic23-default-state {
+ clk-pins {
+ pins = "gpio98";
+ function = "dmic";
+ drive-strength = <8>;
+ output-high;
+ };
+
+ data-pins {
+ pins = "gpio99";
+ function = "dmic";
+ drive-strength = <8>;
+ bias-disable;
+ };
+ };
+
+ tx_swr_active: tx-swr-active-state {
+ clk-pins {
+ pins = "gpio105";
+ function = "swr0_tx";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ data-pins {
+ pins = "gpio106";
+ function = "swr0_tx";
+ drive-strength = <8>;
+ bias-bus-hold;
+ };
+ };
+
+ rx_swr_active: rx-swr-active-state {
+ clk-pins {
+ pins = "gpio107";
+ function = "swr0_rx";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ data-pins {
+ pins = "gpio108", "gpio109";
+ function = "swr0_rx";
+ drive-strength = <8>;
+ bias-bus-hold;
+ };
+ };
};
pmu@c91000 {
@@ -3677,6 +3741,114 @@ qaif_cpu: audio@a000000 {
status = "disabled";
};
+ rxmacro: codec@a040000 {
+ compatible = "qcom,shikra-lpass-rx-macro";
+ reg = <0x0 0x0a040000 0x0 0x1000>;
+
+ clocks = <&audiocorecc AUDIO_CORE_CC_RX_MCLK_CLK>,
+ <&audiocorecc AUDIO_CORE_CC_RX_MCLK_2X_CLK>,
+ <&vamacro>;
+ clock-names = "mclk",
+ "npl",
+ "fsgen";
+
+ #clock-cells = <0>;
+ clock-output-names = "mclk";
+ #sound-dai-cells = <1>;
+
+ status = "disabled";
+ };
+
+ swr0: soundwire@a060000 {
+ compatible = "qcom,shikra-soundwire";
+ reg = <0x0 0x0a060000 0x0 0x10000>;
+
+ interrupts = <GIC_SPI 330 IRQ_TYPE_LEVEL_HIGH 0>;
+
+ clocks = <&rxmacro>;
+ clock-names = "iface";
+ label = "RX";
+
+ pinctrl-0 = <&rx_swr_active>;
+ pinctrl-names = "default";
+
+ qcom,din-ports = <0>;
+ qcom,dout-ports = <5>;
+
+ resets = <&audiocore_csr AUDIO_CORE_CSR_RX_SWR_CGCR>;
+ reset-names = "swr_audio_cgcr";
+
+ qcom,ports-sinterval-low = /bits/ 8 <0x03 0x1f 0x1f 0x07 0x00>;
+ qcom,ports-offset1 = /bits/ 8 <0x00 0x00 0x0b 0x01 0x00>;
+ qcom,ports-offset2 = /bits/ 8 <0x00 0x00 0x0b 0x00 0x00>;
+ qcom,ports-hstart = /bits/ 8 <0xff 0x03 0xff 0xff 0xff>;
+ qcom,ports-hstop = /bits/ 8 <0xff 0x06 0xff 0xff 0xff>;
+ qcom,ports-word-length = /bits/ 8 <0x01 0x07 0x04 0xff 0xff>;
+ qcom,ports-block-pack-mode = /bits/ 8 <0xff 0x00 0x01 0xff 0xff>;
+ qcom,ports-block-group-count = /bits/ 8 <0xff 0xff 0xff 0xff 0x00>;
+ qcom,ports-lane-control = /bits/ 8 <0x01 0x00 0x00 0x00 0x00>;
+
+ #sound-dai-cells = <1>;
+ #address-cells = <2>;
+ #size-cells = <0>;
+
+ status = "disabled";
+ };
+
+ vamacro: codec@a078000 {
+ compatible = "qcom,shikra-lpass-va-macro";
+ reg = <0x0 0x0a078000 0x0 0x2000>;
+
+ clocks = <&audiocorecc AUDIO_CORE_CC_TX_MCLK_CLK>,
+ <&audiocorecc AUDIO_CORE_CC_TX_MCLK_2X_CLK>;
+ clock-names = "mclk",
+ "npl";
+
+ #clock-cells = <0>;
+ clock-output-names = "fsgen";
+ #sound-dai-cells = <1>;
+
+ status = "disabled";
+ };
+
+ swr1: soundwire@a080000 {
+ compatible = "qcom,shikra-soundwire";
+ reg = <0x0 0x0a080000 0x0 0x10000>;
+
+ interrupts = <GIC_SPI 328 IRQ_TYPE_LEVEL_HIGH 0>,
+ <GIC_SPI 406 IRQ_TYPE_LEVEL_HIGH 0>;
+ interrupt-names = "core", "wakeup";
+
+ clocks = <&vamacro>;
+ clock-names = "iface";
+ label = "VA_TX";
+
+ pinctrl-0 = <&tx_swr_active>;
+ pinctrl-names = "default";
+
+ qcom,din-ports = <4>;
+ qcom,dout-ports = <0>;
+
+ resets = <&audiocore_csr AUDIO_CORE_CSR_TX_SWR_CGCR>;
+ reset-names = "swr_audio_cgcr";
+
+ qcom,ports-sinterval-low = /bits/ 8 <0x01 0x03 0x03 0x03>;
+ qcom,ports-offset1 = /bits/ 8 <0x00 0x01 0x01 0x01>;
+ qcom,ports-offset2 = /bits/ 8 <0x00 0x00 0x00 0x00>;
+ qcom,ports-hstart = /bits/ 8 <0xff 0xff 0xff 0xff>;
+ qcom,ports-hstop = /bits/ 8 <0xff 0xff 0xff 0xff>;
+ qcom,ports-word-length = /bits/ 8 <0xff 0xff 0xff 0xff>;
+ qcom,ports-block-pack-mode = /bits/ 8 <0xff 0xff 0xff 0xff>;
+ qcom,ports-block-group-count = /bits/ 8 <0xff 0xff 0xff 0xff>;
+ qcom,ports-lane-control = /bits/ 8 <0x01 0x00 0x00 0x00>;
+
+ #sound-dai-cells = <1>;
+ #address-cells = <2>;
+ #size-cells = <0>;
+
+ status = "disabled";
+ };
+
audiocorecc: clock-controller@a0a0000 {
compatible = "qcom,shikra-audiocorecc";
reg = <0x0 0x0a0a0000 0x0 0x10000>;
--
2.34.1