On 8/31/19 9:58 AM, Hans de Goede wrote:
Add an UCM profile for Intel boards with a RT5672 codec.
Re-use the existing platform enable and disable sequences for BYT/CHT SST support and add a codecs/rt5672 dir with codec specific enable / disable sequences for the various inputs and outputs.
This is partly based on earlier work done here: https://github.com/plbossart/UCM/tree/master/cht-bsw-rt5672
Thanks for restarting this Hans.
I can't recall if I did any work here, took default settings from Bard Liao (when he was a Realtek) or if I just took examples from a Chromebook UCM file. I know there's a Dell tablet which uses this codec, but I just can't recall other devices.
Also how does the selection of the configs work, I don't see the same thing as in bytcr_rt5640/51 to play with the card long name and quirks. Do you expect the user to select the 'right' configs based on experimental trial-and-error.
Signed-off-by: Hans de Goede hdegoede@redhat.com
configure.ac | 2 + src/conf/ucm/Makefile.am | 1 + src/conf/ucm/cht-bsw-rt5672/HiFi.conf | 27 +++++++++++ src/conf/ucm/cht-bsw-rt5672/Makefile.am | 4 ++ .../ucm/cht-bsw-rt5672/cht-bsw-rt5672.conf | 6 +++ src/conf/ucm/codecs/Makefile.am | 1 + src/conf/ucm/codecs/rt5672/DMIC1.conf | 28 +++++++++++ src/conf/ucm/codecs/rt5672/DMIC2.conf | 28 +++++++++++ src/conf/ucm/codecs/rt5672/EnableSeq.conf | 48 +++++++++++++++++++ src/conf/ucm/codecs/rt5672/HeadPhones.conf | 23 +++++++++ src/conf/ucm/codecs/rt5672/HeadsetMic.conf | 38 +++++++++++++++ src/conf/ucm/codecs/rt5672/Makefile.am | 5 ++ src/conf/ucm/codecs/rt5672/MonoSpeaker.conf | 26 ++++++++++ src/conf/ucm/codecs/rt5672/Speaker.conf | 22 +++++++++ 14 files changed, 259 insertions(+) create mode 100644 src/conf/ucm/cht-bsw-rt5672/HiFi.conf create mode 100644 src/conf/ucm/cht-bsw-rt5672/Makefile.am create mode 100644 src/conf/ucm/cht-bsw-rt5672/cht-bsw-rt5672.conf create mode 100644 src/conf/ucm/codecs/rt5672/DMIC1.conf create mode 100644 src/conf/ucm/codecs/rt5672/DMIC2.conf create mode 100644 src/conf/ucm/codecs/rt5672/EnableSeq.conf create mode 100644 src/conf/ucm/codecs/rt5672/HeadPhones.conf create mode 100644 src/conf/ucm/codecs/rt5672/HeadsetMic.conf create mode 100644 src/conf/ucm/codecs/rt5672/Makefile.am create mode 100644 src/conf/ucm/codecs/rt5672/MonoSpeaker.conf create mode 100644 src/conf/ucm/codecs/rt5672/Speaker.conf
diff --git a/configure.ac b/configure.ac index 2e955760..9ccca7aa 100644 --- a/configure.ac +++ b/configure.ac @@ -741,6 +741,7 @@ AC_OUTPUT(Makefile doc/Makefile doc/pictures/Makefile doc/doxygen.cfg \ src/conf/ucm/bytcr-rt5651-stereo-spk-in1-mic/Makefile \ src/conf/ucm/bytcr-rt5651-stereo-spk-in2-mic/Makefile \ src/conf/ucm/bytcr-rt5651-stereo-spk-in12-mic/Makefile \
src/conf/ucm/chtnau8824/Makefile \ src/conf/ucm/chtrt5645/Makefile \ src/conf/ucm/chtrt5645-mono-speaker-analog-mic/Makefile \src/conf/ucm/cht-bsw-rt5672/Makefile \
@@ -772,6 +773,7 @@ AC_OUTPUT(Makefile doc/Makefile doc/pictures/Makefile doc/doxygen.cfg \ src/conf/ucm/codecs/rt5640/Makefile \ src/conf/ucm/codecs/rt5645/Makefile \ src/conf/ucm/codecs/rt5651/Makefile \
src/conf/ucm/platforms/Makefile \ src/conf/ucm/platforms/bytcr/Makefile \ src/conf/topology/Makefile \src/conf/ucm/codecs/rt5672/Makefile \
diff --git a/src/conf/ucm/Makefile.am b/src/conf/ucm/Makefile.am index 02257048..2ed4e1a3 100644 --- a/src/conf/ucm/Makefile.am +++ b/src/conf/ucm/Makefile.am @@ -25,6 +25,7 @@ bytcr-rt5651-stereo-spk-dmic-mic \ bytcr-rt5651-stereo-spk-in1-mic \ bytcr-rt5651-stereo-spk-in2-mic \ bytcr-rt5651-stereo-spk-in12-mic \ +cht-bsw-rt5672 \ chtnau8824 \ chtrt5645 \ chtrt5645-mono-speaker-analog-mic \ diff --git a/src/conf/ucm/cht-bsw-rt5672/HiFi.conf b/src/conf/ucm/cht-bsw-rt5672/HiFi.conf new file mode 100644 index 00000000..b83099d8 --- /dev/null +++ b/src/conf/ucm/cht-bsw-rt5672/HiFi.conf @@ -0,0 +1,27 @@ +# Adapted from https://github.com/plbossart/UCM/tree/master/cht-bsw-rt5672
+SectionVerb {
- EnableSequence [
cdev "hw:chtbswrt5672"
<platforms/bytcr/PlatformEnableSeq.conf>
<codecs/rt5672/EnableSeq.conf>
- ]
- DisableSequence [
cdev "hw:chtbswrt5672"
<platforms/bytcr/PlatformDisableSeq.conf>
- ]
- Value {
PlaybackPCM "hw:chtbswrt5672"
CapturePCM "hw:chtbswrt5672"
- }
+}
+<codecs/rt5672/Speaker.conf> +<codecs/rt5672/MonoSpeaker.conf> +<codecs/rt5672/HeadPhones.conf>
+<codecs/rt5672/DMIC1.conf> +<codecs/rt5672/DMIC2.conf> +<codecs/rt5672/HeadsetMic.conf> diff --git a/src/conf/ucm/cht-bsw-rt5672/Makefile.am b/src/conf/ucm/cht-bsw-rt5672/Makefile.am new file mode 100644 index 00000000..c3d557fa --- /dev/null +++ b/src/conf/ucm/cht-bsw-rt5672/Makefile.am @@ -0,0 +1,4 @@ +alsaconfigdir = @ALSA_CONFIG_DIR@ +ucmdir = $(alsaconfigdir)/ucm/cht-bsw-rt5672 +ucm_DATA = cht-bsw-rt5672.conf HiFi.conf +EXTRA_DIST = $(ucm_DATA) diff --git a/src/conf/ucm/cht-bsw-rt5672/cht-bsw-rt5672.conf b/src/conf/ucm/cht-bsw-rt5672/cht-bsw-rt5672.conf new file mode 100644 index 00000000..c79024d9 --- /dev/null +++ b/src/conf/ucm/cht-bsw-rt5672/cht-bsw-rt5672.conf @@ -0,0 +1,6 @@ +# Adapted from https://github.com/plbossart/UCM/tree/master/cht-bsw-rt5672
+SectionUseCase."HiFi" {
- File "HiFi.conf"
- Comment "Play HiFi quality Music"
+} diff --git a/src/conf/ucm/codecs/Makefile.am b/src/conf/ucm/codecs/Makefile.am index 5987b9cf..17c4ebf9 100644 --- a/src/conf/ucm/codecs/Makefile.am +++ b/src/conf/ucm/codecs/Makefile.am @@ -4,4 +4,5 @@ es8316 \ rt5640 \ rt5645 \ rt5651 \ +rt5672 \ nau8824 diff --git a/src/conf/ucm/codecs/rt5672/DMIC1.conf b/src/conf/ucm/codecs/rt5672/DMIC1.conf new file mode 100644 index 00000000..9a8db1a5 --- /dev/null +++ b/src/conf/ucm/codecs/rt5672/DMIC1.conf @@ -0,0 +1,28 @@ +SectionDevice."DigitalMic-DMIC1" {
- Comment "Internal Digital Microphone on DMIC1"
- ConflictingDevice [
"DigitalMic-DMIC2"
"HeadsetMic"
- ]
- EnableSequence [
cdev "hw:chtbswrt5672"
cset "name='Int Mic Switch' on"
cset "name='Stereo1 DMIC Mux' DMIC1"
cset "name='Stereo1 ADC 2 Mux' DMIC"
cset "name='Sto1 ADC MIXL ADC2 Switch' on"
cset "name='Sto1 ADC MIXR ADC2 Switch' on"
- ]
- DisableSequence [
cdev "hw:chtbswrt5672"
cset "name='Int Mic Switch' off"
cset "name='Sto1 ADC MIXL ADC2 Switch' off"
cset "name='Sto1 ADC MIXR ADC2 Switch' off"
- ]
- Value {
CaptureChannels 2
- }
+} diff --git a/src/conf/ucm/codecs/rt5672/DMIC2.conf b/src/conf/ucm/codecs/rt5672/DMIC2.conf new file mode 100644 index 00000000..b960436e --- /dev/null +++ b/src/conf/ucm/codecs/rt5672/DMIC2.conf @@ -0,0 +1,28 @@ +SectionDevice."DigitalMic-DMIC2" {
- Comment "Internal Digital Microphone on DMIC2"
- ConflictingDevice [
"DigitalMic-DMIC1"
"HeadsetMic"
- ]
- EnableSequence [
cdev "hw:chtbswrt5672"
cset "name='Int Mic Switch' on"
cset "name='Stereo1 DMIC Mux' DMIC2"
cset "name='Stereo1 ADC 2 Mux' DMIC"
cset "name='Sto1 ADC MIXL ADC2 Switch' on"
cset "name='Sto1 ADC MIXR ADC2 Switch' on"
- ]
- DisableSequence [
cdev "hw:chtbswrt5672"
cset "name='Int Mic Switch' off"
cset "name='Sto1 ADC MIXL ADC2 Switch' off"
cset "name='Sto1 ADC MIXR ADC2 Switch' off"
- ]
- Value {
CaptureChannels 2
- }
+} diff --git a/src/conf/ucm/codecs/rt5672/EnableSeq.conf b/src/conf/ucm/codecs/rt5672/EnableSeq.conf new file mode 100644 index 00000000..bd4f357c --- /dev/null +++ b/src/conf/ucm/codecs/rt5672/EnableSeq.conf @@ -0,0 +1,48 @@ +# Playback (I2S1)
+# common +cset "name='DAC1 L Mux' IF1 DAC" +cset "name='DAC1 R Mux' IF1 DAC" +cset "name='DAC1 MIXL DAC1 Switch' on" +cset "name='DAC1 MIXR DAC1 Switch' on" +cset "name='Stereo DAC MIXL DAC L1 Switch' on" +cset "name='Stereo DAC MIXL DAC R1 Switch' off" +cset "name='Stereo DAC MIXR DAC R1 Switch' on" +cset "name='Stereo DAC MIXR DAC L1 Switch' off"
+# speaker +cset "name='PDM1 L Mux' Stereo DAC" +cset "name='PDM1 R Mux' Stereo DAC"
+# headphone +cset "name='HPOVOL MIXL DAC1 Switch' on" +cset "name='HPOVOL MIXR DAC1 Switch' on" +cset "name='HPO MIX HPVOL Switch' on"
+# line out +# cset "name='OUT MIXL DAC L1 Switch' on" +# cset "name='OUT MIXR DAC R1 Switch' on" +# cset "name='LOUT MIX OUTMIX L Switch' on" +# cset "name='LOUT MIX OUTMIX R Switch' on"
+# 47=0dB, 0.375 dB/step +cset "name='ADC Capture Volume' 47" +cset "name='ADC Capture Switch' on"
+# Headset mic is quite soft, boost it a bit, 1 = 20dB which is the first +# available boost step +cset "name='IN1 Boost Volume' 1"
+# Start with all outputs / inputs disabled +cset "name='Ext Spk Switch' off" +cset "name='Headphone Switch' off" +cset "name='Int Mic Switch' off" +cset "name='Headset Mic Switch' off" +cset "name='Sto1 ADC MIXL ADC1 Switch' off" +cset "name='Sto1 ADC MIXR ADC1 Switch' off" +cset "name='Sto1 ADC MIXL ADC2 Switch' off" +cset "name='Sto1 ADC MIXR ADC2 Switch' off" +cset "name='RECMIXL BST1 Switch' off" +cset "name='RECMIXR BST1 Switch' off" +cset "name='RECMIXL BST2 Switch' off" +cset "name='RECMIXR BST2 Switch' off" diff --git a/src/conf/ucm/codecs/rt5672/HeadPhones.conf b/src/conf/ucm/codecs/rt5672/HeadPhones.conf new file mode 100644 index 00000000..cb8aad2d --- /dev/null +++ b/src/conf/ucm/codecs/rt5672/HeadPhones.conf @@ -0,0 +1,23 @@ +SectionDevice."Headphones" {
- Comment "Headphones"
- ConflictingDevice [
"Speaker"
"MonoSpeaker"
- ]
- EnableSequence [
cdev "hw:chtbswrt5672"
cset "name='Headphone Switch' on"
- ]
- DisableSequence [
cdev "hw:chtbswrt5672"
cset "name='Headphone Switch' off"
- ]
- Value {
PlaybackChannels "2"
JackControl "Headphone Jack"
- }
+} diff --git a/src/conf/ucm/codecs/rt5672/HeadsetMic.conf b/src/conf/ucm/codecs/rt5672/HeadsetMic.conf new file mode 100644 index 00000000..cc6d8d56 --- /dev/null +++ b/src/conf/ucm/codecs/rt5672/HeadsetMic.conf @@ -0,0 +1,38 @@ +SectionDevice."HeadsetMic" {
- Comment "Headset Microphone"
- ConflictingDevice [
"DigitalMic-DMIC1"
"DigitalMic-DMIC2"
- ]
- EnableSequence [
cdev "hw:chtbswrt5672"
cset "name='Headset Mic Switch' on"
cset "name='RECMIXL BST1 Switch' on"
cset "name='RECMIXR BST1 Switch' on"
cset "name='Sto1 ADC MIXL ADC1 Switch' on"
cset "name='Sto1 ADC MIXR ADC1 Switch' on"
# For unknown reasons the headset mic sound is only recorded
# on the left channel, we tweak the data-stream reception to
# use the left samples for both slots, so that we get a stereo
# stream with the mic sound on both channels
cset "name='codec_in rx deinterleaver codec_in0_1' 1"
- ]
- DisableSequence [
cdev "hw:chtbswrt5672"
cset "name='Headset Mic Switch' off"
cset "name='RECMIXL BST1 Switch' off"
cset "name='RECMIXR BST1 Switch' off"
cset "name='Sto1 ADC MIXL ADC1 Switch' off"
cset "name='Sto1 ADC MIXR ADC1 Switch' off"
# Undo data-stream reception mono-mix workaround
cset "name='codec_in rx deinterleaver codec_in0_1' 2"
- ]
- Value {
CaptureChannels "2"
JackControl "Headset Mic Jack"
- }
+} diff --git a/src/conf/ucm/codecs/rt5672/Makefile.am b/src/conf/ucm/codecs/rt5672/Makefile.am new file mode 100644 index 00000000..feba0b76 --- /dev/null +++ b/src/conf/ucm/codecs/rt5672/Makefile.am @@ -0,0 +1,5 @@ +alsaconfigdir = @ALSA_CONFIG_DIR@ +ucmdir = $(alsaconfigdir)/ucm/codecs/rt5672 +ucm_DATA = DMIC1.conf DMIC2.conf EnableSeq.conf HeadPhones.conf \
HeadsetMic.conf MonoSpeaker.conf Speaker.conf
+EXTRA_DIST = $(ucm_DATA) diff --git a/src/conf/ucm/codecs/rt5672/MonoSpeaker.conf b/src/conf/ucm/codecs/rt5672/MonoSpeaker.conf new file mode 100644 index 00000000..828a1154 --- /dev/null +++ b/src/conf/ucm/codecs/rt5672/MonoSpeaker.conf @@ -0,0 +1,26 @@ +SectionDevice."MonoSpeaker" {
- Comment "Mono Speaker"
- ConflictingDevice [
"Speaker"
"Headphones"
- ]
- EnableSequence [
cdev "hw:chtbswrt5672"
cset "name='Stereo DAC MIXR DAC R1 Switch' off"
cset "name='Stereo DAC MIXL DAC R1 Switch' on"
cset "name='Ext Spk Switch' on"
- ]
- DisableSequence [
cdev "hw:chtbswrt5672"
cset "name='Ext Spk Switch' off"
cset "name='Stereo DAC MIXL DAC R1 Switch' off"
cset "name='Stereo DAC MIXR DAC R1 Switch' on"
- ]
- Value {
PlaybackChannels "2"
- }
+} diff --git a/src/conf/ucm/codecs/rt5672/Speaker.conf b/src/conf/ucm/codecs/rt5672/Speaker.conf new file mode 100644 index 00000000..f9291e53 --- /dev/null +++ b/src/conf/ucm/codecs/rt5672/Speaker.conf @@ -0,0 +1,22 @@ +SectionDevice."Speaker" {
- Comment "Speakers"
- ConflictingDevice [
"MonoSpeaker"
"Headphones"
- ]
- EnableSequence [
cdev "hw:chtbswrt5672"
cset "name='Ext Spk Switch' on"
- ]
- DisableSequence [
cdev "hw:chtbswrt5672"
cset "name='Ext Spk Switch' off"
- ]
- Value {
PlaybackChannels "2"
- }
+}