From: Takashi Iwai Date: Tue, 5 Dec 2017 13:53:11 +0000 (+0100) Subject: conf/ucm: Add dual HD-audio codecs config for Lenovo X-Git-Tag: v1.1.6~32 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=b7e56af82a600262b7f641c5920a914b3303fd56;p=alsa-lib.git conf/ucm: Add dual HD-audio codecs config for Lenovo Some recent Lenovo laptops have dual codecs and we need to switch them accordingly. The kernel side already contains a fix and gives the unique longname string for identifying the board, and here we hook up the corresponding UCM profile. The profile was corrected and tested by Hui Wang on Lenovo p520. Tested-by: Kailang Tested-by: Hui Wang Signed-off-by: Takashi Iwai --- diff --git a/configure.ac b/configure.ac index c232236d..8d95a8b1 100644 --- a/configure.ac +++ b/configure.ac @@ -716,6 +716,7 @@ AC_OUTPUT(Makefile doc/Makefile doc/pictures/Makefile doc/doxygen.cfg \ src/conf/ucm/DAISY-I2S/Makefile \ src/conf/ucm/DB410c/Makefile \ src/conf/ucm/GoogleNyan/Makefile \ + src/conf/ucm/HDAudio-Lenovo-DualCodecs/Makefile \ src/conf/ucm/PandaBoard/Makefile \ src/conf/ucm/PandaBoardES/Makefile \ src/conf/ucm/PAZ00/Makefile \ diff --git a/src/conf/ucm/HDAudio-Lenovo-DualCodecs/HDAudio-Lenovo-DualCodecs.conf b/src/conf/ucm/HDAudio-Lenovo-DualCodecs/HDAudio-Lenovo-DualCodecs.conf new file mode 100644 index 00000000..98fdd8cc --- /dev/null +++ b/src/conf/ucm/HDAudio-Lenovo-DualCodecs/HDAudio-Lenovo-DualCodecs.conf @@ -0,0 +1,5 @@ +Comment "Lenovo laptop with dual HD-audio codecs" +SectionUseCase."HiFi" { + File "HiFi.conf" + Comment "Default" +} diff --git a/src/conf/ucm/HDAudio-Lenovo-DualCodecs/HiFi.conf b/src/conf/ucm/HDAudio-Lenovo-DualCodecs/HiFi.conf new file mode 100644 index 00000000..50967896 --- /dev/null +++ b/src/conf/ucm/HDAudio-Lenovo-DualCodecs/HiFi.conf @@ -0,0 +1,145 @@ +SectionVerb { + Value { + TQ "HiFi" + } + + EnableSequence [ + cdev "hw:PCH" + cset "name='Front Playback Volume' 100%" + cset "name='Front Playback Switch' on" + cset "name='Rear-Panel Capture Volume' 100%" + cset "name='Rear-Panel Capture Switch' on" + ] + + DisableSequence [ + cdev "hw:PCH" + cset "name='Front Playback Volume' 0" + cset "name='Front Playback Switch' off" + cset "name='Rear-Panel Capture Volume' 0" + cset "name='Rear-Panel Capture Switch' off" + ] +} + +SectionDevice."Speaker" { + Comment "Speaker" + + Value { + PlaybackChannels "2" + PlaybackPCM "hw:PCH,4" + } + + ConflictingDevice [ + "Headphone" + ] + + EnableSequence [ + cdev "hw:PCH" + cset "name='Speaker Playback Switch' on" + cset "name='Speaker Playback Volume' 100%" + ] + + DisableSequence [ + cdev "hw:PCH" + cset "name='Speaker Playback Volume' 0" + cset "name='Speaker Playback Switch' off" + ] +} + +SectionDevice."LineOut" { + Comment "Line Out" + + Value { + PlaybackChannels "2" + PlaybackPCM "hw:PCH,0" + JackControl "Line Out Jack" + JackHWMute "Speaker" + } +} + +SectionDevice."Headphone" { + Comment "Headphone" + + Value { + PlaybackChannels "2" + PlaybackPCM "hw:PCH,4" + JackControl "Front Headphone Jack" + JackHWMute "Speaker" + } + + ConflictingDevice [ + "Speaker" + ] + + EnableSequence [ + cdev "hw:PCH" + cset "name='Headphone Playback Switch' on" + cset "name='Headphone Playback Volume' 100%" + ] + + DisableSequence [ + cdev "hw:PCH" + cset "name='Headphone Playback Volume' 0" + cset "name='Headphone Playback Switch' off" + ] +} + +SectionDevice."LineIn" { + Comment "Rear Line In" + + Value { + CaptureChannels "2" + CapturePCM "hw:PCH,0" + JackControl "Line Jack" + } + + ConflictingDevice [ + "RearMic" + ] + + EnableSequence [ + cdev "hw:PCH" + cset "name='Input Source' Line" + ] +} + +SectionDevice."RearMic" { + Comment "Rear Microphone" + + Value { + CaptureChannels "2" + CapturePCM "hw:PCH,0" + # CapturePriority "150" + JackHWMute "LineIn" + } + + ConflictingDevice [ + "LineIn" + ] + + EnableSequence [ + cdev "hw:PCH" + cset "name='Input Source' Rear Mic" + ] +} + +SectionDevice."FrontMic" { + Comment "Front Microphone" + + Value { + CaptureChannels "2" + CapturePCM "hw:PCH,4" + JackControl "Front Mic Jack" + } + + EnableSequence [ + cdev "hw:PCH" + cset "name='Front-Panel Capture Volume' 100%" + cset "name='Front-Panel Capture Switch' on" + ] + + DisableSequence [ + cdev "hw:PCH" + cset "name='Front-Panel Capture Volume' 0" + cset "name='Front-Panel Capture Switch' off" + ] +} diff --git a/src/conf/ucm/HDAudio-Lenovo-DualCodecs/Makefile.am b/src/conf/ucm/HDAudio-Lenovo-DualCodecs/Makefile.am new file mode 100644 index 00000000..da285415 --- /dev/null +++ b/src/conf/ucm/HDAudio-Lenovo-DualCodecs/Makefile.am @@ -0,0 +1,4 @@ +alsaconfigdir = @ALSA_CONFIG_DIR@ +ucmdir = $(alsaconfigdir)/ucm/HDAudio-Lenovo-DualCodecs +ucm_DATA = HDAudio-Lenovo-DualCodecs.conf HiFi.conf +EXTRA_DIST = $(ucm_DATA) diff --git a/src/conf/ucm/Makefile.am b/src/conf/ucm/Makefile.am index 060d025f..1d81beeb 100644 --- a/src/conf/ucm/Makefile.am +++ b/src/conf/ucm/Makefile.am @@ -6,6 +6,7 @@ chtrt5645 \ DAISY-I2S \ DB410c \ GoogleNyan \ +HDAudio-Lenovo-DualCodecs \ PandaBoard \ PandaBoardES \ PAZ00 \