diff mbox series

[alsa-ucm-conf,2/7] DB410c: Split devices into re-usable fragments in codecs/msm8916-wcd

Message ID 20200114112110.51983-3-stephan@gerhold.net (mailing list archive)
State New, archived
Headers show
Series DB410c/msm8916-wcd UCM fixes/additions | expand

Commit Message

Stephan Gerhold Jan. 14, 2020, 11:21 a.m. UTC
The DB410c use case configuration is also useful for other MSM8916 devices.

However, the available devices usually depend on the exact device model.
For example, DB410c has nothing connected to the Earpiece,
most MSM8916 smartphones do not have a DigitalMic, and some use
a custom speaker amplifier (connected via I2S) instead of the
speaker amplifier provided by PM8916.

Similar differences across devices are handled using re-usable
device fragments in the codecs/ directory. Do the same for msm8916-wcd
and move the device fragments to codecs/msm8916-wcd.

Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
---
 ucm2/DB410c/HiFi.conf                     | 128 +---------------------
 ucm2/codecs/msm8916-wcd/DigitalMic.conf   |  12 ++
 ucm2/codecs/msm8916-wcd/Earpiece.conf     |   8 ++
 ucm2/codecs/msm8916-wcd/Headphones.conf   |  30 +++++
 ucm2/codecs/msm8916-wcd/HeadsetMic.conf   |  16 +++
 ucm2/codecs/msm8916-wcd/PrimaryMic.conf   |  14 +++
 ucm2/codecs/msm8916-wcd/SecondaryMic.conf |  16 +++
 ucm2/codecs/msm8916-wcd/Speaker.conf      |  20 ++++
 8 files changed, 122 insertions(+), 122 deletions(-)
 create mode 100644 ucm2/codecs/msm8916-wcd/DigitalMic.conf
 create mode 100644 ucm2/codecs/msm8916-wcd/Earpiece.conf
 create mode 100644 ucm2/codecs/msm8916-wcd/Headphones.conf
 create mode 100644 ucm2/codecs/msm8916-wcd/HeadsetMic.conf
 create mode 100644 ucm2/codecs/msm8916-wcd/PrimaryMic.conf
 create mode 100644 ucm2/codecs/msm8916-wcd/SecondaryMic.conf
 create mode 100644 ucm2/codecs/msm8916-wcd/Speaker.conf

Comments

Stephan Gerhold Feb. 11, 2020, 3:55 p.m. UTC | #1
Hi Jaroslav,

On Tue, Jan 14, 2020 at 12:21:05PM +0100, Stephan Gerhold wrote:
> The DB410c use case configuration is also useful for other MSM8916 devices.
> 
> However, the available devices usually depend on the exact device model.
> For example, DB410c has nothing connected to the Earpiece,
> most MSM8916 smartphones do not have a DigitalMic, and some use
> a custom speaker amplifier (connected via I2S) instead of the
> speaker amplifier provided by PM8916.
> 
> Similar differences across devices are handled using re-usable
> device fragments in the codecs/ directory. Do the same for msm8916-wcd
> and move the device fragments to codecs/msm8916-wcd.

I'm trying to rebase this patch series on top of master after the
"corrections and fixes" commits you did a few days ago.

Unfortunately one change made there breaks an assumption required for
this patch: in DB410c/HiFi.conf PlaybackPCM/CapturePCM used to be
defined globally like:

	SectionVerb {
		Value {
			# ALSA PCM device for HiFi
			PlaybackPCM "plughw:${CardId},1"
			CapturePCM "plughw:${CardId},2"
		}
	}

	<codecs/msm8916-wcd/Speaker.conf>
	/* ... */

Now it is defined separately for each SectionDevice.
This means I would need to put one specific PlaybackPCM/CapturePCM
into the device fragments added in this patch.

e.g. ucm2/codecs/msm8916-wcd/Speaker.conf would now contain

	SectionDevice."Speaker" {
		/* ... */
		Value {
			PlaybackPCM "plughw:${CardId},1"
		}
	}

This does not work properly in my case because the numbering differs
depending on which board the UCM configuration is used.

DB410c has HDMI at index 0, playback at 1 and capture at 2.
My other MSM8916 boards do not have HDMI audio, so playback is index 0
and capture is index 1.

This used to work fine because I simply had a different HiFi.conf,
e.g. msm8916-samsung-a2015/HiFi.conf looked like

	SectionVerb {
		Value {
			PlaybackPCM "plughw:${CardId},0"
			CapturePCM "plughw:${CardId},1"
		}
	}

	<codecs/msm8916-wcd/Speaker.conf>
	/* ... */

(Note the different numbers compared to DB410c/HiFi.conf above...)

Do you have any suggestions how to handle this now?

Thanks,
Stephan

> 
> Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
> Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
> ---
>  ucm2/DB410c/HiFi.conf                     | 128 +---------------------
>  ucm2/codecs/msm8916-wcd/DigitalMic.conf   |  12 ++
>  ucm2/codecs/msm8916-wcd/Earpiece.conf     |   8 ++
>  ucm2/codecs/msm8916-wcd/Headphones.conf   |  30 +++++
>  ucm2/codecs/msm8916-wcd/HeadsetMic.conf   |  16 +++
>  ucm2/codecs/msm8916-wcd/PrimaryMic.conf   |  14 +++
>  ucm2/codecs/msm8916-wcd/SecondaryMic.conf |  16 +++
>  ucm2/codecs/msm8916-wcd/Speaker.conf      |  20 ++++
>  8 files changed, 122 insertions(+), 122 deletions(-)
>  create mode 100644 ucm2/codecs/msm8916-wcd/DigitalMic.conf
>  create mode 100644 ucm2/codecs/msm8916-wcd/Earpiece.conf
>  create mode 100644 ucm2/codecs/msm8916-wcd/Headphones.conf
>  create mode 100644 ucm2/codecs/msm8916-wcd/HeadsetMic.conf
>  create mode 100644 ucm2/codecs/msm8916-wcd/PrimaryMic.conf
>  create mode 100644 ucm2/codecs/msm8916-wcd/SecondaryMic.conf
>  create mode 100644 ucm2/codecs/msm8916-wcd/Speaker.conf
> 
> diff --git a/ucm2/DB410c/HiFi.conf b/ucm2/DB410c/HiFi.conf
> index a0ef42c..4b82fbf 100644
> --- a/ucm2/DB410c/HiFi.conf
> +++ b/ucm2/DB410c/HiFi.conf
> @@ -13,126 +13,10 @@ SectionVerb {
>  	}
>  }
>  
> +<codecs/msm8916-wcd/Speaker.conf>
> +<codecs/msm8916-wcd/Headphones.conf>
>  
> -SectionDevice."Speaker" {
> -	Comment "Speaker playback"
> -
> -	ConflictingDevice [
> -		"Headphones"
> -		"Earpiece"
> -	]
> -
> -	EnableSequence [
> -		cset "name='SPK DAC Switch' 1"
> -		cset "name='RX3 MIX1 INP1' RX1"
> -		## gain to  0dB
> -		cset "name='RX3 Digital Volume' 128"
> -	]
> -
> -	DisableSequence [
> -		cset "name='SPK DAC Switch' 0"
> -		cset "name='RX3 MIX1 INP1' ZERO"
> -	]
> -}
> -
> -
> -SectionDevice."Headphones" {
> -	Comment "Headphones playback"
> -
> -	ConflictingDevice [
> -		"Speaker"
> -		"Earpiece"
> -	]
> -	EnableSequence [
> -		cset "name='RX1 MIX1 INP1' RX1"
> -		cset "name='RX2 MIX1 INP1' RX2"
> -		cset "name='RDAC2 MUX' RX2"
> -		cset "name='HPHL' 1"
> -		cset "name='HPHR' 1"
> -		## gain to  0dB
> -		cset "name='RX1 Digital Volume' 128"
> -		## gain to  0dB
> -		cset "name='RX2 Digital Volume' 128"
> -	]
> -
> -	DisableSequence [
> -		cset "name='RX1 Digital Volume' 0"
> -		cset "name='RX2 Digital Volume' 0"
> -		cset "name='HPHL' 0"
> -		cset "name='HPHR' 0"
> -		cset "name='RDAC2 MUX' ZERO"
> -		cset "name='RX1 MIX1 INP1' ZERO"
> -		cset "name='RX2 MIX1 INP1' ZERO"
> -	]
> -}
> -
> -SectionDevice."Earpiece" {
> -	Comment "Earpiece playback"
> -
> -	ConflictingDevice [
> -		"Speaker"
> -		"Headphones"
> -	]
> -}
> -
> -SectionDevice."HeadsetMic" {
> -	Comment "Headset Microphone"
> -
> -	EnableSequence [
> -		cset "name='DEC1 MUX' ADC2"
> -		cset "name='CIC1 MUX' AMIC"
> -		cset "name='ADC2 Volume' 8"
> -		cset "name='ADC2 MUX' INP2"
> -	]
> -
> -	DisableSequence [
> -		cset "name='ADC2 MUX' ZERO"
> -		cset "name='ADC2 Volume' 0"
> -		cset "name='DEC1 MUX' ZERO"
> -	]
> -}
> -
> -SectionDevice."PrimaryMic" {
> -	Comment "Primary Microphone"
> -
> -	EnableSequence [
> -		cset "name='DEC1 MUX' ADC1"
> -		cset "name='CIC1 MUX' AMIC"
> -		cset "name='ADC1 Volume' 8"
> -	]
> -
> -	DisableSequence [
> -		cset "name='DEC1 MUX' ZERO"
> -		cset "name='ADC1 Volume' 0"
> -	]
> -}
> -
> -SectionDevice."SecondaryMic" {
> -	Comment "Secondary Microphone"
> -
> -	EnableSequence [
> -		cset "name='DEC1 MUX' ADC2"
> -		cset "name='CIC1 MUX' AMIC"
> -		cset "name='ADC2 Volume' 8"
> -		cset "name='ADC2 MUX' INP2"
> -	]
> -
> -	DisableSequence [
> -		cset "name='DEC1 MUX' ZERO"
> -		cset "name='ADC2 Volume' 0"
> -		cset "name='ADC2 MUX' ZERO"
> -	]
> -}
> -
> -SectionDevice."DigitalMic" {
> -	Comment "Digital Microphone"
> -
> -	EnableSequence [
> -		cset "name='DEC1 MUX' DMIC1"
> -		cset "name='CIC1 MUX' DMIC"
> -	]
> -
> -	DisableSequence [
> -		cset "name='DEC1 MUX' ZERO"
> -	]
> -}
> +<codecs/msm8916-wcd/PrimaryMic.conf>
> +<codecs/msm8916-wcd/HeadsetMic.conf>
> +<codecs/msm8916-wcd/SecondaryMic.conf>
> +<codecs/msm8916-wcd/DigitalMic.conf>
> diff --git a/ucm2/codecs/msm8916-wcd/DigitalMic.conf b/ucm2/codecs/msm8916-wcd/DigitalMic.conf
> new file mode 100644
> index 0000000..35dfb1b
> --- /dev/null
> +++ b/ucm2/codecs/msm8916-wcd/DigitalMic.conf
> @@ -0,0 +1,12 @@
> +SectionDevice."DigitalMic" {
> +	Comment "Digital Microphone"
> +
> +	EnableSequence [
> +		cset "name='DEC1 MUX' DMIC1"
> +		cset "name='CIC1 MUX' DMIC"
> +	]
> +
> +	DisableSequence [
> +		cset "name='DEC1 MUX' ZERO"
> +	]
> +}
> diff --git a/ucm2/codecs/msm8916-wcd/Earpiece.conf b/ucm2/codecs/msm8916-wcd/Earpiece.conf
> new file mode 100644
> index 0000000..e9f8b9d
> --- /dev/null
> +++ b/ucm2/codecs/msm8916-wcd/Earpiece.conf
> @@ -0,0 +1,8 @@
> +SectionDevice."Earpiece" {
> +	Comment "Earpiece playback"
> +
> +	ConflictingDevice [
> +		"Speaker"
> +		"Headphones"
> +	]
> +}
> diff --git a/ucm2/codecs/msm8916-wcd/Headphones.conf b/ucm2/codecs/msm8916-wcd/Headphones.conf
> new file mode 100644
> index 0000000..7a2090e
> --- /dev/null
> +++ b/ucm2/codecs/msm8916-wcd/Headphones.conf
> @@ -0,0 +1,30 @@
> +SectionDevice."Headphones" {
> +	Comment "Headphones playback"
> +
> +	ConflictingDevice [
> +		"Speaker"
> +		"Earpiece"
> +	]
> +
> +	EnableSequence [
> +		cset "name='RX1 MIX1 INP1' RX1"
> +		cset "name='RX2 MIX1 INP1' RX2"
> +		cset "name='RDAC2 MUX' RX2"
> +		cset "name='HPHL' 1"
> +		cset "name='HPHR' 1"
> +		## gain to  0dB
> +		cset "name='RX1 Digital Volume' 128"
> +		## gain to  0dB
> +		cset "name='RX2 Digital Volume' 128"
> +	]
> +
> +	DisableSequence [
> +		cset "name='RX1 Digital Volume' 0"
> +		cset "name='RX2 Digital Volume' 0"
> +		cset "name='HPHL' 0"
> +		cset "name='HPHR' 0"
> +		cset "name='RDAC2 MUX' ZERO"
> +		cset "name='RX1 MIX1 INP1' ZERO"
> +		cset "name='RX2 MIX1 INP1' ZERO"
> +	]
> +}
> diff --git a/ucm2/codecs/msm8916-wcd/HeadsetMic.conf b/ucm2/codecs/msm8916-wcd/HeadsetMic.conf
> new file mode 100644
> index 0000000..538d895
> --- /dev/null
> +++ b/ucm2/codecs/msm8916-wcd/HeadsetMic.conf
> @@ -0,0 +1,16 @@
> +SectionDevice."HeadsetMic" {
> +	Comment "Headset Microphone"
> +
> +	EnableSequence [
> +		cset "name='DEC1 MUX' ADC2"
> +		cset "name='CIC1 MUX' AMIC"
> +		cset "name='ADC2 Volume' 8"
> +		cset "name='ADC2 MUX' INP2"
> +	]
> +
> +	DisableSequence [
> +		cset "name='ADC2 MUX' ZERO"
> +		cset "name='ADC2 Volume' 0"
> +		cset "name='DEC1 MUX' ZERO"
> +	]
> +}
> diff --git a/ucm2/codecs/msm8916-wcd/PrimaryMic.conf b/ucm2/codecs/msm8916-wcd/PrimaryMic.conf
> new file mode 100644
> index 0000000..6998458
> --- /dev/null
> +++ b/ucm2/codecs/msm8916-wcd/PrimaryMic.conf
> @@ -0,0 +1,14 @@
> +SectionDevice."PrimaryMic" {
> +	Comment "Primary Microphone"
> +
> +	EnableSequence [
> +		cset "name='DEC1 MUX' ADC1"
> +		cset "name='CIC1 MUX' AMIC"
> +		cset "name='ADC1 Volume' 8"
> +	]
> +
> +	DisableSequence [
> +		cset "name='DEC1 MUX' ZERO"
> +		cset "name='ADC1 Volume' 0"
> +	]
> +}
> diff --git a/ucm2/codecs/msm8916-wcd/SecondaryMic.conf b/ucm2/codecs/msm8916-wcd/SecondaryMic.conf
> new file mode 100644
> index 0000000..7811509
> --- /dev/null
> +++ b/ucm2/codecs/msm8916-wcd/SecondaryMic.conf
> @@ -0,0 +1,16 @@
> +SectionDevice."SecondaryMic" {
> +	Comment "Secondary Microphone"
> +
> +	EnableSequence [
> +		cset "name='DEC1 MUX' ADC2"
> +		cset "name='CIC1 MUX' AMIC"
> +		cset "name='ADC2 Volume' 8"
> +		cset "name='ADC2 MUX' INP2"
> +	]
> +
> +	DisableSequence [
> +		cset "name='DEC1 MUX' ZERO"
> +		cset "name='ADC2 Volume' 0"
> +		cset "name='ADC2 MUX' ZERO"
> +	]
> +}
> diff --git a/ucm2/codecs/msm8916-wcd/Speaker.conf b/ucm2/codecs/msm8916-wcd/Speaker.conf
> new file mode 100644
> index 0000000..2b1dd8a
> --- /dev/null
> +++ b/ucm2/codecs/msm8916-wcd/Speaker.conf
> @@ -0,0 +1,20 @@
> +SectionDevice."Speaker" {
> +	Comment "Speaker playback"
> +
> +	ConflictingDevice [
> +		"Headphones"
> +		"Earpiece"
> +	]
> +
> +	EnableSequence [
> +		cset "name='SPK DAC Switch' 1"
> +		cset "name='RX3 MIX1 INP1' RX1"
> +		## gain to  0dB
> +		cset "name='RX3 Digital Volume' 128"
> +	]
> +
> +	DisableSequence [
> +		cset "name='SPK DAC Switch' 0"
> +		cset "name='RX3 MIX1 INP1' ZERO"
> +	]
> +}
> -- 
> 2.24.1
> 
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> https://mailman.alsa-project.org/mailman/listinfo/alsa-devel
diff mbox series

Patch

diff --git a/ucm2/DB410c/HiFi.conf b/ucm2/DB410c/HiFi.conf
index a0ef42c..4b82fbf 100644
--- a/ucm2/DB410c/HiFi.conf
+++ b/ucm2/DB410c/HiFi.conf
@@ -13,126 +13,10 @@  SectionVerb {
 	}
 }
 
+<codecs/msm8916-wcd/Speaker.conf>
+<codecs/msm8916-wcd/Headphones.conf>
 
-SectionDevice."Speaker" {
-	Comment "Speaker playback"
-
-	ConflictingDevice [
-		"Headphones"
-		"Earpiece"
-	]
-
-	EnableSequence [
-		cset "name='SPK DAC Switch' 1"
-		cset "name='RX3 MIX1 INP1' RX1"
-		## gain to  0dB
-		cset "name='RX3 Digital Volume' 128"
-	]
-
-	DisableSequence [
-		cset "name='SPK DAC Switch' 0"
-		cset "name='RX3 MIX1 INP1' ZERO"
-	]
-}
-
-
-SectionDevice."Headphones" {
-	Comment "Headphones playback"
-
-	ConflictingDevice [
-		"Speaker"
-		"Earpiece"
-	]
-	EnableSequence [
-		cset "name='RX1 MIX1 INP1' RX1"
-		cset "name='RX2 MIX1 INP1' RX2"
-		cset "name='RDAC2 MUX' RX2"
-		cset "name='HPHL' 1"
-		cset "name='HPHR' 1"
-		## gain to  0dB
-		cset "name='RX1 Digital Volume' 128"
-		## gain to  0dB
-		cset "name='RX2 Digital Volume' 128"
-	]
-
-	DisableSequence [
-		cset "name='RX1 Digital Volume' 0"
-		cset "name='RX2 Digital Volume' 0"
-		cset "name='HPHL' 0"
-		cset "name='HPHR' 0"
-		cset "name='RDAC2 MUX' ZERO"
-		cset "name='RX1 MIX1 INP1' ZERO"
-		cset "name='RX2 MIX1 INP1' ZERO"
-	]
-}
-
-SectionDevice."Earpiece" {
-	Comment "Earpiece playback"
-
-	ConflictingDevice [
-		"Speaker"
-		"Headphones"
-	]
-}
-
-SectionDevice."HeadsetMic" {
-	Comment "Headset Microphone"
-
-	EnableSequence [
-		cset "name='DEC1 MUX' ADC2"
-		cset "name='CIC1 MUX' AMIC"
-		cset "name='ADC2 Volume' 8"
-		cset "name='ADC2 MUX' INP2"
-	]
-
-	DisableSequence [
-		cset "name='ADC2 MUX' ZERO"
-		cset "name='ADC2 Volume' 0"
-		cset "name='DEC1 MUX' ZERO"
-	]
-}
-
-SectionDevice."PrimaryMic" {
-	Comment "Primary Microphone"
-
-	EnableSequence [
-		cset "name='DEC1 MUX' ADC1"
-		cset "name='CIC1 MUX' AMIC"
-		cset "name='ADC1 Volume' 8"
-	]
-
-	DisableSequence [
-		cset "name='DEC1 MUX' ZERO"
-		cset "name='ADC1 Volume' 0"
-	]
-}
-
-SectionDevice."SecondaryMic" {
-	Comment "Secondary Microphone"
-
-	EnableSequence [
-		cset "name='DEC1 MUX' ADC2"
-		cset "name='CIC1 MUX' AMIC"
-		cset "name='ADC2 Volume' 8"
-		cset "name='ADC2 MUX' INP2"
-	]
-
-	DisableSequence [
-		cset "name='DEC1 MUX' ZERO"
-		cset "name='ADC2 Volume' 0"
-		cset "name='ADC2 MUX' ZERO"
-	]
-}
-
-SectionDevice."DigitalMic" {
-	Comment "Digital Microphone"
-
-	EnableSequence [
-		cset "name='DEC1 MUX' DMIC1"
-		cset "name='CIC1 MUX' DMIC"
-	]
-
-	DisableSequence [
-		cset "name='DEC1 MUX' ZERO"
-	]
-}
+<codecs/msm8916-wcd/PrimaryMic.conf>
+<codecs/msm8916-wcd/HeadsetMic.conf>
+<codecs/msm8916-wcd/SecondaryMic.conf>
+<codecs/msm8916-wcd/DigitalMic.conf>
diff --git a/ucm2/codecs/msm8916-wcd/DigitalMic.conf b/ucm2/codecs/msm8916-wcd/DigitalMic.conf
new file mode 100644
index 0000000..35dfb1b
--- /dev/null
+++ b/ucm2/codecs/msm8916-wcd/DigitalMic.conf
@@ -0,0 +1,12 @@ 
+SectionDevice."DigitalMic" {
+	Comment "Digital Microphone"
+
+	EnableSequence [
+		cset "name='DEC1 MUX' DMIC1"
+		cset "name='CIC1 MUX' DMIC"
+	]
+
+	DisableSequence [
+		cset "name='DEC1 MUX' ZERO"
+	]
+}
diff --git a/ucm2/codecs/msm8916-wcd/Earpiece.conf b/ucm2/codecs/msm8916-wcd/Earpiece.conf
new file mode 100644
index 0000000..e9f8b9d
--- /dev/null
+++ b/ucm2/codecs/msm8916-wcd/Earpiece.conf
@@ -0,0 +1,8 @@ 
+SectionDevice."Earpiece" {
+	Comment "Earpiece playback"
+
+	ConflictingDevice [
+		"Speaker"
+		"Headphones"
+	]
+}
diff --git a/ucm2/codecs/msm8916-wcd/Headphones.conf b/ucm2/codecs/msm8916-wcd/Headphones.conf
new file mode 100644
index 0000000..7a2090e
--- /dev/null
+++ b/ucm2/codecs/msm8916-wcd/Headphones.conf
@@ -0,0 +1,30 @@ 
+SectionDevice."Headphones" {
+	Comment "Headphones playback"
+
+	ConflictingDevice [
+		"Speaker"
+		"Earpiece"
+	]
+
+	EnableSequence [
+		cset "name='RX1 MIX1 INP1' RX1"
+		cset "name='RX2 MIX1 INP1' RX2"
+		cset "name='RDAC2 MUX' RX2"
+		cset "name='HPHL' 1"
+		cset "name='HPHR' 1"
+		## gain to  0dB
+		cset "name='RX1 Digital Volume' 128"
+		## gain to  0dB
+		cset "name='RX2 Digital Volume' 128"
+	]
+
+	DisableSequence [
+		cset "name='RX1 Digital Volume' 0"
+		cset "name='RX2 Digital Volume' 0"
+		cset "name='HPHL' 0"
+		cset "name='HPHR' 0"
+		cset "name='RDAC2 MUX' ZERO"
+		cset "name='RX1 MIX1 INP1' ZERO"
+		cset "name='RX2 MIX1 INP1' ZERO"
+	]
+}
diff --git a/ucm2/codecs/msm8916-wcd/HeadsetMic.conf b/ucm2/codecs/msm8916-wcd/HeadsetMic.conf
new file mode 100644
index 0000000..538d895
--- /dev/null
+++ b/ucm2/codecs/msm8916-wcd/HeadsetMic.conf
@@ -0,0 +1,16 @@ 
+SectionDevice."HeadsetMic" {
+	Comment "Headset Microphone"
+
+	EnableSequence [
+		cset "name='DEC1 MUX' ADC2"
+		cset "name='CIC1 MUX' AMIC"
+		cset "name='ADC2 Volume' 8"
+		cset "name='ADC2 MUX' INP2"
+	]
+
+	DisableSequence [
+		cset "name='ADC2 MUX' ZERO"
+		cset "name='ADC2 Volume' 0"
+		cset "name='DEC1 MUX' ZERO"
+	]
+}
diff --git a/ucm2/codecs/msm8916-wcd/PrimaryMic.conf b/ucm2/codecs/msm8916-wcd/PrimaryMic.conf
new file mode 100644
index 0000000..6998458
--- /dev/null
+++ b/ucm2/codecs/msm8916-wcd/PrimaryMic.conf
@@ -0,0 +1,14 @@ 
+SectionDevice."PrimaryMic" {
+	Comment "Primary Microphone"
+
+	EnableSequence [
+		cset "name='DEC1 MUX' ADC1"
+		cset "name='CIC1 MUX' AMIC"
+		cset "name='ADC1 Volume' 8"
+	]
+
+	DisableSequence [
+		cset "name='DEC1 MUX' ZERO"
+		cset "name='ADC1 Volume' 0"
+	]
+}
diff --git a/ucm2/codecs/msm8916-wcd/SecondaryMic.conf b/ucm2/codecs/msm8916-wcd/SecondaryMic.conf
new file mode 100644
index 0000000..7811509
--- /dev/null
+++ b/ucm2/codecs/msm8916-wcd/SecondaryMic.conf
@@ -0,0 +1,16 @@ 
+SectionDevice."SecondaryMic" {
+	Comment "Secondary Microphone"
+
+	EnableSequence [
+		cset "name='DEC1 MUX' ADC2"
+		cset "name='CIC1 MUX' AMIC"
+		cset "name='ADC2 Volume' 8"
+		cset "name='ADC2 MUX' INP2"
+	]
+
+	DisableSequence [
+		cset "name='DEC1 MUX' ZERO"
+		cset "name='ADC2 Volume' 0"
+		cset "name='ADC2 MUX' ZERO"
+	]
+}
diff --git a/ucm2/codecs/msm8916-wcd/Speaker.conf b/ucm2/codecs/msm8916-wcd/Speaker.conf
new file mode 100644
index 0000000..2b1dd8a
--- /dev/null
+++ b/ucm2/codecs/msm8916-wcd/Speaker.conf
@@ -0,0 +1,20 @@ 
+SectionDevice."Speaker" {
+	Comment "Speaker playback"
+
+	ConflictingDevice [
+		"Headphones"
+		"Earpiece"
+	]
+
+	EnableSequence [
+		cset "name='SPK DAC Switch' 1"
+		cset "name='RX3 MIX1 INP1' RX1"
+		## gain to  0dB
+		cset "name='RX3 Digital Volume' 128"
+	]
+
+	DisableSequence [
+		cset "name='SPK DAC Switch' 0"
+		cset "name='RX3 MIX1 INP1' ZERO"
+	]
+}