conf/ucm: bytcr-rt5640: Add generic bytcr-rt5640 UCM profile

This commit adds the generic UCM profile for bytcr-rt5640 boards from:
https://github.com/plbossart/UCM, plus the fixes from this pull-req:
https://github.com/plbossart/UCM/pull/31

The profile has been split up into separate per input / output files to
allow for creation of long-name profiles with the specific input / output
combinations found on a board without needing to copy and paste things.

Note this profile exports all inputs and both stereo/mono speaker setups
even though a typical device will not use all. Ideally a long-name based
device specific profile made up of the various parts should be used
instead.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
Hans de Goede 2018-05-31 17:10:22 +02:00 committed by Jaroslav Kysela
parent ad5aea8922
commit 0f6f2a854f
16 changed files with 522 additions and 0 deletions

View file

@ -720,6 +720,8 @@ AC_OUTPUT(Makefile doc/Makefile doc/pictures/Makefile doc/doxygen.cfg \
src/conf/ucm/ASUSTeKCOMPUTERINC.-T100HAN-1.0-T100HAN/Makefile \ src/conf/ucm/ASUSTeKCOMPUTERINC.-T100HAN-1.0-T100HAN/Makefile \
src/conf/ucm/broadwell-rt286/Makefile \ src/conf/ucm/broadwell-rt286/Makefile \
src/conf/ucm/broxton-rt298/Makefile \ src/conf/ucm/broxton-rt298/Makefile \
src/conf/ucm/bytcr/Makefile \
src/conf/ucm/bytcr-rt5640/Makefile \
src/conf/ucm/bytcr-rt5651/Makefile \ src/conf/ucm/bytcr-rt5651/Makefile \
src/conf/ucm/chtrt5645/Makefile \ src/conf/ucm/chtrt5645/Makefile \
src/conf/ucm/chtrt5645-mono-speaker-analog-mic/Makefile \ src/conf/ucm/chtrt5645-mono-speaker-analog-mic/Makefile \
@ -734,6 +736,7 @@ AC_OUTPUT(Makefile doc/Makefile doc/pictures/Makefile doc/doxygen.cfg \
src/conf/ucm/PandaBoard/Makefile \ src/conf/ucm/PandaBoard/Makefile \
src/conf/ucm/PandaBoardES/Makefile \ src/conf/ucm/PandaBoardES/Makefile \
src/conf/ucm/PAZ00/Makefile \ src/conf/ucm/PAZ00/Makefile \
src/conf/ucm/rt5640/Makefile \
src/conf/ucm/SDP4430/Makefile \ src/conf/ucm/SDP4430/Makefile \
src/conf/ucm/skylake-rt286/Makefile \ src/conf/ucm/skylake-rt286/Makefile \
src/conf/ucm/TECLAST-X80Pro-Defaultstring-CherryTrailCR/Makefile \ src/conf/ucm/TECLAST-X80Pro-Defaultstring-CherryTrailCR/Makefile \

View file

@ -2,6 +2,8 @@ SUBDIRS=\
ASUSTeKCOMPUTERINC.-T100HAN-1.0-T100HAN \ ASUSTeKCOMPUTERINC.-T100HAN-1.0-T100HAN \
broadwell-rt286 \ broadwell-rt286 \
broxton-rt298 \ broxton-rt298 \
bytcr \
bytcr-rt5640 \
bytcr-rt5651 \ bytcr-rt5651 \
chtrt5645 \ chtrt5645 \
chtrt5645-mono-speaker-analog-mic \ chtrt5645-mono-speaker-analog-mic \
@ -16,6 +18,7 @@ LENOVO-80XF-LenovoMIIX320_10ICR-LNVNB161216 \
PandaBoard \ PandaBoard \
PandaBoardES \ PandaBoardES \
PAZ00 \ PAZ00 \
rt5640 \
SDP4430 \ SDP4430 \
skylake-rt286 \ skylake-rt286 \
TECLAST-X80Pro-Defaultstring-CherryTrailCR \ TECLAST-X80Pro-Defaultstring-CherryTrailCR \

View file

@ -0,0 +1,29 @@
# Use case Configuration for bytcr-rt5640
<searchdir:ucm>
SectionVerb {
EnableSequence [
cdev "hw:bytcrrt5640"
<bytcr/PlatformEnableSeq.conf>
<rt5640/EnableSeq.conf>
]
DisableSequence [
]
Value {
PlaybackPCM "hw:bytcrrt5640"
CapturePCM "hw:bytcrrt5640"
}
}
<rt5640/Speaker.conf>
<rt5640/MonoSpeaker.conf>
<rt5640/HeadPhones.conf>
<rt5640/DigitalMics.conf>
<rt5640/IN1-InternalMic.conf>
<rt5640/IN3-InternalMic.conf>
<rt5640/HeadsetMic.conf>

View file

@ -0,0 +1,4 @@
alsaconfigdir = @ALSA_CONFIG_DIR@
ucmdir = $(alsaconfigdir)/ucm/bytcr-rt5640
ucm_DATA = bytcr-rt5640.conf HiFi.conf
EXTRA_DIST = $(ucm_DATA)

View file

@ -0,0 +1,8 @@
SectionUseCase."HiFi" {
File "HiFi.conf"
Comment "Play HiFi quality Music"
}
SectionDefaults [
cdev "hw:bytcrrt5640"
]

View file

@ -0,0 +1,4 @@
alsaconfigdir = @ALSA_CONFIG_DIR@
ucmdir = $(alsaconfigdir)/ucm/bytcr
ucm_DATA = PlatformEnableSeq.conf
EXTRA_DIST = $(ucm_DATA)

View file

@ -0,0 +1,115 @@
# 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)
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)
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
# 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"
# pcm1_out settings
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"

View file

@ -0,0 +1,31 @@
SectionDevice."DigitalMics" {
Comment "DigitalMics capture"
ConflictingDevice [
"IN1-InternalMics"
"IN3-InternalMics"
"HeadsetMic"
]
EnableSequence [
cdev "hw:bytcrrt5640"
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
}
}

View file

@ -0,0 +1,41 @@
# 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"
# Input Configuration
cset "name='Stereo ADC1 Mux' ADC"
cset "name='Stereo ADC2 Mux' DMIC1"
cset "name='Mono ADC L1 Mux' 1"
cset "name='Mono ADC R1 Mux' 1"
# 47=0dB, 0.375 dB/step, set it to 6 dB to help with soft mics
cset "name='ADC Capture Volume' 63"
# Set ADC Boost Gain to 3dB higher vals result in too much noise
cset "name='ADC Boost Gain' 1"
# Set IN1/IN3 internal mic boost to 8 (max)
# Set IN2 headset-mic boost to 1, headset mics are quite loud
cset "name='IN1 Boost' 8"
cset "name='IN2 Boost' 1"
cset "name='IN3 Boost' 8"
cset "name='Internal Mic Switch' off"
cset "name='Headset Mic Switch' off"
cset "name='ADC Capture Switch' on"

View file

@ -0,0 +1,41 @@
SectionDevice."Headphones" {
Comment "Headphones playback"
ConflictingDevice [
"Speaker"
"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='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"
JackControl "Headphone Jack"
}
}

View file

@ -0,0 +1,48 @@
SectionDevice."HeadsetMic" {
Comment "Headset Mic capture"
ConflictingDevice [
"IN1-InternalMics"
"IN3-InternalMics"
"DigitalMics"
]
EnableSequence [
cdev "hw:bytcrrt5640"
cset "name='Headset Mic Switch' on"
cset "name='RECMIXL BST2 Switch' on"
cset "name='RECMIXR BST2 Switch' on"
cset "name='Stereo ADC MIXL ADC1 Switch' on"
cset "name='Stereo ADC MIXR ADC1 Switch' on"
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='RECMIXL BST2 Switch' off"
cset "name='RECMIXR BST2 Switch' off"
cset "name='Headset 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
JackControl "Headset Mic Jack"
}
}

View file

@ -0,0 +1,50 @@
SectionDevice."IN1-InternalMics" {
Comment "Internal IN1 analog Mic capture"
ConflictingDevice [
"DigitalMics"
"HeadsetMic"
"IN3-InternalMics"
]
EnableSequence [
cdev "hw:bytcrrt5640"
cset "name='Internal Mic Switch' on"
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 ADC MIXL ADC1 Switch' on"
cset "name='Stereo ADC MIXR ADC1 Switch' on"
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='RECMIXL BST1 Switch' off"
cset "name='RECMIXR BST1 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
}
}

View file

@ -0,0 +1,50 @@
SectionDevice."IN3-InternalMics" {
Comment "Internal IN3 analog Mic capture"
ConflictingDevice [
"DigitalMics"
"HeadsetMic"
"IN1-InternalMics"
]
EnableSequence [
cdev "hw:bytcrrt5640"
cset "name='Internal Mic Switch' on"
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 ADC MIXL ADC1 Switch' on"
cset "name='Stereo ADC MIXR ADC1 Switch' on"
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='RECMIXL BST3 Switch' off"
cset "name='RECMIXR BST3 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
}
}

View file

@ -0,0 +1,5 @@
alsaconfigdir = @ALSA_CONFIG_DIR@
ucmdir = $(alsaconfigdir)/ucm/rt5640
ucm_DATA = DigitalMics.conf EnableSeq.conf HeadPhones.conf HeadsetMic.conf \
IN1-InternalMic.conf IN3-InternalMic.conf MonoSpeaker.conf Speaker.conf
EXTRA_DIST = $(ucm_DATA)

View file

@ -0,0 +1,45 @@
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' 35"
]
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"
}
}

View file

@ -0,0 +1,45 @@
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"
# undo MonoSpeaker mixing of right channel to left speaker
cset "name='SPOL MIX SPKVOL R Switch' off"
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' 35"
]
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"
}
}