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

Stephan Gerhold stephan at gerhold.net
Tue Feb 11 16:55:37 CET 2020


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 at linaro.org>
> Signed-off-by: Stephan Gerhold <stephan at 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 at alsa-project.org
> https://mailman.alsa-project.org/mailman/listinfo/alsa-devel


More information about the Alsa-devel mailing list