Package: alsa-ucm-conf Version: 1.2.4-2 Severity: wishlist Tags: patch upstream X-Debbugs-Cc: Arnaud Ferraris <arnaud.ferra...@collabora.com>
Hello. Please apply the attached changes by Arnaud Ferraris. They have been applied and tested by the Mobian distribution for a few months. The Pinephone part is forwarded to ALSA upstream (though currently waiting for approval, so no Forwarded: URL yet). The PineTab part is not forwarded. Upstream requires the output of alsa-info executed on the actual hardware. The Librem5 part is incomplete but useful nevertheless. Thanks.
>From 997a22545f3df75c3c1b6cae49f0a4cccbb5d266 Mon Sep 17 00:00:00 2001 From: Arnaud Ferraris <arnaud.ferra...@collabora.com> Date: Tue, 12 May 2020 09:43:51 +0200 Subject: [PATCH 1/2] ucm2: add PinePhone configuration --- ucm2/PinePhone/HiFi.conf | 139 +++++++++++++++++++++++++++++++++ ucm2/PinePhone/PinePhone.conf | 11 +++ ucm2/PinePhone/VoiceCall.conf | 142 ++++++++++++++++++++++++++++++++++ 3 files changed, 292 insertions(+) create mode 100644 ucm2/PinePhone/HiFi.conf create mode 100644 ucm2/PinePhone/PinePhone.conf create mode 100644 ucm2/PinePhone/VoiceCall.conf diff --git a/ucm2/PinePhone/HiFi.conf b/ucm2/PinePhone/HiFi.conf new file mode 100644 index 0000000..a6a1cf8 --- /dev/null +++ b/ucm2/PinePhone/HiFi.conf @@ -0,0 +1,137 @@ +SectionVerb { + EnableSequence [ + cset "name='Headphone Playback Switch' off" + cset "name='Headphone Source Playback Route' DAC" + cset "name='Line In Playback Switch' off" + cset "name='Line Out Playback Switch' off" + cset "name='Line Out Source Playback Route' Mono Differential" + cset "name='Mic1 Playback Switch' off" + cset "name='Mic2 Playback Switch' off" + cset "name='AIF1 DA0 Playback Volume' 160" + cset "name='AIF3 ADC Source Capture Route' None" + cset "name='AIF2 DAC Source Playback Route' AIF2" + cset "name='DAC Playback Switch' on" + cset "name='DAC Playback Volume' 160" + cset "name='ADC Digital DAC Playback Switch' off" + cset "name='AIF1 Slot 0 Digital DAC Playback Switch' on" + cset "name='AIF2 Digital DAC Playback Switch' off" + cset "name='DAC Reversed Playback Switch' off" + cset "name='Earpiece Playback Switch' off" + cset "name='Earpiece Source Playback Route' DACL" + + cset "name='Line In Capture Switch' off" + cset "name='Mic1 Capture Switch' off" + cset "name='Mic2 Capture Switch' off" + cset "name='Mixer Capture Switch' off" + cset "name='Mixer Reversed Capture Switch' off" + cset "name='ADC Capture Volume' 160" + cset "name='AIF1 AD0 Capture Volume' 160" + cset "name='AIF1 Data Digital ADC Capture Switch' on" + cset "name='AIF2 ADC Mixer ADC Capture Switch' off" + cset "name='AIF2 ADC Mixer AIF1 DA0 Capture Switch' off" + cset "name='AIF2 ADC Mixer AIF2 DAC Rev Capture Switch' off" + cset "name='AIF2 ADC Mixer AIF1 DA0 Capture Switch' off" + cset "name='AIF2 ADC Mixer AIF1 DA0 Capture Switch' off" + ] + DisableSequence [ + ] + Value { + } +} + +SectionDevice."Speaker" { + Comment "Internal speaker" + EnableSequence [ + cset "name='AIF1 DA0 Stereo Playback Route' Mix Mono" + cset "name='Line Out Playback Switch' on" + cset "name='Line Out Playback Volume' 100%" + ] + + DisableSequence [ + cset "name='Line Out Playback Switch' off" + ] + + Value { + PlaybackVolume "Line Out Playback Volume" + PlaybackSwitch "Line Out Playback Switch" + PlaybackChannels "2" + PlaybackPriority 300 + PlaybackPCM "hw:${CardId},0" + } +} +SectionDevice."Earpiece" { + Comment "Internal Earpiece" + EnableSequence [ + cset "name='AIF1 DA0 Stereo Playback Route' Mix Mono" + cset "name='Earpiece Playback Switch' on" + cset "name='Earpiece Playback Volume' 100%" + ] + + DisableSequence [ + cset "name='Earpiece Playback Switch' off" + ] + + Value { + PlaybackVolume "Earpiece Playback Volume" + PlaybackSwitch "Earpiece Playback Switch" + PlaybackChannels "2" + PlaybackPriority 100 + PlaybackPCM "hw:${CardId},0" + } +} +SectionDevice."DigitalMic" { + Comment "Internal Microphone" + ConflictingDevice [ + "HeadsetMic" + ] + EnableSequence [ + cset "name='Mic1 Capture Switch' on" + ] + DisableSequence [ + cset "name='Mic1 Capture Switch' off" + ] + Value { + CapturePriority 100 + CapturePCM "hw:${CardId},0" + CaptureChannels "2" + } +} +SectionDevice."HeadsetMic" { + Comment "Headset Microphone" + ConflictingDevice [ + "DigitalMic" + ] + EnableSequence [ + cset "name='Mic2 Capture Switch' on" + ] + DisableSequence [ + cset "name='Mic2 Capture Switch' off" + ] + Value { + CapturePriority 200 + CapturePCM "hw:${CardId},0" + CaptureChannels "2" + JackControl "Headset Microphone Jack" + } +} +SectionDevice."Headphone" { + Comment "Headphones" + EnableSequence [ + cset "name='AIF1 DA0 Stereo Playback Route' Stereo" + cset "name='Headphone Playback Switch' on" + cset "name='Headphone Playback Volume' 100%" + ] + + DisableSequence [ + cset "name='Headphone Playback Switch' off" + ] + + Value { + PlaybackVolume "Headphone Playback Volume" + PlaybackSwitch "Headphone Playback Switch" + PlaybackChannels "2" + PlaybackPriority 500 + PlaybackPCM "hw:${CardId},0" + JackControl "Headphone Jack" + } +} diff --git a/ucm2/PinePhone/PinePhone.conf b/ucm2/PinePhone/PinePhone.conf new file mode 100644 index 0000000..3741216 --- /dev/null +++ b/ucm2/PinePhone/PinePhone.conf @@ -0,0 +1,11 @@ +Syntax 2 + +SectionUseCase."HiFi" { + File "HiFi.conf" + Comment "Default" +} + +SectionUseCase."Voice Call" { + File "VoiceCall.conf" + Comment "Phone call" +} diff --git a/ucm2/PinePhone/VoiceCall.conf b/ucm2/PinePhone/VoiceCall.conf new file mode 100644 index 0000000..bc37975 --- /dev/null +++ b/ucm2/PinePhone/VoiceCall.conf @@ -0,0 +1,141 @@ +SectionVerb { + EnableSequence [ + cset "name='Headphone Playback Switch' off" + cset "name='Headphone Source Playback Route' DAC" + cset "name='Line In Playback Switch' off" + cset "name='Line Out Playback Switch' off" + cset "name='Line Out Source Playback Route' Mono Differential" + cset "name='Mic1 Playback Switch' off" + cset "name='Mic2 Playback Switch' off" + cset "name='AIF1 DA0 Playback Volume' 160" + cset "name='AIF2 DAC Playback Volume' 160" + cset "name='AIF2 DAC Stereo Playback Route' Mix Mono" + cset "name='AIF3 ADC Source Capture Route' None" + cset "name='AIF2 DAC Source Playback Route' AIF2" + cset "name='DAC Playback Switch' on" + cset "name='DAC Playback Volume' 160" + cset "name='ADC Digital DAC Playback Switch' off" + cset "name='AIF1 Slot 0 Digital DAC Playback Switch' on" + cset "name='AIF2 Digital DAC Playback Switch' on" + cset "name='DAC Reversed Playback Switch' off" + cset "name='Earpiece Playback Switch' off" + cset "name='Earpiece Source Playback Route' DACL" + + cset "name='Line In Capture Switch' off" + cset "name='Mic1 Capture Switch' off" + cset "name='Mic2 Capture Switch' off" + cset "name='Mixer Capture Switch' off" + cset "name='Mixer Reversed Capture Switch' off" + cset "name='ADC Capture Volume' 160" + cset "name='AIF1 AD0 Capture Volume' 160" + cset "name='AIF1 Data Digital ADC Capture Switch' on" + cset "name='AIF2 ADC Capture Volume' 160" + cset "name='AIF2 ADC Mixer ADC Capture Switch' on" + cset "name='AIF2 ADC Mixer AIF1 DA0 Capture Switch' off" + cset "name='AIF2 ADC Mixer AIF2 DAC Rev Capture Switch' off" + cset "name='AIF2 ADC Mixer AIF1 DA0 Capture Switch' off" + cset "name='AIF2 ADC Mixer AIF1 DA0 Capture Switch' off" + ] + DisableSequence [ + ] + Value { + PlaybackRate 8000 + } +} + +SectionDevice."Speaker" { + Comment "Internal speaker" + EnableSequence [ + cset "name='AIF1 DA0 Stereo Playback Route' Mix Mono" + cset "name='Line Out Playback Switch' on" + cset "name='Line Out Playback Volume' 100%" + ] + + DisableSequence [ + cset "name='Line Out Playback Switch' off" + ] + + Value { + PlaybackVolume "Line Out Playback Volume" + PlaybackSwitch "Line Out Playback Switch" + PlaybackChannels "2" + PlaybackPriority 100 + PlaybackPCM "hw:${CardId},0" + } +} +SectionDevice."Earpiece" { + Comment "Internal Earpiece" + EnableSequence [ + cset "name='AIF1 DA0 Stereo Playback Route' Mix Mono" + cset "name='Earpiece Playback Switch' on" + cset "name='Earpiece Playback Volume' 100%" + ] + + DisableSequence [ + cset "name='Earpiece Playback Switch' off" + ] + + Value { + PlaybackVolume "Earpiece Playback Volume" + PlaybackSwitch "Earpiece Playback Switch" + PlaybackChannels "2" + PlaybackPriority 300 + PlaybackPCM "hw:${CardId},0" + } +} +SectionDevice."DigitalMic" { + Comment "Internal Microphone" + ConflictingDevice [ + "HeadsetMic" + ] + EnableSequence [ + cset "name='Mic1 Capture Switch' on" + ] + DisableSequence [ + cset "name='Mic1 Capture Switch' off" + ] + Value { + CapturePriority 100 + CapturePCM "hw:${CardId},0" + CaptureChannels "2" + } +} +SectionDevice."HeadsetMic" { + Comment "Headset Microphone" + ConflictingDevice [ + "DigitalMic" + ] + EnableSequence [ + cset "name='Mic2 Capture Switch' on" + ] + DisableSequence [ + cset "name='Mic2 Capture Switch' off" + ] + Value { + CapturePriority 200 + CapturePCM "hw:${CardId},0" + CaptureChannels "2" + JackControl "Headset Microphone Jack" + } +} +SectionDevice."Headphone" { + Comment "Headset" + EnableSequence [ + cset "name='AIF1 DA0 Stereo Playback Route' Stereo" + cset "name='Headphone Playback Switch' on" + cset "name='Headphone Playback Volume' 100%" + ] + + DisableSequence [ + cset "name='Headphone Playback Switch' off" + ] + + Value { + PlaybackVolume "Headphone Playback Volume" + PlaybackSwitch "Headphone Playback Switch" + PlaybackChannels "2" + PlaybackPriority 500 + PlaybackPCM "hw:${CardId},0" + JackControl "Headphone Jack" + } +} -- 2.28.0
>From 17860f29124d3d37140833f45ba6b6ad5ed251c3 Mon Sep 17 00:00:00 2001 From: Arnaud Ferraris <arnaud.ferra...@collabora.com> Date: Tue, 12 May 2020 09:43:51 +0200 Subject: [PATCH 2/2] ucm2: add PineTab configuration --- ucm2/PineTab/HiFi.conf | 100 ++++++++++++++++++++++++++++++++++++++ ucm2/PineTab/PineTab.conf | 6 +++ 2 files changed, 106 insertions(+) create mode 100644 ucm2/PineTab/HiFi.conf create mode 100644 ucm2/PineTab/PineTab.conf diff --git a/ucm2/PineTab/HiFi.conf b/ucm2/PineTab/HiFi.conf new file mode 100644 index 0000000..f84ae73 --- /dev/null +++ b/ucm2/PineTab/HiFi.conf @@ -0,0 +1,100 @@ +SectionVerb { + EnableSequence [ + cset "name='Headphone Playback Switch' off" + cset "name='Headphone Source Playback Route' DAC" + cset "name='Line In Playback Switch' off" + cset "name='Line Out Playback Switch' off" + cset "name='Line Out Source Playback Route' Stereo" + cset "name='Mic1 Playback Switch' off" + cset "name='Mic2 Playback Switch' off" + cset "name='AIF1 DA0 Playback Volume' 160" + cset "name='AIF3 ADC Source Capture Route' None" + cset "name='AIF2 DAC Source Playback Route' AIF2" + cset "name='DAC Playback Switch' on" + cset "name='DAC Playback Volume' 160" + cset "name='ADC Digital DAC Playback Switch' off" + cset "name='AIF1 Slot 0 Digital DAC Playback Switch' on" + cset "name='AIF2 Digital DAC Playback Switch' off" + cset "name='DAC Reversed Playback Switch' off" + cset "name='Earpiece Playback Switch' off" + cset "name='Earpiece Source Playback Route' DACL" + + cset "name='Line In Capture Switch' off" + cset "name='Mic1 Capture Switch' off" + cset "name='Mic2 Capture Switch' off" + cset "name='Mixer Capture Switch' off" + cset "name='Mixer Reversed Capture Switch' off" + cset "name='ADC Capture Volume' 160" + cset "name='AIF1 AD0 Capture Volume' 160" + cset "name='AIF1 Data Digital ADC Capture Switch' on" + cset "name='AIF2 ADC Mixer ADC Capture Switch' off" + cset "name='AIF2 ADC Mixer AIF1 DA0 Capture Switch' off" + cset "name='AIF2 ADC Mixer AIF2 DAC Rev Capture Switch' off" + cset "name='AIF2 ADC Mixer AIF1 DA0 Capture Switch' off" + cset "name='AIF2 ADC Mixer AIF1 DA0 Capture Switch' off" + ] + DisableSequence [ + ] + Value { + PlaybackPCM "hw:${CardId},0" + CapturePCM "hw:${CardId},0" + } +} + +SectionDevice."Speaker" { + Comment "Internal speaker" + EnableSequence [ + cset "name='AIF1 DA0 Stereo Playback Route' Stereo" + cset "name='Line Out Playback Switch' on" + cset "name='Line Out Playback Volume' 100%" + ] + + DisableSequence [ + cset "name='Line Out Playback Switch' off" + ] + + Value { + PlaybackVolume "Line Out Playback Volume" + PlaybackSwitch "Line Out Playback Switch" + PlaybackChannels "2" + PlaybackPriority 100 + PlaybackPCM "hw:${CardId},0" + } +} +SectionDevice."DigitalMic" { + Comment "Internal Microphone" + EnableSequence [ + cset "name='Mic1 Capture Switch' on" + cset "name='Mic2 Capture Switch' on" + ] + DisableSequence [ + cset "name='Mic1 Capture Switch' off" + cset "name='Mic2 Capture Switch' off" + ] + Value { + CapturePriority 100 + CapturePCM "hw:${CardId},0" + CaptureChannels "2" + } +} +SectionDevice."Headphone" { + Comment "Headphones" + EnableSequence [ + cset "name='AIF1 DA0 Stereo Playback Route' Stereo" + cset "name='Headphone Playback Switch' on" + cset "name='Headphone Playback Volume' 100%" + ] + + DisableSequence [ + cset "name='Headphone Playback Switch' off" + ] + + Value { + PlaybackVolume "Headphone Playback Volume" + PlaybackSwitch "Headphone Playback Switch" + PlaybackChannels "2" + PlaybackPriority 200 + PlaybackPCM "hw:${CardId},0" + JackControl "Headphone Jack" + } +} diff --git a/ucm2/PineTab/PineTab.conf b/ucm2/PineTab/PineTab.conf new file mode 100644 index 0000000..d672df2 --- /dev/null +++ b/ucm2/PineTab/PineTab.conf @@ -0,0 +1,6 @@ +Syntax 2 + +SectionUseCase."HiFi" { + File "HiFi.conf" + Comment "Default" +} -- 2.28.0
>From b4e59d4d9ed1922cdd77159bd732314e8b10591e Mon Sep 17 00:00:00 2001 From: Arnaud Ferraris <arnaud.ferra...@collabora.com> Date: Thu, 8 Oct 2020 17:45:30 +0200 Subject: [PATCH] ucm2: add improved Librem 5 profile This commit adds a more fine-tuned UCM profile for the Librem 5: * input and ouput paths are split so we can select both devices separately * it uses standard UCM names for the use-cases and devices This is not the final profile, as it requires additional components: * The headset mic isn't functional on the L5 yet and mic detection isn't implemented, so Headset mic priority is lowered to make sure the internal microphone is always used --- ucm2/Librem_5/HiFi.conf | 174 ++++++++++++++++++++++++++++++++++++ ucm2/Librem_5/Librem_5.conf | 11 +++ ucm2/Librem_5/wm8962.conf | 1 + ucm2/wm8962 | 1 + 5 files changed, 206 insertions(+) create mode 100644 ucm2/Librem_5/HiFi.conf create mode 100644 ucm2/Librem_5/Librem_5.conf create mode 120000 ucm2/Librem_5/wm8962.conf create mode 120000 ucm2/wm8962 diff --git a/ucm2/Librem_5/HiFi.conf b/ucm2/Librem_5/HiFi.conf new file mode 100644 index 0000000..ee22392 --- /dev/null +++ b/ucm2/Librem_5/HiFi.conf @@ -0,0 +1,175 @@ +SectionVerb { + EnableSequence [ + cset "name='Digital Playback Volume' 100,100" + cset "name='MIXINL IN2L Switch' off" + cset "name='MIXINL IN3L Switch' off" + cset "name='MIXINR IN2R Switch' off" + cset "name='MIXINR IN3R Switch' off" + cset "name='INPGAR IN1R Switch' off" + cset "name='INPGAR IN2R Switch' off" + cset "name='INPGAR IN3R Switch' on" + cset "name='INPGAR IN4R Switch' off" + cset "name='INPGAL IN1L Switch' off" + cset "name='INPGAL IN2L Switch' off" + cset "name='INPGAL IN3L Switch' off" + cset "name='INPGAL IN4L Switch' off" + cset "name='Input Mixer Switch' off,on" + cset "name='SPKOUTL PGA' Mixer" + cset "name='SPKOUTR PGA' Mixer" + ] + + DisableSequence [ + cset "name='Digital Playback Volume' 0,0" + ] + + Value { + } +} + +SectionDevice."Handset" { + Comment "Handset" + + ConflictingDevice [ + "Headphones" + "Speaker" + ] + + EnableSequence [ + cset "name='Speaker Switch' off,on" + cset "name='DAC L/R Swap Switch' on" + cset "name='DAC Monomix Switch' on" + cset "name='SPKOUTR PGA' DAC" + cset "name='Speaker Volume' 121,121" + cset "name='Speaker Boost Volume' 2" + ] + + DisableSequence [ + cset "name='Speaker Switch' off,off" + cset "name='DAC L/R Swap Switch' off" + cset "name='DAC Monomix Switch' off" + cset "name='SPKOUTR PGA' Mixer" + ] + + Value { + PlaybackChannels "2" + PlaybackPriority "100" + PlaybackVolume "name='Speaker Volume'" + PlaybackSwitch "name='Speaker Switch'" + PlaybackPCM "hw:${CardId},0" + } +} + +SectionDevice."Speaker" { + Comment "Speaker" + + ConflictingDevice [ + "Handset" + "Headphones" + ] + + EnableSequence [ + cset "name='Speaker Switch' on,off" + cset "name='DAC Monomix Switch' on" + cset "name='SPKOUTL PGA' DAC" + cset "name='Speaker Volume' 121,121" + cset "name='Speaker Boost Volume' 6" + ] + + DisableSequence [ + cset "name='Speaker Switch' off,off" + cset "name='DAC Monomix Switch' off" + cset "name='SPKOUTL PGA' Mixer" + ] + + Value { + PlaybackChannels "2" + PlaybackPriority "500" + PlaybackVolume "name='Speaker Volume'" + PlaybackSwitch "name='Speaker Switch'" + PlaybackPCM "hw:${CardId},0" + } +} + +SectionDevice."Headphones" { + Comment "Headphones" + + ConflictingDevice [ + "Handset" + "Speaker" + ] + + EnableSequence [ + cset "name='Headphone Switch' on,on" + cset "name='HPOUTL PGA' 0 unmute" + cset "name='HPOUTR PGA' 0 unmute" + cset "name='Headphone Aux Volume' 0" + cset "name='Headphone Volume' 121,121" + ] + + DisableSequence [ + cset "name='Headphone Switch' off off" + cset "name='HPOUTL PGA' 0 mute" + cset "name='HPOUTR PGA' 0 mute" + ] + + Value { + PlaybackPriority "1000" + PlaybackChannels "2" + PlaybackVolume "name='Headphone Volume'" + PlaybackSwitch "name='Headphone Switch'" + PlaybackPCM "hw:${CardId},0" + JackControl "Headphones Jack" + } +} + +SectionDevice."Mic" { + Comment "Internal Microphone" + + ConflictingDevice [ + "Headset" + ] + + EnableSequence [ + cset "name='Digital Capture Volume' 116,116" + cset "name='ADC L/R Swap Switch' on" + ] + + DisableSequence [ + cset "name='Digital Capture Volume' 0,0" + cset "name='ADC L/R Swap Switch' off" + ] + + Value { + CapturePriority "500" + CaptureChannels "2" + CaptureVolume "name='Digital Capture Volume'" + CapturePCM "hw:${CardId},0" + } +} + +SectionDevice."Headset" { + Comment "Headset Microphone" + + ConflictingDevice [ + "Mic" + ] + + EnableSequence [ + cset "name='MIXINR IN3R Switch' on" + cset "name='MIXINR IN3R Volume' 7" + ] + + DisableSequence [ + cset "name='MIXINR IN3R Switch' off" + cset "name='MIXINR IN3R Volume' 0" + ] + + Value { + CapturePriority "100" + CaptureChannels "2" + CaptureVolume "name='MIXINR IN3R Volume'" + CaptureSwitch "name='MIXINR IN3R Switch'" + CapturePCM "hw:${CardId},0" + JackControl "Headphones Jack" + } +} diff --git a/ucm2/Librem_5/Librem_5.conf b/ucm2/Librem_5/Librem_5.conf new file mode 100644 index 0000000..3741216 --- /dev/null +++ b/ucm2/Librem_5/Librem_5.conf @@ -0,0 +1,6 @@ +Syntax 2 + +SectionUseCase."HiFi" { + File "HiFi.conf" + Comment "Default" +} diff --git a/ucm2/Librem_5/wm8962.conf b/ucm2/Librem_5/wm8962.conf new file mode 120000 index 0000000..ea620cc --- /dev/null +++ b/ucm2/Librem_5/wm8962.conf @@ -0,0 +1 @@ +Librem_5.conf \ No newline at end of file diff --git a/ucm2/wm8962 b/ucm2/wm8962 new file mode 120000 index 0000000..9c04c54 --- /dev/null +++ b/ucm2/wm8962 @@ -0,0 +1 @@ +Librem_5 \ No newline at end of file -- 2.28.0