diff --git a/media-libs/alsa-ucm-pinephone/Manifest b/media-libs/alsa-ucm-pinephone/Manifest deleted file mode 100644 index 6336cd3..0000000 --- a/media-libs/alsa-ucm-pinephone/Manifest +++ /dev/null @@ -1 +0,0 @@ -DIST alsa-ucm-pinephone-1.2.6.3.tar.gz 4441 BLAKE2B 5999331e9769c60d1989248749b9c15a6804cf732299d11ea63107fc1afef7715c3ec30e7e1a15ac782e28d72fbb9a6748ae319244cef617ffc5d50d1b54b1b8 SHA512 2ced0519ade14a3865043d4e3cdab58072ab7ec1915f0fcb74dd7ecaa566074fca5f2d63ee9d6e86d013dd45b92da5892f9ec18025855c8d665a327c06212711 diff --git a/media-libs/alsa-ucm-pinephone/alsa-ucm-pinephone-1.2.6.3.ebuild b/media-libs/alsa-ucm-pinephone/alsa-ucm-pinephone-1.2.6.3.ebuild index ed50ef9..9f1eb70 100644 --- a/media-libs/alsa-ucm-pinephone/alsa-ucm-pinephone-1.2.6.3.ebuild +++ b/media-libs/alsa-ucm-pinephone/alsa-ucm-pinephone-1.2.6.3.ebuild @@ -7,7 +7,6 @@ COMMIT="ec0ef36b8b897ed1ae6bb0d0de13d5776f5d3659" DESCRIPTION="ALSA ucm configuration files for the PinePhone (Pro)" HOMEPAGE="https://gitlab.com/pine64-org/pine64-alsa-ucm" -SRC_URI="https://gitlab.com/pine64-org/pine64-alsa-ucm/-/archive/${COMMIT}.tar.gz -> ${P}.tar.gz" LICENSE="BSD" SLOT="0" @@ -25,16 +24,14 @@ DEPEND="${RDEPEND}" BDEPEND="${RDEPEND}" -S="${WORKDIR}/pine64-alsa-ucm-${COMMIT}" - src_install() { insinto /usr/share/alsa/ucm2/PinePhone - #insopts -m644 - doins -r "${S}"/ucm2/PinePhone/*.conf + insopts -m644 + doins -r "${FILESDIR}"/ucm2/PinePhone/*.conf insinto /usr/share/alsa/ucm2/PinePhonePro - #insopts -m644 - doins -r "${S}"/ucm2/PinePhonePro/*.conf + insopts -m644 + doins -r "${FILESDIR}"/ucm2/PinePhonePro/*.conf dosym /usr/share/alsa/ucm2/PinePhone/PinePhone.conf \ /usr/share/alsa/ucm2/conf.d/simple-card/PinePhone.conf diff --git a/media-libs/alsa-ucm-pinephone/files/PinePhone-HiFi.conf b/media-libs/alsa-ucm-pinephone/files/PinePhone-HiFi.conf new file mode 100644 index 0000000..5996e4a --- /dev/null +++ b/media-libs/alsa-ucm-pinephone/files/PinePhone-HiFi.conf @@ -0,0 +1,146 @@ +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' None" + 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='Mic1 Boost Volume' 7" + cset "name='Mic2 Capture Switch' off" + cset "name='Mic2 Boost Volume' 7" + cset "name='Mixer Capture Switch' off" + cset "name='Mixer Reversed Capture Switch' off" + cset "name='ADC Capture Volume' 160" + cset "name='ADC Gain Capture Volume' 7" + 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 200 + PlaybackPCM "hw:${CardId},0" + } +} +SectionDevice."Mic" { + Comment "Internal Microphone" + ConflictingDevice [ + "Headset" + ] + EnableSequence [ + cset "name='Mic1 Capture Switch' on" + ] + DisableSequence [ + cset "name='Mic1 Capture Switch' off" + ] + Value { + CapturePriority 100 + CapturePCM "hw:${CardId},0" + CaptureChannels 2 + CaptureVolume "ADC Capture Volume" + CaptureSwitch "Mic1 Capture Switch" + } +} +SectionDevice."Headset" { + Comment "Headset Microphone" + ConflictingDevice [ + "Mic" + ] + EnableSequence [ + cset "name='Mic2 Capture Switch' on" + ] + DisableSequence [ + cset "name='Mic2 Capture Switch' off" + ] + Value { + CapturePriority 500 + CapturePCM "hw:${CardId},0" + CaptureChannels 2 + CaptureVolume "ADC Capture Volume" + CaptureSwitch "Mic2 Capture Switch" + JackControl "Headset Microphone Jack" + } +} +SectionDevice."Headphones" { + Comment "Headphones" + EnableSequence [ + cset "name='AIF1 DA0 Stereo Playback Route' Stereo" + cset "name='Headphone Playback Switch' on" + cset "name='Headphone Playback Volume' 70%" + ] + + 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/media-libs/alsa-ucm-pinephone/files/PinePhone-VoiceCall.conf b/media-libs/alsa-ucm-pinephone/files/PinePhone-VoiceCall.conf new file mode 100644 index 0000000..1630559 --- /dev/null +++ b/media-libs/alsa-ucm-pinephone/files/PinePhone-VoiceCall.conf @@ -0,0 +1,151 @@ +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='AIF3 ADC Source Capture Route' None" + cset "name='AIF2 DAC Source Playback Route' None" + 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='Mic1 Boost Volume' 0" + cset "name='Mic1 Playback Volume' 7" + cset "name='Mic2 Capture Switch' off" + cset "name='Mic2 Boost Volume' 0" + cset "name='Mic2 Playback Volume' 7" + cset "name='Mixer Capture Switch' off" + cset "name='Mixer Reversed Capture Switch' off" + cset "name='ADC Capture Volume' 160" + cset "name='ADC Gain Capture Volume' 7" + 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 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 500 + PlaybackPCM "hw:${CardId},0" + } +} +SectionDevice."Mic" { + Comment "Internal Microphone" + ConflictingDevice [ + "Headset" + ] + EnableSequence [ + cset "name='Mic1 Capture Switch' on" + ] + DisableSequence [ + cset "name='Mic1 Capture Switch' off" + ] + Value { + CapturePriority 200 + CapturePCM "hw:${CardId},0" + CaptureVolume "ADC Capture Volume" + CaptureSwitch "Mic1 Capture Switch" + CaptureChannels 2 + } +} +SectionDevice."Headset" { + Comment "Headset Microphone" + ConflictingDevice [ + "Mic" + ] + EnableSequence [ + cset "name='Mic2 Capture Switch' on" + ] + DisableSequence [ + cset "name='Mic2 Capture Switch' off" + ] + Value { + CapturePriority 500 + CapturePCM "hw:${CardId},0" + CaptureChannels 2 + CaptureVolume "ADC Capture Volume" + CaptureSwitch "Mic2 Capture Switch" + JackControl "Headset Microphone Jack" + } +} +SectionDevice."Headphones" { + 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/media-libs/alsa-ucm-pinephone/files/PinePhone.conf b/media-libs/alsa-ucm-pinephone/files/PinePhone.conf new file mode 100644 index 0000000..d136c4c --- /dev/null +++ b/media-libs/alsa-ucm-pinephone/files/PinePhone.conf @@ -0,0 +1,11 @@ +Syntax 2 + +SectionUseCase."HiFi" { + File "/PinePhone/HiFi.conf" + Comment "Play HiFi quality music" +} + +SectionUseCase."Voice Call" { + File "/PinePhone/VoiceCall.conf" + Comment "Make a phone call" +} diff --git a/media-libs/alsa-ucm-pinephone/files/PinePhonePro-HiFi.conf b/media-libs/alsa-ucm-pinephone/files/PinePhonePro-HiFi.conf new file mode 100644 index 0000000..73c8ff6 --- /dev/null +++ b/media-libs/alsa-ucm-pinephone/files/PinePhonePro-HiFi.conf @@ -0,0 +1,278 @@ +SectionVerb { + EnableSequence [ + # First of all, disable the internal speaker amplifier + cset "name='Internal Speaker Switch' off" + + ### Based on /codecs/rt5640/EnableSeq.conf ### + + # RT5640 default output routing + cset "name='DAC MIXL INF1 Switch' on" + cset "name='DAC MIXR INF1 Switch' on" + cset "name='DAC MIXL Stereo ADC Switch' off" + cset "name='DAC MIXR Stereo ADC Switch' off" + cset "name='Stereo DAC MIXL DAC L1 Switch' on" + cset "name='Stereo DAC MIXR DAC R1 Switch' on" + cset "name='Stereo DAC MIXL DAC L2 Switch' on" + cset "name='Stereo DAC MIXR DAC R2 Switch' on" + cset "name='OUT MIXL DAC L1 Switch' on" + cset "name='OUT MIXR DAC R1 Switch' on" + cset "name='SPK MIXL DAC L1 Switch' on" + cset "name='SPK MIXR DAC R1 Switch' on" + + # uncomment to enable swap between AIF1 and AIF2 + # warning: can only work with SSP0 firmware enabled + cset "name='SDI select' 0" + cset "name='DAI select' 0" + #cset "name='SDI select' 1" + #cset "name='DAI select' 1" + + cset "name='DAC2 Playback Switch' on" + + # Input Configuration + cset "name='Stereo ADC1 Mux' ADC" + cset "name='Stereo ADC2 Mux' DMIC1" + cset "name='ADC Capture Switch' on" + + cset "name='Mono ADC L1 Mux' ADCL" + cset "name='Mono ADC R1 Mux' ADCR" + cset "name='Mono ADC L2 Mux' DMIC L1" + cset "name='Mono ADC R2 Mux' DMIC R1" + cset "name='Mono ADC Capture Switch' on" + + # Set capture volume to 0dB so modem audio doesn't overdrive the ADC + cset "name='ADC Capture Volume' 47" + cset "name='Mono ADC Capture Volume' 47" + + # The second 'Mono ADC' path does not have a 'Boost Gain', + # set this to 0dB so that the volume of the AIF1 and AIF2 paths is equal. + cset "name='ADC Boost Gain' 0" + + # Set IN1 internal mic boost to 8 (max) + # Set IN2 headset-mic boost to 1, headset mics are quite loud + # Set IN3 (modem audio) boost to 0 as it's already loud enough + cset "name='IN1 Boost' 8" + cset "name='IN2 Boost' 1" + cset "name='IN3 Boost' 0" + + # Start with all controls which are used by the individual + # input/output Enable/DisableSequences off + + cset "name='RECMIXL BST1 Switch' off" + cset "name='RECMIXR BST1 Switch' off" + # IN2 is headset mic, make sure its route is enabled + cset "name='RECMIXL BST2 Switch' on" + cset "name='RECMIXR BST2 Switch' on" + cset "name='RECMIXL BST3 Switch' off" + cset "name='RECMIXR BST3 Switch' off" + + cset "name='Stereo ADC MIXL ADC1 Switch' off" + cset "name='Stereo ADC MIXR ADC1 Switch' off" + cset "name='Stereo ADC MIXL ADC2 Switch' off" + cset "name='Stereo ADC MIXR ADC2 Switch' off" + cset "name='Mono ADC MIXL ADC1 Switch' off" + cset "name='Mono ADC MIXR ADC1 Switch' off" + cset "name='Mono ADC MIXL ADC2 Switch' off" + cset "name='Mono ADC MIXR ADC2 Switch' off" + + # Limit amplification factor of earpiece amplifier so sound stays clear + cset "name='Class D SPK Ratio Control' 1.66x" + + # Turn off playback switches by default, otherwise both Speaker + # and headphones are playing audio initially until headphones are + # re-inserted. + cset "name='HP L Playback Switch' off" + cset "name='HP R Playback Switch' off" + cset "name='Speaker L Playback Switch' off" + cset "name='Speaker R Playback Switch' off" + + # MONO output is used as IN3 here, so make sure it's disabled + cset "name='Mono Playback Switch' off" + + # Set playback volumes to 0dB + cset "name='HP Playback Volume' 31" + cset "name='Speaker Playback Volume' 31" + ] + + DisableSequence [ + # Turn off all output channels + cset "name='HP L Playback Switch' off" + cset "name='HP R Playback Switch' off" + cset "name='HP Channel Switch' off" + cset "name='HPO MIX HPVOL Switch' off" + cset "name='Speaker L Playback Switch' off" + cset "name='Speaker R Playback Switch' off" + cset "name='Speaker Channel Switch' off" + cset "name='SPOL MIX SPKVOL L Switch' off" + cset "name='SPOL MIX SPKVOL R Switch' off" + + + # Reset output routing + cset "name='DAC MIXL INF1 Switch' off" + cset "name='DAC MIXR INF1 Switch' off" + cset "name='OUT MIXL DAC L1 Switch' off" + cset "name='OUT MIXR DAC R1 Switch' off" + cset "name='SPK MIXL DAC L1 Switch' off" + cset "name='SPK MIXR DAC R1 Switch' off" + ] + + Value { + TQ "HiFi" + } +} + +SectionDevice."Earpiece" { + Comment "Internal Earpiece" + + ConflictingDevice [ + "Headphones" + "Speaker" + ] + + EnableSequence [ + cset "name='SPOL MIX SPKVOL L Switch' on" +# for mono speaker we apply left on right +# cset "name='SPOR MIX SPKVOL R Switch' on" + cset "name='SPOL MIX SPKVOL R Switch' on" + cset "name='Speaker Channel Switch' on" + cset "name='Speaker L Playback Switch' on" + cset "name='Speaker R Playback Switch' on" + ] + + DisableSequence [ + cset "name='Speaker Channel Switch' off" + cset "name='Speaker L Playback Switch' off" + cset "name='Speaker R Playback Switch' off" + ] + + Value { + PlaybackPriority 100 + PlaybackPCM "hw:${CardId}" + PlaybackMixerElem "Speaker" + PlaybackVolume "Speaker Playback Volume" + PlaybackMasterElem "DAC1" + } +} + +SectionDevice."Speaker" { + Comment "Internal Speaker" + + ConflictingDevice [ + "Earpiece" + "Headphones" + ] + + EnableSequence [ + cset "name='HPO MIX HPVOL Switch' on" + cset "name='HP Channel Switch' on" + cset "name='HP L Playback Switch' on" + cset "name='HP R Playback Switch' on" + cset "name='Internal Speaker Switch' on" + ] + + DisableSequence [ + cset "name='Internal Speaker Switch' off" + cset "name='HP Channel Switch' off" + cset "name='HP L Playback Switch' off" + cset "name='HP R Playback Switch' off" + ] + + Value { + PlaybackPriority 200 + PlaybackPCM "hw:${CardId}" + PlaybackMixerElem "HP" + PlaybackVolume "HP Playback Volume" + PlaybackMasterElem "DAC1" + } +} + +SectionDevice."Headphones" { + Comment "Headphones" + + ConflictingDevice [ + "Earpiece" + "Speaker" + ] + + EnableSequence [ + cset "name='HPO MIX HPVOL Switch' on" + cset "name='HP Channel Switch' on" + cset "name='HP L Playback Switch' on" + cset "name='HP R Playback Switch' on" + ] + + DisableSequence [ + cset "name='HP Channel Switch' off" + cset "name='HP L Playback Switch' off" + cset "name='HP R Playback Switch' off" + ] + + Value { + PlaybackPriority 300 + PlaybackPCM "hw:${CardId}" + JackControl "Headphones Jack" + PlaybackMixerElem "HP" + PlaybackVolume "HP Playback Volume" + PlaybackMasterElem "DAC1" + } +} + +SectionDevice."Mic" { + Comment "Internal Microphone" + + ConflictingDevice [ + "Headset" + ] + + EnableSequence [ + cset "name='Mono ADC MIXL ADC2 Switch' on" + cset "name='Mono ADC MIXR ADC2 Switch' on" + cset "name='Stereo ADC MIXL ADC2 Switch' on" + cset "name='Stereo ADC MIXR ADC2 Switch' on" + ] + + DisableSequence [ + cset "name='Mono ADC MIXL ADC2 Switch' off" + cset "name='Mono ADC MIXR ADC2 Switch' off" + cset "name='Stereo ADC MIXL ADC2 Switch' off" + cset "name='Stereo ADC MIXR ADC2 Switch' off" + ] + + Value { + CapturePriority 100 + CapturePCM "hw:${CardId}" + CaptureMixerElem "ADC" + CaptureVolume "ADC Capture Volume" + CaptureSwitch "ADC Capture Switch" + } +} + +SectionDevice."Headset" { + Comment "Headset Microphone" + + ConflictingDevice [ + "Mic" + ] + + EnableSequence [ + cset "name='Mono ADC MIXL ADC1 Switch' on" + cset "name='Mono ADC MIXR ADC1 Switch' on" + cset "name='Stereo ADC MIXL ADC1 Switch' on" + cset "name='Stereo ADC MIXR ADC1 Switch' on" + ] + + DisableSequence [ + cset "name='Mono ADC MIXL ADC1 Switch' off" + cset "name='Mono ADC MIXR ADC1 Switch' off" + cset "name='Stereo ADC MIXL ADC1 Switch' off" + cset "name='Stereo ADC MIXR ADC1 Switch' off" + ] + + Value { + CapturePriority 200 + CapturePCM "hw:${CardId}" + JackControl "Headphones Jack" + CaptureMixerElem "ADC" + CaptureVolume "ADC Capture Volume" + CaptureSwitch "ADC Capture Switch" + } +} diff --git a/media-libs/alsa-ucm-pinephone/files/PinePhonePro-VoiceCall.conf b/media-libs/alsa-ucm-pinephone/files/PinePhonePro-VoiceCall.conf new file mode 100644 index 0000000..8055e5d --- /dev/null +++ b/media-libs/alsa-ucm-pinephone/files/PinePhonePro-VoiceCall.conf @@ -0,0 +1,275 @@ +SectionVerb { + EnableSequence [ + # First of all, disable the internal speaker amplifier + cset "name='Internal Speaker Switch' off" + + ### Based on /codecs/rt5640/EnableSeq.conf ### + + # Get audio only from the microphones, not the system + cset "name='DAC MIXL INF1 Switch' off" + cset "name='DAC MIXR INF1 Switch' off" + cset "name='DAC MIXL Stereo ADC Switch' on" + cset "name='DAC MIXR Stereo ADC Switch' on" + cset "name='Stereo DAC MIXL DAC L1 Switch' on" + cset "name='Stereo DAC MIXR DAC R1 Switch' on" + cset "name='Stereo DAC MIXL DAC L2 Switch' on" + cset "name='Stereo DAC MIXR DAC R2 Switch' on" + cset "name='OUT MIXL DAC L1 Switch' off" + cset "name='OUT MIXR DAC R1 Switch' off" + cset "name='SPK MIXL DAC L1 Switch' off" + cset "name='SPK MIXR DAC R1 Switch' off" + + # uncomment to enable swap between AIF1 and AIF2 + # warning: can only work with SSP0 firmware enabled + cset "name='SDI select' 0" + cset "name='DAI select' 0" + #cset "name='SDI select' 1" + #cset "name='DAI select' 1" + + cset "name='DAC2 Playback Switch' on" + + # Input Configuration + cset "name='Stereo ADC1 Mux' ADC" + cset "name='Stereo ADC2 Mux' DMIC1" + cset "name='ADC Capture Switch' on" + + cset "name='Mono ADC L1 Mux' ADCL" + cset "name='Mono ADC R1 Mux' ADCR" + cset "name='Mono ADC L2 Mux' DMIC L1" + cset "name='Mono ADC R2 Mux' DMIC R1" + cset "name='Mono ADC Capture Switch' on" + + # Set capture volume to 0dB so modem audio doesn't overdrive the ADC + cset "name='ADC Capture Volume' 47" + cset "name='Mono ADC Capture Volume' 47" + + # The second 'Mono ADC' path does not have a 'Boost Gain', + # set this to 0dB so that the volume of the AIF1 and AIF2 paths is equal. + cset "name='ADC Boost Gain' 0" + + # Set IN1 internal mic boost to 8 (max) + # Set IN2 headset-mic boost to 1, headset mics are quite loud + # Set IN3 (modem audio) boost to 0 as it's already loud enough + cset "name='IN1 Boost' 8" + cset "name='IN2 Boost' 1" + cset "name='IN3 Boost' 0" + + # Start with all controls which are used by the individual + # input/output Enable/DisableSequences off + + cset "name='RECMIXL BST1 Switch' off" + cset "name='RECMIXR BST1 Switch' off" + # IN2 is headset mic, make sure its routed to the left channel + cset "name='RECMIXL BST2 Switch' on" + cset "name='RECMIXR BST2 Switch' off" + # IN3 is modem audio, route it to the right channel + cset "name='RECMIXL BST3 Switch' off" + cset "name='RECMIXR BST3 Switch' on" + + cset "name='Stereo ADC MIXL ADC1 Switch' off" + cset "name='Stereo ADC MIXR ADC1 Switch' off" + cset "name='Stereo ADC MIXL ADC2 Switch' off" + cset "name='Stereo ADC MIXR ADC2 Switch' off" + cset "name='Mono ADC MIXL ADC1 Switch' off" + cset "name='Mono ADC MIXR ADC1 Switch' off" + cset "name='Mono ADC MIXL ADC2 Switch' off" + cset "name='Mono ADC MIXR ADC2 Switch' off" + + # Limit amplification factor of earpiece amplifier so sound stays clear + cset "name='Class D SPK Ratio Control' 1.66x" + + # Loopback IN3 to earpiece/speaker/headphones + cset "name='OUT MIXR REC MIXR Switch' on" + cset "name='SPK MIXR OUT MIXR Switch' on" + + # Send the left channel (microphones) to the modem through DAC L1 + cset "name='LOUT MIX DAC L1 Switch' on" + # Don't use DAC R1 nor the OUTVOL blocks as we use them for + # routing audio from the modem + cset "name='LOUT MIX DAC R1 Switch' off" + cset "name='LOUT MIX OUTVOL L Switch' off" + cset "name='LOUT MIX OUTVOL R Switch' off" + + # Disable left channel for HP (speaker/headphones) output + # as we're only routing modem audio to the right channel + cset "name='HP L Playback Switch' off" + + # Turn off playback switches by default, otherwise both Speaker + # and headphones are playing audio initially until headphones are + # re-inserted. + cset "name='HP L Playback Switch' off" + cset "name='HP R Playback Switch' off" + cset "name='Speaker L Playback Switch' off" + cset "name='Speaker R Playback Switch' off" + + # MONO output is used as IN3 here, so make sure it's disabled + cset "name='Mono Playback Switch' off" + + # Set playback volumes to 0dB + cset "name='HP Playback Volume' 31" + cset "name='Speaker Playback Volume' 31" + ] + + DisableSequence [ + # Turn off all output channels + cset "name='HP L Playback Switch' off" + cset "name='HP R Playback Switch' off" + cset "name='HP Channel Switch' off" + cset "name='Speaker L Playback Switch' off" + cset "name='Speaker R Playback Switch' off" + cset "name='Speaker Channel Switch' off" + + # Reset output routing + cset "name='DAC MIXL Stereo ADC Switch' off" + cset "name='DAC MIXR Stereo ADC Switch' off" + cset "name='OUT MIXR REC MIXR Switch' off" + cset "name='SPK MIXR OUT MIXR Switch' off" + cset "name='LOUT MIX DAC L1 Switch' off" + + # Reset ADC input routing + cset "name='RECMIXL BST2 Switch' off" + cset "name='RECMIXR BST3 Switch' off" + ] + + Value { + TQ "VoiceCall" + } +} + +SectionDevice."Earpiece" { + Comment "Internal Earpiece" + + ConflictingDevice [ + "Headphones" + "Speaker" + ] + + EnableSequence [ + cset "name='SPOL MIX SPKVOL L Switch' on" + # Send right channel to left as it's mono only + cset "name='SPOL MIX SPKVOL R Switch' on" + cset "name='Speaker Channel Switch' on" + cset "name='Speaker L Playback Switch' on" + ] + + DisableSequence [ + cset "name='Speaker Channel Switch' off" + cset "name='Speaker L Playback Switch' off" + ] + + Value { + PlaybackPriority 200 + PlaybackPCM "hw:${CardId}" + PlaybackMixerElem "Speaker" + PlaybackVolume "Speaker Playback Volume" + PlaybackMasterElem "DAC1" + } +} + +SectionDevice."Speaker" { + Comment "Internal Speaker" + + ConflictingDevice [ + "Earpiece" + "Headphones" + ] + + EnableSequence [ + cset "name='HPO MIX HPVOL Switch' on" + cset "name='HP Channel Switch' on" + cset "name='HP R Playback Switch' on" + cset "name='Internal Speaker Switch' on" + ] + + DisableSequence [ + cset "name='Internal Speaker Switch' off" + cset "name='HP Channel Switch' off" + cset "name='HP R Playback Switch' off" + ] + + Value { + PlaybackPriority 100 + PlaybackPCM "hw:${CardId}" + PlaybackMixerElem "HP" + PlaybackVolume "HP Playback Volume" + PlaybackMasterElem "DAC1" + } +} + +SectionDevice."Headphones" { + Comment "Headphones" + + ConflictingDevice [ + "Earpiece" + "Speaker" + ] + + EnableSequence [ + cset "name='HPO MIX HPVOL Switch' on" + cset "name='HP Channel Switch' on" + cset "name='HP R Playback Switch' on" + ] + + DisableSequence [ + cset "name='HP Channel Switch' off" + cset "name='HP R Playback Switch' off" + ] + + Value { + PlaybackPriority 300 + PlaybackPCM "hw:${CardId}" + JackControl "Headphones Jack" + PlaybackMixerElem "HP" + PlaybackVolume "HP Playback Volume" + PlaybackMasterElem "DAC1" + } +} + +SectionDevice."Mic" { + Comment "Internal Microphone" + + ConflictingDevice [ + "Headset" + ] + + EnableSequence [ + cset "name='Stereo ADC MIXL ADC2 Switch' on" + ] + + DisableSequence [ + cset "name='Stereo ADC MIXL ADC2 Switch' off" + ] + + Value { + CapturePriority 100 + CapturePCM "hw:${CardId}" + CaptureMixerElem "ADC" + CaptureVolume "ADC Capture Volume" + CaptureSwitch "ADC Capture Switch" + } +} + +SectionDevice."Headset" { + Comment "Headset Microphone" + + ConflictingDevice [ + "Mic" + ] + + EnableSequence [ + cset "name='Stereo ADC MIXL ADC1 Switch' on" + ] + + DisableSequence [ + cset "name='Stereo ADC MIXL ADC1 Switch' off" + ] + + Value { + CapturePriority 200 + CapturePCM "hw:${CardId}" + JackControl "Headphones Jack" + CaptureMixerElem "ADC" + CaptureVolume "ADC Capture Volume" + CaptureSwitch "ADC Capture Switch" + } +} diff --git a/media-libs/alsa-ucm-pinephone/files/PinePhonePro.conf b/media-libs/alsa-ucm-pinephone/files/PinePhonePro.conf new file mode 100644 index 0000000..fbb65ee --- /dev/null +++ b/media-libs/alsa-ucm-pinephone/files/PinePhonePro.conf @@ -0,0 +1,16 @@ +Syntax 4 +Comment "PinePhone Pro" + +SectionUseCase."HiFi" { + File "/PinePhonePro/HiFi.conf" + Comment "Play HiFi quality music" +} + +SectionUseCase."Voice Call" { + File "/PinePhonePro/VoiceCall.conf" + Comment "Make a phone call" +} + +Include.card-init.File "/lib/card-init.conf" +Include.ctl-remap.File "/lib/ctl-remap.conf" +Include.codec-init.File "/codecs/rt5640/init.conf"