From a5d2e9b64be16c72fbcc29e1f824128c9b2173aa5f879c712b18a960d220dd33 Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Wed, 28 Feb 2018 21:51:26 +0000 Subject: [PATCH] Accepting request 581348 from home:tiwai:branches:multimedia:libs - Add UCM profile for Baytrail CR with RT5460 (bsc#1083195) OBS-URL: https://build.opensuse.org/request/show/581348 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/alsa?expand=0&rev=228 --- alsa.changes | 5 + alsa.spec | 13 +- bytcr-rt5640-HiFi.conf | 466 +++++++++++++++++++++++++++++++++++++++++ bytcr-rt5640.conf | 8 + 4 files changed, 488 insertions(+), 4 deletions(-) create mode 100644 bytcr-rt5640-HiFi.conf create mode 100644 bytcr-rt5640.conf diff --git a/alsa.changes b/alsa.changes index d510f72..e51a5c3 100644 --- a/alsa.changes +++ b/alsa.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Wed Feb 28 22:33:05 CET 2018 - tiwai@suse.de + +- Add UCM profile for Baytrail CR with RT5460 (bsc#1083195) + ------------------------------------------------------------------- Thu Jan 18 12:26:08 CET 2018 - tiwai@suse.de diff --git a/alsa.spec b/alsa.spec index 27a1f6f..6a97f97 100644 --- a/alsa.spec +++ b/alsa.spec @@ -29,7 +29,7 @@ Name: alsa Version: 1.1.5 Release: 0 Summary: Advanced Linux Sound Architecture -License: LGPL-2.1+ +License: LGPL-2.1-or-later Group: System/Libraries Url: http://www.alsa-project.org/ Source: ftp://ftp.alsa-project.org/pub/lib/alsa-lib-%{package_version}.tar.bz2 @@ -59,6 +59,8 @@ Patch6: 0006-pcm-Return-the-consistent-error-code-for-unexpected-.patch # rest suse fixes Source101: chtcx2072x.conf Source102: chtcx2072x-HiFi.conf +Source103: bytcr-rt5640.conf +Source104: bytcr-rt5640-HiFi.conf BuildRequires: doxygen BuildRequires: libtool BuildRequires: pkgconfig @@ -85,7 +87,7 @@ on your Linux box. To set it up, run yast2 or alsaconf. %package devel Summary: Include Files and Libraries mandatory for Development -License: LGPL-2.1+ +License: LGPL-2.1-or-later Group: Development/Libraries/C and C++ Requires: glibc-devel Requires: libasound2 = %{version} @@ -99,7 +101,7 @@ to develop applications that require these. %package docs Summary: Additional Package Documentation -License: GPL-2.0+ +License: GPL-2.0-or-later Group: Documentation/Other %if 0%{?suse_version} > 1110 BuildArch: noarch @@ -111,7 +113,7 @@ this package's base documentation. %package -n libasound2 Summary: Advanced Linux Sound Architecture Library -License: LGPL-2.1+ +License: LGPL-2.1-or-later Group: System/Libraries Provides: alsa-lib @@ -149,6 +151,9 @@ make -C doc doc %{?_smp_mflags} mkdir -p %{buildroot}%{_datadir}/alsa/ucm/chtcx2072x install -c -m 0644 %{S:101} %{buildroot}%{_datadir}/alsa/ucm/chtcx2072x/chtcx2072x.conf install -c -m 0644 %{S:102} %{buildroot}%{_datadir}/alsa/ucm/chtcx2072x/HiFi.conf +mkdir -p %{buildroot}%{_datadir}/alsa/ucm/bytcr-rt5640 +install -c -m 0644 %{S:103} %{buildroot}%{_datadir}/alsa/ucm/bytcr-rt5640/bytcr-rt5640.conf +install -c -m 0644 %{S:104} %{buildroot}%{_datadir}/alsa/ucm/bytcr-rt5640/HiFi.conf # clean up unneeded files rm -f %{buildroot}%{_libdir}/*.*a # rm -f %{buildroot}%{_libdir}/alsa-lib/smixer/*.*a diff --git a/bytcr-rt5640-HiFi.conf b/bytcr-rt5640-HiFi.conf new file mode 100644 index 0000000..3cacd0d --- /dev/null +++ b/bytcr-rt5640-HiFi.conf @@ -0,0 +1,466 @@ +# Use case Configuration for bytcr-rt5640 + +SectionVerb { + + EnableSequence [ + cdev "hw:bytcrrt5640" + + # media mixer settings + # compress + cset "name='media0_in Gain 0 Switch' on" + cset "name='media0_in Gain 0 Volume' 0" + + # normal + cset "name='media1_in Gain 0 Switch' on" + cset "name='media1_in Gain 0 Volume' 0" + # swm loopback + cset "name='media2_in Gain 0 Switch' off" + cset "name='media2_in Gain 0 Volume' 0%" + # deep buffer + cset "name='media3_in Gain 0 Switch' on" + cset "name='media3_in Gain 0 Volume' 0" + + cset "name='media0_out mix 0 media0_in Switch' on" + cset "name='media0_out mix 0 media1_in Switch' on" + cset "name='media0_out mix 0 media2_in Switch' off" + cset "name='media0_out mix 0 media3_in Switch' on" + + cset "name='media1_out mix 0 media0_in Switch' off" + cset "name='media1_out mix 0 media1_in Switch' off" + cset "name='media1_out mix 0 media2_in Switch' off" + cset "name='media1_out mix 0 media3_in Switch' off" + + cset "name='pcm0_in Gain 0 Switch' on" + cset "name='pcm0_in Gain 0 Volume' 0" + + cset "name='pcm1_in Gain 0 Switch' off" + cset "name='pcm1_in Gain 0 Volume' 0%" + + # codec0_out settings (used if ssp2 is connected to aif1) + cset "name='codec_out0 mix 0 codec_in0 Switch' off" + cset "name='codec_out0 mix 0 codec_in1 Switch' off" + cset "name='codec_out0 mix 0 media_loop1_in Switch' off" + cset "name='codec_out0 mix 0 media_loop2_in Switch' off" + cset "name='codec_out0 mix 0 pcm0_in Switch' on" + cset "name='codec_out0 mix 0 pcm1_in Switch' off" + cset "name='codec_out0 mix 0 sprot_loop_in Switch' off" + cset "name='codec_out0 Gain 0 Switch' on" + cset "name='codec_out0 Gain 0 Volume' 0" + + # modem_out settings (used if ssp0 is connected to aif2) + cset "name='modem_out mix 0 codec_in0 Switch' off" + cset "name='modem_out mix 0 codec_in1 Switch' off" + cset "name='modem_out mix 0 media_loop1_in Switch' off" + cset "name='modem_out mix 0 media_loop2_in Switch' off" + cset "name='modem_out mix 0 pcm0_in Switch' on" + cset "name='modem_out mix 0 pcm1_in Switch' off" + cset "name='modem_out mix 0 sprot_loop_in Switch' off" + cset "name='modem_out Gain 0 Switch' on" + cset "name='modem_out Gain 0 Volume' 0" + + # input settings + # pcm1_out settings + + # input used when SSP2 is connected + cset "name='codec_in0 Gain 0 Switch' on" + cset "name='codec_in0 Gain 0 Volume' 0" + + # input used when SSP0 is connected + cset "name='modem_in Gain 0 Switch' on" + cset "name='modem_in Gain 0 Volume' 0" + + cset "name='pcm1_out mix 0 codec_in0 Switch' on" + cset "name='pcm1_out mix 0 modem_in Switch' on" + cset "name='pcm1_out mix 0 codec_in1 Switch' off" + cset "name='pcm1_out mix 0 media_loop1_in Switch' off" + cset "name='pcm1_out mix 0 media_loop2_in Switch' off" + cset "name='pcm1_out mix 0 pcm0_in Switch' off" + cset "name='pcm1_out mix 0 pcm1_in Switch' off" + cset "name='pcm1_out mix 0 sprot_loop_in Switch' off" + + cset "name='pcm1_out Gain 0 Switch' on" + cset "name='pcm1_out Gain 0 Volume' 0" + + # disable codec_out1 + cset "name='codec_out1 mix 0 codec_in0 Switch' off" + cset "name='codec_out1 mix 0 codec_in1 Switch' off" + cset "name='codec_out1 mix 0 media_loop1_in Switch' off" + cset "name='codec_out1 mix 0 media_loop2_in Switch' off" + cset "name='codec_out1 mix 0 pcm0_in Switch' off" + cset "name='codec_out1 mix 0 pcm1_in Switch' off" + cset "name='codec_out1 mix 0 sprot_loop_in Switch' off" + cset "name='codec_out1 Gain 0 Switch' off" + cset "name='codec_out1 Gain 0 Volume' 0%" + + # disable codec_in1 + cset "name='codec_in1 Gain 0 Switch' off" + cset "name='codec_in1 Gain 0 Volume' 0%" + + # disable all loops + cset "name='media_loop1_out mix 0 codec_in0 Switch' off" + cset "name='media_loop1_out mix 0 codec_in1 Switch' off" + cset "name='media_loop1_out mix 0 media_loop1_in Switch' off" + cset "name='media_loop1_out mix 0 media_loop2_in Switch' off" + cset "name='media_loop1_out mix 0 pcm0_in Switch' off" + cset "name='media_loop1_out mix 0 pcm1_in Switch' off" + cset "name='media_loop1_out mix 0 sprot_loop_in Switch' off" + + cset "name='media_loop2_out mix 0 codec_in0 Switch' off" + cset "name='media_loop2_out mix 0 codec_in1 Switch' off" + cset "name='media_loop2_out mix 0 media_loop1_in Switch' off" + cset "name='media_loop2_out mix 0 media_loop2_in Switch' off" + cset "name='media_loop2_out mix 0 pcm0_in Switch' off" + cset "name='media_loop2_out mix 0 pcm1_in Switch' off" + cset "name='media_loop2_out mix 0 sprot_loop_in Switch' off" + + cset "name='sprot_loop_out mix 0 codec_in0 Switch' off" + cset "name='sprot_loop_out mix 0 codec_in1 Switch' off" + cset "name='sprot_loop_out mix 0 media_loop1_in Switch' off" + cset "name='sprot_loop_out mix 0 media_loop2_in Switch' off" + cset "name='sprot_loop_out mix 0 pcm0_in Switch' off" + cset "name='sprot_loop_out mix 0 pcm1_in Switch' off" + cset "name='sprot_loop_out mix 0 sprot_loop_in Switch' off" + + # RT5640 default output routing + cset "name='OUT MIXL DAC L1 Switch' on" + cset "name='OUT MIXR DAC R1 Switch' on" + + # uncomment for loopback mic->speakers + # cset "name='SPOL MIX BST1 Switch' on" + # cset "name='SPOR MIX BST1 Switch' on" + + + # uncomment for loopback playback -> capture + # cset "name='RECMIXL OUT MIXL Switch' on" + # cset "name='RECMIXR OUT MIXR 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" + cset "name='DIG MIXL DAC L2 Switch' on" + + ] + + DisableSequence [ + ] + + # ALSA PCM + Value { + # ALSA PCM device for HiFi + PlaybackPCM "hw:bytcrrt5640" + CapturePCM "hw:bytcrrt5640" + } +} + +SectionDevice."DigitalMics" { + Comment "DigitalMics capture, NOT TESTED" + + ConflictingDevice [ + "IN1-InternalMics" + "IN3-InternalMics" + "HeadsetMic" + ] + + EnableSequence [ + cdev "hw:bytcrrt5640" + + cset "name='Stereo ADC2 Mux' DMIC1" + cset "name='Stereo ADC MIXL ADC2 Switch' on" + cset "name='Stereo ADC MIXR ADC2 Switch' on" + cset "name='Internal Mic Switch' on" + + ] + + DisableSequence [ + cdev "hw:bytcrrt5640" + + cset "name='Stereo ADC MIXL ADC2 Switch' off" + cset "name='Stereo ADC MIXR ADC2 Switch' off" + cset "name='Internal Mic Switch' off" + + ] + + Value { + CaptureChannels 2 + } +} + +SectionDevice."HeadsetMic" { + Comment "Headset Mic capture" + + ConflictingDevice [ + "IN1-InternalMics" + "IN3-InternalMics" + "DigitalMics" + ] + + EnableSequence [ + cdev "hw:bytcrrt5640" + + cset "name='Headset Mic Switch' on" + + # default for IN2 Boost seems to saturate + cset "name='IN2 Boost' 1" + + cset "name='RECMIXL BST2 Switch' on" + cset "name='RECMIXR BST2 Switch' on" + + cset "name='Stereo ADC1 Mux' ADC" + cset "name='Stereo ADC MIXL ADC1 Switch' on" + cset "name='Stereo ADC MIXR ADC1 Switch' on" + + ] + + DisableSequence [ + cdev "hw:bytcrrt5640" + + cset "name='Stereo ADC MIXL ADC1 Switch' off" + cset "name='Stereo ADC MIXR ADC1 Switch' off" + cset "name='Headset Mic Switch' off" + + ] + + Value { + CaptureChannels 2 + } +} + +SectionDevice."IN1-InternalMics" { + Comment "Internal IN1 analog Mic capture" + + ConflictingDevice [ + "DigitalMics" + "HeadsetMic" + "IN3-InternalMics" + ] + + EnableSequence [ + cdev "hw:bytcrrt5640" + + cset "name='Internal Mic Switch' on" + + # default for IN1 Boost seems to saturate + cset "name='IN1 Boost' 1" + + cset "name='RECMIXL BST1 Switch' on" + cset "name='RECMIXR BST1 Switch' on" + cset "name='RECMIXL BST3 Switch' off" + cset "name='RECMIXR BST3 Switch' off" + + cset "name='Stereo ADC1 Mux' ADC" + cset "name='Stereo ADC MIXL ADC1 Switch' on" + cset "name='Stereo ADC MIXR ADC1 Switch' on" + + cset "name='Mono ADC L1 Mux' 1" + cset "name='Mono ADC R1 Mux' 1" + + cset "name='Mono ADC MIXL ADC1 Switch' on" + cset "name='Mono ADC MIXR ADC1 Switch' on" + + cset "name='Mono ADC Capture Switch' on" + ] + + DisableSequence [ + cdev "hw:bytcrrt5640" + + cset "name='Stereo ADC MIXL ADC1 Switch' off" + cset "name='Stereo ADC MIXR ADC1 Switch' off" + cset "name='Internal Mic Switch' off" + + cset "name='Mono ADC MIXL ADC1 Switch' off" + cset "name='Mono ADC MIXR ADC1 Switch' off" + + cset "name='Mono ADC Capture Switch' off" + + ] + + Value { + CaptureChannels 2 + } +} + +SectionDevice."IN3-InternalMics" { + Comment "Internal IN3 analog Mic capture" + + ConflictingDevice [ + "DigitalMics" + "HeadsetMic" + "IN1-InternalMics" + ] + + EnableSequence [ + cdev "hw:bytcrrt5640" + + cset "name='Internal Mic Switch' on" + + # default for IN3 Boost seems to too low + cset "name='IN3 Boost' 8" + + cset "name='RECMIXL BST1 Switch' off" + cset "name='RECMIXR BST1 Switch' off" + cset "name='RECMIXL BST3 Switch' on" + cset "name='RECMIXR BST3 Switch' on" + + cset "name='Stereo ADC1 Mux' ADC" + cset "name='Stereo ADC MIXL ADC1 Switch' on" + cset "name='Stereo ADC MIXR ADC1 Switch' on" + + cset "name='Mono ADC L1 Mux' 1" + cset "name='Mono ADC R1 Mux' 1" + cset "name='Mono ADC MIXL ADC1 Switch' on" + cset "name='Mono ADC MIXR ADC1 Switch' on" + + cset "name='Mono ADC Capture Switch' on" + + ] + + DisableSequence [ + cdev "hw:bytcrrt5640" + + cset "name='Stereo ADC MIXL ADC1 Switch' off" + cset "name='Stereo ADC MIXR ADC1 Switch' off" + cset "name='Internal Mic Switch' off" + + cset "name='Mono ADC Capture Switch' off" + ] + + Value { + CaptureChannels 2 + } +} + +SectionDevice."Headphones" { + Comment "Headphones playback" + + ConflictingDevice [ + "Speaker" + ] + + EnableSequence [ + cdev "hw:bytcrrt5640" + + cset "name='DAC MIXL INF1 Switch' on" + cset "name='DAC MIXR INF1 Switch' on" + cset "name='Stereo DAC MIXL DAC L1 Switch' on" + cset "name='Stereo DAC MIXR DAC R1 Switch' on" + set "name='Stereo DAC MIXL DAC L2 Switch' on" + cset "name='Stereo DAC MIXR DAC R2 Switch' on" + cset "name='HPO MIX HPVOL Switch' on" + cset "name='Headphone Switch' on" + cset "name='HP Channel Switch' on" + cset "name='Speaker Switch' off" + cset "name='HP L Playback Switch' on" + cset "name='HP R Playback Switch' on" + cset "name='HP Playback Volume' 29" + + ] + + DisableSequence [ + cdev "hw:bytcrrt5640" + cset "name='Headphone Switch' off" + cset "name='HP Channel Switch' off" + cset "name='HP L Playback Switch' off" + cset "name='HP R Playback Switch' off" + cset "name='HP Playback Volume' 0" + ] + + Value { + PlaybackChannels "2" + } +} + +SectionDevice."Speaker" { + Comment "Speaker playback" + + ConflictingDevice [ + "Headphones" + "MonoSpeaker" + ] + + EnableSequence [ + cdev "hw:bytcrrt5640" + + cset "name='DAC MIXL INF1 Switch' on" + cset "name='DAC MIXR INF1 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='SPK MIXL DAC L1 Switch' on" + cset "name='SPK MIXR DAC R1 Switch' on" + cset "name='SPOL MIX SPKVOL L Switch' on" + cset "name='SPOR MIX SPKVOL R Switch' on" + cset "name='Speaker Switch' on" + cset "name='Speaker Channel Switch' on" + cset "name='Headphone Switch' off" + cset "name='Speaker L Playback Switch' on" + cset "name='Speaker R Playback Switch' on" + cset "name='Speaker Playback Volume' 29" + + ] + + DisableSequence [ + cdev "hw:bytcrrt5640" + cset "name='Speaker Switch' off" + cset "name='Speaker Channel Switch' off" + cset "name='Speaker L Playback Switch' off" + cset "name='Speaker R Playback Switch' off" + cset "name='Speaker Playback Volume' 0" + ] + + Value { + PlaybackChannels "2" + } +} + +SectionDevice."MonoSpeaker" { + Comment "MonoSpeaker playback" + + ConflictingDevice [ + "Headphones" + "Speaker" + ] + + EnableSequence [ + cdev "hw:bytcrrt5640" + + cset "name='DAC MIXL INF1 Switch' on" + cset "name='DAC MIXR INF1 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='SPK MIXL DAC L1 Switch' on" + cset "name='SPK MIXR DAC R1 Switch' on" + 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 Switch' on" + cset "name='Speaker Channel Switch' on" + cset "name='Headphone Switch' off" + cset "name='Speaker L Playback Switch' on" + cset "name='Speaker R Playback Switch' on" + cset "name='Speaker Playback Volume' 29" + + ] + + DisableSequence [ + cdev "hw:bytcrrt5640" + cset "name='Speaker Switch' off" + cset "name='Speaker Channel Switch' off" + cset "name='Speaker L Playback Switch' off" + cset "name='Speaker R Playback Switch' off" + cset "name='Speaker Playback Volume' 0" + ] + + Value { + PlaybackChannels "2" + } +} + diff --git a/bytcr-rt5640.conf b/bytcr-rt5640.conf new file mode 100644 index 0000000..d009ae3 --- /dev/null +++ b/bytcr-rt5640.conf @@ -0,0 +1,8 @@ +SectionUseCase."HiFi" { + File "HiFi.conf" + Comment "Play HiFi quality Music" +} + +SectionDefaults [ + cdev "hw:bytcrrt5640" +]