diff mbox series

[RFT,v2,4/6] arm64: dts: qcom: sdm845: move audio to separate file

Message ID 20230118103458.107434-4-krzysztof.kozlowski@linaro.org
State New
Headers show
Series [RFT,v2,1/6] arm64: dts: qcom: sdm845-db845c: add generic sound compatible | expand

Commit Message

Krzysztof Kozlowski Jan. 18, 2023, 10:34 a.m. UTC
Re-organize SDM845 sound components into separate, audio DTSI which
should be included and customized by the SDM845 boards wanting audio.
The DTSI includes:
1. WCD9340 codec node because it is not a property of the SoC, but board.
2. Common sound DAI links, shared with all sound cards.

The Xiaomi Polaris, although includes WCD9340 codec, it lacks sound
node, so it stays disabled.

On all others boards not using audio, keep the Slimbus node disabled as
it is empty.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

---

Changes since v1:
1. Move also sound node.
2. Rewrite commit msg.

RFC - please kindly test the boards.
---
 .../boot/dts/qcom/sdm845-audio-wcd9340.dtsi   | 125 ++++++++++++++++++
 arch/arm64/boot/dts/qcom/sdm845-db845c.dts    |  55 +-------
 .../qcom/sdm845-xiaomi-beryllium-common.dtsi  |  53 +-------
 .../boot/dts/qcom/sdm845-xiaomi-polaris.dts   |   1 +
 arch/arm64/boot/dts/qcom/sdm845.dtsi          |  60 +--------
 .../boot/dts/qcom/sdm850-lenovo-yoga-c630.dts |  59 ++-------
 .../boot/dts/qcom/sdm850-samsung-w737.dts     |  60 ++-------
 7 files changed, 151 insertions(+), 262 deletions(-)
 create mode 100644 arch/arm64/boot/dts/qcom/sdm845-audio-wcd9340.dtsi

Comments

Caleb Connolly Jan. 19, 2023, 11:24 p.m. UTC | #1
On 18/01/2023 10:34, Krzysztof Kozlowski wrote:
> Re-organize SDM845 sound components into separate, audio DTSI which
> should be included and customized by the SDM845 boards wanting audio.
> The DTSI includes:
> 1. WCD9340 codec node because it is not a property of the SoC, but board.
> 2. Common sound DAI links, shared with all sound cards.

Hi Krzysztof,

I know I already reported this on IRC, I thought I'd duplicate the info
here for completeness sake.

Due to how the sound node is parsed the device numbers in alsa are
derived from the index of the sound/mmX-dai-link child nodes.

For boards which use more than 3 FE's this causes breaking changes in
userspace, as the slim-dai-link and slimcap-dai-link nodes now come
before the other mmX-dai-link nodes, for example with my OnePlus 6
patches "aplay -l" shows:

card 0: O6 [OnePlus 6], device 0: MultiMedia1 (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: O6 [OnePlus 6], device 1: MultiMedia2 (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: O6 [OnePlus 6], device 2: MultiMedia3 (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: O6 [OnePlus 6], device 5: MultiMedia4 (*) [] <-- 5 instead of 3
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: O6 [OnePlus 6], device 6: MultiMedia5 (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: O6 [OnePlus 6], device 7: MultiMedia6 (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0

This breaks the UCM configs shipped by postmarketOS and Mobian - though
none of it is "upstream".

Would it be reasonable to add all 6 FE DAI's and then disable the unused
ones on a per-board basis?

> 
> The Xiaomi Polaris, although includes WCD9340 codec, it lacks sound
> node, so it stays disabled.
> 
> On all others boards not using audio, keep the Slimbus node disabled as
> it is empty.
> 
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> 
> ---
> 
> Changes since v1:
> 1. Move also sound node.
> 2. Rewrite commit msg.
> 
> RFC - please kindly test the boards.
> ---
>  .../boot/dts/qcom/sdm845-audio-wcd9340.dtsi   | 125 ++++++++++++++++++
>  arch/arm64/boot/dts/qcom/sdm845-db845c.dts    |  55 +-------
>  .../qcom/sdm845-xiaomi-beryllium-common.dtsi  |  53 +-------
>  .../boot/dts/qcom/sdm845-xiaomi-polaris.dts   |   1 +
>  arch/arm64/boot/dts/qcom/sdm845.dtsi          |  60 +--------
>  .../boot/dts/qcom/sdm850-lenovo-yoga-c630.dts |  59 ++-------
>  .../boot/dts/qcom/sdm850-samsung-w737.dts     |  60 ++-------
>  7 files changed, 151 insertions(+), 262 deletions(-)
>  create mode 100644 arch/arm64/boot/dts/qcom/sdm845-audio-wcd9340.dtsi
> 
> diff --git a/arch/arm64/boot/dts/qcom/sdm845-audio-wcd9340.dtsi b/arch/arm64/boot/dts/qcom/sdm845-audio-wcd9340.dtsi
> new file mode 100644
> index 000000000000..0a94fde6741d
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/sdm845-audio-wcd9340.dtsi
> @@ -0,0 +1,125 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * SDM845 SoC device tree source
> + *
> + * Copyright (c) 2018, The Linux Foundation. All rights reserved.
> + */
> +
> +&slim {
> +	status = "okay";
> +
> +	slim@1 {
> +		reg = <1>;
> +		#address-cells = <2>;
> +		#size-cells = <0>;
> +
> +		wcd9340_ifd: ifd@0,0 {
> +			compatible = "slim217,250";
> +			reg = <0 0>;
> +		};
> +
> +		wcd9340: codec@1,0 {
> +			compatible = "slim217,250";
> +			reg = <1 0>;
> +			slim-ifc-dev = <&wcd9340_ifd>;
> +
> +			#sound-dai-cells = <1>;
> +
> +			interrupts-extended = <&tlmm 54 IRQ_TYPE_LEVEL_HIGH>;
> +			interrupt-controller;
> +			#interrupt-cells = <1>;
> +
> +			#clock-cells = <0>;
> +			clock-frequency = <9600000>;
> +			clock-output-names = "mclk";
> +			qcom,micbias1-microvolt = <1800000>;
> +			qcom,micbias2-microvolt = <1800000>;
> +			qcom,micbias3-microvolt = <1800000>;
> +			qcom,micbias4-microvolt = <1800000>;
> +
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +
> +			wcdgpio: gpio-controller@42 {
> +				compatible = "qcom,wcd9340-gpio";
> +				gpio-controller;
> +				#gpio-cells = <2>;
> +				reg = <0x42 0x2>;
> +			};
> +
> +			swm: swm@c85 {
> +				compatible = "qcom,soundwire-v1.3.0";
> +				reg = <0xc85 0x40>;
> +				interrupts-extended = <&wcd9340 20>;
> +
> +				qcom,dout-ports = <6>;
> +				qcom,din-ports = <2>;
> +				qcom,ports-sinterval-low = /bits/ 8  <0x07 0x1f 0x3f 0x7 0x1f 0x3f 0x0f 0x0f>;
> +				qcom,ports-offset1 = /bits/ 8 <0x01 0x02 0x0c 0x6 0x12 0x0d 0x07 0x0a>;
> +				qcom,ports-offset2 = /bits/ 8 <0x00 0x00 0x1f 0x00 0x00 0x1f 0x00 0x00>;
> +
> +				#sound-dai-cells = <1>;
> +				clocks = <&wcd9340>;
> +				clock-names = "iface";
> +				#address-cells = <2>;
> +				#size-cells = <0>;
> +			};
> +		};
> +	};
> +};
> +
> +&sound {
> +	compatible = "qcom,sdm845-sndcard";
> +	status = "disabled";
> +
> +	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>;
> +		};
> +	};
> +
> +	sound_slim_dai_link: slim-dai-link {
> +		link-name = "SLIM Playback";
> +		cpu {
> +			sound-dai = <&q6afedai SLIMBUS_0_RX>;
> +		};
> +
> +		platform {
> +			sound-dai = <&q6routing>;
> +		};
> +
> +		codec {
> +			sound-dai = <&wcd9340 0>;
> +		};
> +	};
> +
> +	slimcap-dai-link {
> +		link-name = "SLIM Capture";
> +		cpu {
> +			sound-dai = <&q6afedai SLIMBUS_0_TX>;
> +		};
> +
> +		platform {
> +			sound-dai = <&q6routing>;
> +		};
> +
> +		codec {
> +			sound-dai = <&wcd9340 1>;
> +		};
> +	};
> +};
> diff --git a/arch/arm64/boot/dts/qcom/sdm845-db845c.dts b/arch/arm64/boot/dts/qcom/sdm845-db845c.dts
> index 4833e89affc2..11b0554a6aea 100644
> --- a/arch/arm64/boot/dts/qcom/sdm845-db845c.dts
> +++ b/arch/arm64/boot/dts/qcom/sdm845-db845c.dts
> @@ -11,6 +11,7 @@
>  #include <dt-bindings/sound/qcom,q6afe.h>
>  #include <dt-bindings/sound/qcom,q6asm.h>
>  #include "sdm845.dtsi"
> +#include "sdm845-audio-wcd9340.dtsi"
>  #include "pm8998.dtsi"
>  #include "pmi8998.dtsi"
>  
> @@ -726,27 +727,7 @@ &quat_mi2s_sd2_active
>  		"MM_DL2",  "MultiMedia2 Playback",
>  		"MM_DL4",  "MultiMedia4 Playback",
>  		"MultiMedia3 Capture", "MM_UL3";
> -
> -	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>;
> -		};
> -	};
> +	status = "okay";
>  
>  	mm4-dai-link {
>  		link-name = "MultiMedia4";
> @@ -769,35 +750,11 @@ codec {
>  			sound-dai = <&lt9611_codec 0>;
>  		};
>  	};
> +};
>  
> -	slim-dai-link {
> -		link-name = "SLIM Playback";
> -		cpu {
> -			sound-dai = <&q6afedai SLIMBUS_0_RX>;
> -		};
> -
> -		platform {
> -			sound-dai = <&q6routing>;
> -		};
> -
> -		codec {
> -			sound-dai = <&left_spkr>, <&right_spkr>, <&swm 0>, <&wcd9340 0>;
> -		};
> -	};
> -
> -	slimcap-dai-link {
> -		link-name = "SLIM Capture";
> -		cpu {
> -			sound-dai = <&q6afedai SLIMBUS_0_TX>;
> -		};
> -
> -		platform {
> -			sound-dai = <&q6routing>;
> -		};
> -
> -		codec {
> -			sound-dai = <&wcd9340 1>;
> -		};
> +&sound_slim_dai_link {
> +	codec {
> +		sound-dai = <&left_spkr>, <&right_spkr>, <&swm 0>, <&wcd9340 0>;
>  	};
>  };
>  
> diff --git a/arch/arm64/boot/dts/qcom/sdm845-xiaomi-beryllium-common.dtsi b/arch/arm64/boot/dts/qcom/sdm845-xiaomi-beryllium-common.dtsi
> index 5de8b4c372fc..54eabacdc031 100644
> --- a/arch/arm64/boot/dts/qcom/sdm845-xiaomi-beryllium-common.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sdm845-xiaomi-beryllium-common.dtsi
> @@ -7,6 +7,7 @@
>  #include <dt-bindings/sound/qcom,q6afe.h>
>  #include <dt-bindings/sound/qcom,q6asm.h>
>  #include "sdm845.dtsi"
> +#include "sdm845-audio-wcd9340.dtsi"
>  #include "pm8998.dtsi"
>  #include "pmi8998.dtsi"
>  
> @@ -384,57 +385,7 @@ &sound {
>  		"AMIC1", "MIC BIAS1",
>  		"AMIC2", "MIC BIAS2",
>  		"AMIC3", "MIC BIAS3";
> -
> -	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>;
> -		};
> -	};
> -
> -	slim-dai-link {
> -		link-name = "SLIM Playback";
> -		cpu {
> -			sound-dai = <&q6afedai SLIMBUS_0_RX>;
> -		};
> -
> -		platform {
> -			sound-dai = <&q6routing>;
> -		};
> -
> -		codec {
> -			sound-dai = <&wcd9340 0>;
> -		};
> -	};
> -
> -	slimcap-dai-link {
> -		link-name = "SLIM Capture";
> -		cpu {
> -			sound-dai = <&q6afedai SLIMBUS_0_TX>;
> -		};
> -
> -		platform {
> -			sound-dai = <&q6routing>;
> -		};
> -
> -		codec {
> -			sound-dai = <&wcd9340 1>;
> -		};
> -	};
> +	status = "okay";
>  };
>  
>  &tlmm {
> diff --git a/arch/arm64/boot/dts/qcom/sdm845-xiaomi-polaris.dts b/arch/arm64/boot/dts/qcom/sdm845-xiaomi-polaris.dts
> index a80c3dd9a2da..f81619c8a3ba 100644
> --- a/arch/arm64/boot/dts/qcom/sdm845-xiaomi-polaris.dts
> +++ b/arch/arm64/boot/dts/qcom/sdm845-xiaomi-polaris.dts
> @@ -13,6 +13,7 @@
>  #include <dt-bindings/sound/qcom,q6afe.h>
>  #include <dt-bindings/sound/qcom,q6asm.h>
>  #include "sdm845.dtsi"
> +#include "sdm845-audio-wcd9340.dtsi"
>  #include "pm8998.dtsi"
>  #include "pmi8998.dtsi"
>  #include "pm8005.dtsi"
> diff --git a/arch/arm64/boot/dts/qcom/sdm845.dtsi b/arch/arm64/boot/dts/qcom/sdm845.dtsi
> index 0f1cb2c8addd..27d1917f5358 100644
> --- a/arch/arm64/boot/dts/qcom/sdm845.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sdm845.dtsi
> @@ -3831,65 +3831,7 @@ slim: slim-ngd@171c0000 {
>  			iommus = <&apps_smmu 0x1806 0x0>;
>  			#address-cells = <1>;
>  			#size-cells = <0>;
> -
> -			slim@1 {
> -				reg = <1>;
> -				#address-cells = <2>;
> -				#size-cells = <0>;
> -
> -				wcd9340_ifd: ifd@0,0 {
> -					compatible = "slim217,250";
> -					reg = <0 0>;
> -				};
> -
> -				wcd9340: codec@1,0 {
> -					compatible = "slim217,250";
> -					reg = <1 0>;
> -					slim-ifc-dev = <&wcd9340_ifd>;
> -
> -					#sound-dai-cells = <1>;
> -
> -					interrupts-extended = <&tlmm 54 IRQ_TYPE_LEVEL_HIGH>;
> -					interrupt-controller;
> -					#interrupt-cells = <1>;
> -
> -					#clock-cells = <0>;
> -					clock-frequency = <9600000>;
> -					clock-output-names = "mclk";
> -					qcom,micbias1-microvolt = <1800000>;
> -					qcom,micbias2-microvolt = <1800000>;
> -					qcom,micbias3-microvolt = <1800000>;
> -					qcom,micbias4-microvolt = <1800000>;
> -
> -					#address-cells = <1>;
> -					#size-cells = <1>;
> -
> -					wcdgpio: gpio-controller@42 {
> -						compatible = "qcom,wcd9340-gpio";
> -						gpio-controller;
> -						#gpio-cells = <2>;
> -						reg = <0x42 0x2>;
> -					};
> -
> -					swm: swm@c85 {
> -						compatible = "qcom,soundwire-v1.3.0";
> -						reg = <0xc85 0x40>;
> -						interrupts-extended = <&wcd9340 20>;
> -
> -						qcom,dout-ports = <6>;
> -						qcom,din-ports = <2>;
> -						qcom,ports-sinterval-low = /bits/ 8  <0x07 0x1f 0x3f 0x7 0x1f 0x3f 0x0f 0x0f>;
> -						qcom,ports-offset1 = /bits/ 8 <0x01 0x02 0x0c 0x6 0x12 0x0d 0x07 0x0a>;
> -						qcom,ports-offset2 = /bits/ 8 <0x00 0x00 0x1f 0x00 0x00 0x1f 0x00 0x00>;
> -
> -						#sound-dai-cells = <1>;
> -						clocks = <&wcd9340>;
> -						clock-names = "iface";
> -						#address-cells = <2>;
> -						#size-cells = <0>;
> -					};
> -				};
> -			};
> +			status = "disabled";
>  		};
>  
>  		lmh_cluster1: lmh@17d70800 {
> diff --git a/arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts b/arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts
> index d55ffd69155e..b979d8ae8698 100644
> --- a/arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts
> +++ b/arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts
> @@ -13,6 +13,7 @@
>  #include <dt-bindings/sound/qcom,q6afe.h>
>  #include <dt-bindings/sound/qcom,q6asm.h>
>  #include "sdm850.dtsi"
> +#include "sdm845-audio-wcd9340.dtsi"
>  #include "pm8998.dtsi"
>  
>  /*
> @@ -522,57 +523,7 @@ &sound {
>  		"MM_DL1",  "MultiMedia1 Playback",
>  		"MM_DL3",  "MultiMedia3 Playback",
>  		"MultiMedia2 Capture", "MM_UL2";
> -
> -	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>;
> -		};
> -	};
> -
> -	slim-dai-link {
> -		link-name = "SLIM Playback";
> -		cpu {
> -			sound-dai = <&q6afedai SLIMBUS_0_RX>;
> -		};
> -
> -		platform {
> -			sound-dai = <&q6routing>;
> -		};
> -
> -		codec {
> -			sound-dai = <&left_spkr>, <&right_spkr>, <&swm 0>, <&wcd9340 0>;
> -		};
> -	};
> -
> -	slimcap-dai-link {
> -		link-name = "SLIM Capture";
> -		cpu {
> -			sound-dai = <&q6afedai SLIMBUS_0_TX>;
> -		};
> -
> -		platform {
> -			sound-dai = <&q6routing>;
> -		};
> -
> -		codec {
> -			sound-dai = <&wcd9340 1>;
> -		};
> -	};
> +	status = "okay";
>  
>  	slim-wcd-dai-link {
>  		link-name = "SLIM WCD Playback";
> @@ -590,6 +541,12 @@ codec {
>  	};
>  };
>  
> +&sound_slim_dai_link {
> +	codec {
> +		sound-dai = <&left_spkr>, <&right_spkr>, <&swm 0>, <&wcd9340 0>;
> +	};
> +};
> +
>  &tlmm {
>  	gpio-reserved-ranges = <0 4>, <81 4>;
>  
> diff --git a/arch/arm64/boot/dts/qcom/sdm850-samsung-w737.dts b/arch/arm64/boot/dts/qcom/sdm850-samsung-w737.dts
> index 6730804f4e3e..75773b06701b 100644
> --- a/arch/arm64/boot/dts/qcom/sdm850-samsung-w737.dts
> +++ b/arch/arm64/boot/dts/qcom/sdm850-samsung-w737.dts
> @@ -14,6 +14,7 @@
>  #include <dt-bindings/sound/qcom,q6afe.h>
>  #include <dt-bindings/sound/qcom,q6asm.h>
>  #include "sdm850.dtsi"
> +#include "sdm845-audio-wcd9340.dtsi"
>  #include "pm8998.dtsi"
>  
>  /*
> @@ -436,7 +437,6 @@ dai@2 {
>  };
>  
>  &sound {
> -	compatible = "qcom,sdm845-sndcard";
>  	model = "Samsung-W737";
>  
>  	audio-routing =
> @@ -447,57 +447,7 @@ &sound {
>  		"MM_DL1",  "MultiMedia1 Playback",
>  		"MM_DL3",  "MultiMedia3 Playback",
>  		"MultiMedia2 Capture", "MM_UL2";
> -
> -	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>;
> -		};
> -	};
> -
> -	slim-dai-link {
> -		link-name = "SLIM Playback";
> -		cpu {
> -			sound-dai = <&q6afedai SLIMBUS_0_RX>;
> -		};
> -
> -		platform {
> -			sound-dai = <&q6routing>;
> -		};
> -
> -		codec {
> -			sound-dai = <&left_spkr>, <&right_spkr>, <&swm 0>, <&wcd9340 0>;
> -		};
> -	};
> -
> -	slimcap-dai-link {
> -		link-name = "SLIM Capture";
> -		cpu {
> -			sound-dai = <&q6afedai SLIMBUS_0_TX>;
> -		};
> -
> -		platform {
> -			sound-dai = <&q6routing>;
> -		};
> -
> -		codec {
> -			sound-dai = <&wcd9340 1>;
> -		};
> -	};
> +	status = "okay";
>  
>  	slim-wcd-dai-link {
>  		link-name = "SLIM WCD Playback";
> @@ -515,6 +465,12 @@ codec {
>  	};
>  };
>  
> +&sound_slim_dai_link {
> +	codec {
> +		sound-dai = <&left_spkr>, <&right_spkr>, <&swm 0>, <&wcd9340 0>;
> +	};
> +};
> +
>  &tlmm {
>  	gpio-reserved-ranges = <0 6>, <85 4>;
>
Krzysztof Kozlowski Jan. 20, 2023, 7:42 a.m. UTC | #2
On 20/01/2023 00:24, Caleb Connolly wrote:
> 
> 
> On 18/01/2023 10:34, Krzysztof Kozlowski wrote:
>> Re-organize SDM845 sound components into separate, audio DTSI which
>> should be included and customized by the SDM845 boards wanting audio.
>> The DTSI includes:
>> 1. WCD9340 codec node because it is not a property of the SoC, but board.
>> 2. Common sound DAI links, shared with all sound cards.
> 
> Hi Krzysztof,
> 
> I know I already reported this on IRC, I thought I'd duplicate the info
> here for completeness sake.
> 
> Due to how the sound node is parsed the device numbers in alsa are
> derived from the index of the sound/mmX-dai-link child nodes.
> 
> For boards which use more than 3 FE's this causes breaking changes in
> userspace, as the slim-dai-link and slimcap-dai-link nodes now come
> before the other mmX-dai-link nodes, for example with my OnePlus 6
> patches "aplay -l" shows:
> 
> card 0: O6 [OnePlus 6], device 0: MultiMedia1 (*) []
>   Subdevices: 1/1
>   Subdevice #0: subdevice #0
> card 0: O6 [OnePlus 6], device 1: MultiMedia2 (*) []
>   Subdevices: 1/1
>   Subdevice #0: subdevice #0
> card 0: O6 [OnePlus 6], device 2: MultiMedia3 (*) []
>   Subdevices: 1/1
>   Subdevice #0: subdevice #0
> card 0: O6 [OnePlus 6], device 5: MultiMedia4 (*) [] <-- 5 instead of 3
>   Subdevices: 1/1
>   Subdevice #0: subdevice #0
> card 0: O6 [OnePlus 6], device 6: MultiMedia5 (*) []
>   Subdevices: 1/1
>   Subdevice #0: subdevice #0
> card 0: O6 [OnePlus 6], device 7: MultiMedia6 (*) []
>   Subdevices: 1/1
>   Subdevice #0: subdevice #0
> 
> This breaks the UCM configs shipped by postmarketOS and Mobian - though
> none of it is "upstream".

Thanks for the report.


> 
> Would it be reasonable to add all 6 FE DAI's and then disable the unused
> ones on a per-board basis?


Or just drop the sound node from the audio DTSI, not sure if there are
benefits in such case...

> 
>>
>> The Xiaomi Polaris, although includes WCD9340 codec, it lacks sound
>> node, so it stays disabled.
>>
>> On all others boards not using audio, keep the Slimbus node disabled as
>> it is empty.

Please trim your replies - there is a lot of unrelated content here and
I don't know if I should keep scrolling to look for something or not.

Best regards,
Krzysztof
Caleb Connolly Jan. 20, 2023, 11:55 p.m. UTC | #3
On 20/01/2023 07:42, Krzysztof Kozlowski wrote:
> On 20/01/2023 00:24, Caleb Connolly wrote:
>>
>>
>> On 18/01/2023 10:34, Krzysztof Kozlowski wrote:
>>> Re-organize SDM845 sound components into separate, audio DTSI which
>>> should be included and customized by the SDM845 boards wanting audio.
>>> The DTSI includes:
>>> 1. WCD9340 codec node because it is not a property of the SoC, but board.
>>> 2. Common sound DAI links, shared with all sound cards.
>>
>> Hi Krzysztof,
>>
>> I know I already reported this on IRC, I thought I'd duplicate the info
>> here for completeness sake.
>>
>> Due to how the sound node is parsed the device numbers in alsa are
>> derived from the index of the sound/mmX-dai-link child nodes.
>>
>> For boards which use more than 3 FE's this causes breaking changes in
>> userspace, as the slim-dai-link and slimcap-dai-link nodes now come
>> before the other mmX-dai-link nodes, for example with my OnePlus 6
>> patches "aplay -l" shows:
>>
>> card 0: O6 [OnePlus 6], device 0: MultiMedia1 (*) []
>>   Subdevices: 1/1
>>   Subdevice #0: subdevice #0
>> card 0: O6 [OnePlus 6], device 1: MultiMedia2 (*) []
>>   Subdevices: 1/1
>>   Subdevice #0: subdevice #0
>> card 0: O6 [OnePlus 6], device 2: MultiMedia3 (*) []
>>   Subdevices: 1/1
>>   Subdevice #0: subdevice #0
>> card 0: O6 [OnePlus 6], device 5: MultiMedia4 (*) [] <-- 5 instead of 3
>>   Subdevices: 1/1
>>   Subdevice #0: subdevice #0
>> card 0: O6 [OnePlus 6], device 6: MultiMedia5 (*) []
>>   Subdevices: 1/1
>>   Subdevice #0: subdevice #0
>> card 0: O6 [OnePlus 6], device 7: MultiMedia6 (*) []
>>   Subdevices: 1/1
>>   Subdevice #0: subdevice #0
>>
>> This breaks the UCM configs shipped by postmarketOS and Mobian - though
>> none of it is "upstream".
> 
> Thanks for the report.
> 
> 
>>
>> Would it be reasonable to add all 6 FE DAI's and then disable the unused
>> ones on a per-board basis?
> 
> 
> Or just drop the sound node from the audio DTSI, not sure if there are
> benefits in such case...

That sounds reasonable to me. I'd be happy to rebase my OnePlus 6 patch
on this.
> 
>>
>>>
>>> The Xiaomi Polaris, although includes WCD9340 codec, it lacks sound
>>> node, so it stays disabled.
>>>
>>> On all others boards not using audio, keep the Slimbus node disabled as
>>> it is empty.
> 
> Please trim your replies - there is a lot of unrelated content here and
> I don't know if I should keep scrolling to look for something or not.

Will do, thanks for pointing that out.
> 
> Best regards,
> Krzysztof
>
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/qcom/sdm845-audio-wcd9340.dtsi b/arch/arm64/boot/dts/qcom/sdm845-audio-wcd9340.dtsi
new file mode 100644
index 000000000000..0a94fde6741d
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/sdm845-audio-wcd9340.dtsi
@@ -0,0 +1,125 @@ 
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * SDM845 SoC device tree source
+ *
+ * Copyright (c) 2018, The Linux Foundation. All rights reserved.
+ */
+
+&slim {
+	status = "okay";
+
+	slim@1 {
+		reg = <1>;
+		#address-cells = <2>;
+		#size-cells = <0>;
+
+		wcd9340_ifd: ifd@0,0 {
+			compatible = "slim217,250";
+			reg = <0 0>;
+		};
+
+		wcd9340: codec@1,0 {
+			compatible = "slim217,250";
+			reg = <1 0>;
+			slim-ifc-dev = <&wcd9340_ifd>;
+
+			#sound-dai-cells = <1>;
+
+			interrupts-extended = <&tlmm 54 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-controller;
+			#interrupt-cells = <1>;
+
+			#clock-cells = <0>;
+			clock-frequency = <9600000>;
+			clock-output-names = "mclk";
+			qcom,micbias1-microvolt = <1800000>;
+			qcom,micbias2-microvolt = <1800000>;
+			qcom,micbias3-microvolt = <1800000>;
+			qcom,micbias4-microvolt = <1800000>;
+
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			wcdgpio: gpio-controller@42 {
+				compatible = "qcom,wcd9340-gpio";
+				gpio-controller;
+				#gpio-cells = <2>;
+				reg = <0x42 0x2>;
+			};
+
+			swm: swm@c85 {
+				compatible = "qcom,soundwire-v1.3.0";
+				reg = <0xc85 0x40>;
+				interrupts-extended = <&wcd9340 20>;
+
+				qcom,dout-ports = <6>;
+				qcom,din-ports = <2>;
+				qcom,ports-sinterval-low = /bits/ 8  <0x07 0x1f 0x3f 0x7 0x1f 0x3f 0x0f 0x0f>;
+				qcom,ports-offset1 = /bits/ 8 <0x01 0x02 0x0c 0x6 0x12 0x0d 0x07 0x0a>;
+				qcom,ports-offset2 = /bits/ 8 <0x00 0x00 0x1f 0x00 0x00 0x1f 0x00 0x00>;
+
+				#sound-dai-cells = <1>;
+				clocks = <&wcd9340>;
+				clock-names = "iface";
+				#address-cells = <2>;
+				#size-cells = <0>;
+			};
+		};
+	};
+};
+
+&sound {
+	compatible = "qcom,sdm845-sndcard";
+	status = "disabled";
+
+	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>;
+		};
+	};
+
+	sound_slim_dai_link: slim-dai-link {
+		link-name = "SLIM Playback";
+		cpu {
+			sound-dai = <&q6afedai SLIMBUS_0_RX>;
+		};
+
+		platform {
+			sound-dai = <&q6routing>;
+		};
+
+		codec {
+			sound-dai = <&wcd9340 0>;
+		};
+	};
+
+	slimcap-dai-link {
+		link-name = "SLIM Capture";
+		cpu {
+			sound-dai = <&q6afedai SLIMBUS_0_TX>;
+		};
+
+		platform {
+			sound-dai = <&q6routing>;
+		};
+
+		codec {
+			sound-dai = <&wcd9340 1>;
+		};
+	};
+};
diff --git a/arch/arm64/boot/dts/qcom/sdm845-db845c.dts b/arch/arm64/boot/dts/qcom/sdm845-db845c.dts
index 4833e89affc2..11b0554a6aea 100644
--- a/arch/arm64/boot/dts/qcom/sdm845-db845c.dts
+++ b/arch/arm64/boot/dts/qcom/sdm845-db845c.dts
@@ -11,6 +11,7 @@ 
 #include <dt-bindings/sound/qcom,q6afe.h>
 #include <dt-bindings/sound/qcom,q6asm.h>
 #include "sdm845.dtsi"
+#include "sdm845-audio-wcd9340.dtsi"
 #include "pm8998.dtsi"
 #include "pmi8998.dtsi"
 
@@ -726,27 +727,7 @@  &quat_mi2s_sd2_active
 		"MM_DL2",  "MultiMedia2 Playback",
 		"MM_DL4",  "MultiMedia4 Playback",
 		"MultiMedia3 Capture", "MM_UL3";
-
-	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>;
-		};
-	};
+	status = "okay";
 
 	mm4-dai-link {
 		link-name = "MultiMedia4";
@@ -769,35 +750,11 @@  codec {
 			sound-dai = <&lt9611_codec 0>;
 		};
 	};
+};
 
-	slim-dai-link {
-		link-name = "SLIM Playback";
-		cpu {
-			sound-dai = <&q6afedai SLIMBUS_0_RX>;
-		};
-
-		platform {
-			sound-dai = <&q6routing>;
-		};
-
-		codec {
-			sound-dai = <&left_spkr>, <&right_spkr>, <&swm 0>, <&wcd9340 0>;
-		};
-	};
-
-	slimcap-dai-link {
-		link-name = "SLIM Capture";
-		cpu {
-			sound-dai = <&q6afedai SLIMBUS_0_TX>;
-		};
-
-		platform {
-			sound-dai = <&q6routing>;
-		};
-
-		codec {
-			sound-dai = <&wcd9340 1>;
-		};
+&sound_slim_dai_link {
+	codec {
+		sound-dai = <&left_spkr>, <&right_spkr>, <&swm 0>, <&wcd9340 0>;
 	};
 };
 
diff --git a/arch/arm64/boot/dts/qcom/sdm845-xiaomi-beryllium-common.dtsi b/arch/arm64/boot/dts/qcom/sdm845-xiaomi-beryllium-common.dtsi
index 5de8b4c372fc..54eabacdc031 100644
--- a/arch/arm64/boot/dts/qcom/sdm845-xiaomi-beryllium-common.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm845-xiaomi-beryllium-common.dtsi
@@ -7,6 +7,7 @@ 
 #include <dt-bindings/sound/qcom,q6afe.h>
 #include <dt-bindings/sound/qcom,q6asm.h>
 #include "sdm845.dtsi"
+#include "sdm845-audio-wcd9340.dtsi"
 #include "pm8998.dtsi"
 #include "pmi8998.dtsi"
 
@@ -384,57 +385,7 @@  &sound {
 		"AMIC1", "MIC BIAS1",
 		"AMIC2", "MIC BIAS2",
 		"AMIC3", "MIC BIAS3";
-
-	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>;
-		};
-	};
-
-	slim-dai-link {
-		link-name = "SLIM Playback";
-		cpu {
-			sound-dai = <&q6afedai SLIMBUS_0_RX>;
-		};
-
-		platform {
-			sound-dai = <&q6routing>;
-		};
-
-		codec {
-			sound-dai = <&wcd9340 0>;
-		};
-	};
-
-	slimcap-dai-link {
-		link-name = "SLIM Capture";
-		cpu {
-			sound-dai = <&q6afedai SLIMBUS_0_TX>;
-		};
-
-		platform {
-			sound-dai = <&q6routing>;
-		};
-
-		codec {
-			sound-dai = <&wcd9340 1>;
-		};
-	};
+	status = "okay";
 };
 
 &tlmm {
diff --git a/arch/arm64/boot/dts/qcom/sdm845-xiaomi-polaris.dts b/arch/arm64/boot/dts/qcom/sdm845-xiaomi-polaris.dts
index a80c3dd9a2da..f81619c8a3ba 100644
--- a/arch/arm64/boot/dts/qcom/sdm845-xiaomi-polaris.dts
+++ b/arch/arm64/boot/dts/qcom/sdm845-xiaomi-polaris.dts
@@ -13,6 +13,7 @@ 
 #include <dt-bindings/sound/qcom,q6afe.h>
 #include <dt-bindings/sound/qcom,q6asm.h>
 #include "sdm845.dtsi"
+#include "sdm845-audio-wcd9340.dtsi"
 #include "pm8998.dtsi"
 #include "pmi8998.dtsi"
 #include "pm8005.dtsi"
diff --git a/arch/arm64/boot/dts/qcom/sdm845.dtsi b/arch/arm64/boot/dts/qcom/sdm845.dtsi
index 0f1cb2c8addd..27d1917f5358 100644
--- a/arch/arm64/boot/dts/qcom/sdm845.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm845.dtsi
@@ -3831,65 +3831,7 @@  slim: slim-ngd@171c0000 {
 			iommus = <&apps_smmu 0x1806 0x0>;
 			#address-cells = <1>;
 			#size-cells = <0>;
-
-			slim@1 {
-				reg = <1>;
-				#address-cells = <2>;
-				#size-cells = <0>;
-
-				wcd9340_ifd: ifd@0,0 {
-					compatible = "slim217,250";
-					reg = <0 0>;
-				};
-
-				wcd9340: codec@1,0 {
-					compatible = "slim217,250";
-					reg = <1 0>;
-					slim-ifc-dev = <&wcd9340_ifd>;
-
-					#sound-dai-cells = <1>;
-
-					interrupts-extended = <&tlmm 54 IRQ_TYPE_LEVEL_HIGH>;
-					interrupt-controller;
-					#interrupt-cells = <1>;
-
-					#clock-cells = <0>;
-					clock-frequency = <9600000>;
-					clock-output-names = "mclk";
-					qcom,micbias1-microvolt = <1800000>;
-					qcom,micbias2-microvolt = <1800000>;
-					qcom,micbias3-microvolt = <1800000>;
-					qcom,micbias4-microvolt = <1800000>;
-
-					#address-cells = <1>;
-					#size-cells = <1>;
-
-					wcdgpio: gpio-controller@42 {
-						compatible = "qcom,wcd9340-gpio";
-						gpio-controller;
-						#gpio-cells = <2>;
-						reg = <0x42 0x2>;
-					};
-
-					swm: swm@c85 {
-						compatible = "qcom,soundwire-v1.3.0";
-						reg = <0xc85 0x40>;
-						interrupts-extended = <&wcd9340 20>;
-
-						qcom,dout-ports = <6>;
-						qcom,din-ports = <2>;
-						qcom,ports-sinterval-low = /bits/ 8  <0x07 0x1f 0x3f 0x7 0x1f 0x3f 0x0f 0x0f>;
-						qcom,ports-offset1 = /bits/ 8 <0x01 0x02 0x0c 0x6 0x12 0x0d 0x07 0x0a>;
-						qcom,ports-offset2 = /bits/ 8 <0x00 0x00 0x1f 0x00 0x00 0x1f 0x00 0x00>;
-
-						#sound-dai-cells = <1>;
-						clocks = <&wcd9340>;
-						clock-names = "iface";
-						#address-cells = <2>;
-						#size-cells = <0>;
-					};
-				};
-			};
+			status = "disabled";
 		};
 
 		lmh_cluster1: lmh@17d70800 {
diff --git a/arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts b/arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts
index d55ffd69155e..b979d8ae8698 100644
--- a/arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts
+++ b/arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts
@@ -13,6 +13,7 @@ 
 #include <dt-bindings/sound/qcom,q6afe.h>
 #include <dt-bindings/sound/qcom,q6asm.h>
 #include "sdm850.dtsi"
+#include "sdm845-audio-wcd9340.dtsi"
 #include "pm8998.dtsi"
 
 /*
@@ -522,57 +523,7 @@  &sound {
 		"MM_DL1",  "MultiMedia1 Playback",
 		"MM_DL3",  "MultiMedia3 Playback",
 		"MultiMedia2 Capture", "MM_UL2";
-
-	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>;
-		};
-	};
-
-	slim-dai-link {
-		link-name = "SLIM Playback";
-		cpu {
-			sound-dai = <&q6afedai SLIMBUS_0_RX>;
-		};
-
-		platform {
-			sound-dai = <&q6routing>;
-		};
-
-		codec {
-			sound-dai = <&left_spkr>, <&right_spkr>, <&swm 0>, <&wcd9340 0>;
-		};
-	};
-
-	slimcap-dai-link {
-		link-name = "SLIM Capture";
-		cpu {
-			sound-dai = <&q6afedai SLIMBUS_0_TX>;
-		};
-
-		platform {
-			sound-dai = <&q6routing>;
-		};
-
-		codec {
-			sound-dai = <&wcd9340 1>;
-		};
-	};
+	status = "okay";
 
 	slim-wcd-dai-link {
 		link-name = "SLIM WCD Playback";
@@ -590,6 +541,12 @@  codec {
 	};
 };
 
+&sound_slim_dai_link {
+	codec {
+		sound-dai = <&left_spkr>, <&right_spkr>, <&swm 0>, <&wcd9340 0>;
+	};
+};
+
 &tlmm {
 	gpio-reserved-ranges = <0 4>, <81 4>;
 
diff --git a/arch/arm64/boot/dts/qcom/sdm850-samsung-w737.dts b/arch/arm64/boot/dts/qcom/sdm850-samsung-w737.dts
index 6730804f4e3e..75773b06701b 100644
--- a/arch/arm64/boot/dts/qcom/sdm850-samsung-w737.dts
+++ b/arch/arm64/boot/dts/qcom/sdm850-samsung-w737.dts
@@ -14,6 +14,7 @@ 
 #include <dt-bindings/sound/qcom,q6afe.h>
 #include <dt-bindings/sound/qcom,q6asm.h>
 #include "sdm850.dtsi"
+#include "sdm845-audio-wcd9340.dtsi"
 #include "pm8998.dtsi"
 
 /*
@@ -436,7 +437,6 @@  dai@2 {
 };
 
 &sound {
-	compatible = "qcom,sdm845-sndcard";
 	model = "Samsung-W737";
 
 	audio-routing =
@@ -447,57 +447,7 @@  &sound {
 		"MM_DL1",  "MultiMedia1 Playback",
 		"MM_DL3",  "MultiMedia3 Playback",
 		"MultiMedia2 Capture", "MM_UL2";
-
-	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>;
-		};
-	};
-
-	slim-dai-link {
-		link-name = "SLIM Playback";
-		cpu {
-			sound-dai = <&q6afedai SLIMBUS_0_RX>;
-		};
-
-		platform {
-			sound-dai = <&q6routing>;
-		};
-
-		codec {
-			sound-dai = <&left_spkr>, <&right_spkr>, <&swm 0>, <&wcd9340 0>;
-		};
-	};
-
-	slimcap-dai-link {
-		link-name = "SLIM Capture";
-		cpu {
-			sound-dai = <&q6afedai SLIMBUS_0_TX>;
-		};
-
-		platform {
-			sound-dai = <&q6routing>;
-		};
-
-		codec {
-			sound-dai = <&wcd9340 1>;
-		};
-	};
+	status = "okay";
 
 	slim-wcd-dai-link {
 		link-name = "SLIM WCD Playback";
@@ -515,6 +465,12 @@  codec {
 	};
 };
 
+&sound_slim_dai_link {
+	codec {
+		sound-dai = <&left_spkr>, <&right_spkr>, <&swm 0>, <&wcd9340 0>;
+	};
+};
+
 &tlmm {
 	gpio-reserved-ranges = <0 6>, <85 4>;