[alsa-devel] [PATCH 1/2] conf/ucm: Add UCM profile for cht-bsw-rt5672 boards

Hans de Goede hdegoede at redhat.com
Sat Aug 31 16:58:41 CEST 2019


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

Signed-off-by: Hans de Goede <hdegoede at 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/cht-bsw-rt5672/Makefile \
 	  src/conf/ucm/chtnau8824/Makefile \
 	  src/conf/ucm/chtrt5645/Makefile \
 	  src/conf/ucm/chtrt5645-mono-speaker-analog-mic/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/codecs/rt5672/Makefile \
 	  src/conf/ucm/platforms/Makefile \
 	  src/conf/ucm/platforms/bytcr/Makefile \
 	  src/conf/topology/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"
+	}
+}
-- 
2.23.0



More information about the Alsa-devel mailing list