alsa-lib/alsa-ucm-conf.patch
2020-04-06 17:47:37 +02:00

1019 lines
26 KiB
Diff

From 46222753fdddc86d6a0b92c465875f71c628a779 Mon Sep 17 00:00:00 2001
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Date: Thu, 27 Feb 2020 12:40:20 -0600
Subject: [PATCH 01/10] sof-bdw-rt5677: initial port to UCM2
Tested on Pixel 2015/SAMUS Chromebook.
Known limitations:
Left/Right confusion (probably a firmware issue)
PulseAudio does not switch capture devices on headset plug
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
ucm2/sof-bdw-rt5677/HiFi.conf | 194 ++++++++++++++++++++++++
ucm2/sof-bdw-rt5677/sof-bdw-rt5677.conf | 6 +
2 files changed, 200 insertions(+)
create mode 100644 ucm2/sof-bdw-rt5677/HiFi.conf
create mode 100644 ucm2/sof-bdw-rt5677/sof-bdw-rt5677.conf
diff --git a/ucm2/sof-bdw-rt5677/HiFi.conf b/ucm2/sof-bdw-rt5677/HiFi.conf
new file mode 100644
index 0000000..f4b1449
--- /dev/null
+++ b/ucm2/sof-bdw-rt5677/HiFi.conf
@@ -0,0 +1,194 @@
+# Use case Configuration for sof-bdw-rt5677
+# command-line sequence to switch playback/capture
+# alsaucm -c sof-bdw-rt5677 set _verb HiFi
+# alsaucm -c sof-bdw-rt5677 set _verb HiFi set _enadev Headphones
+
+
+SectionVerb {
+
+ EnableSequence [
+
+ cset "name='PDM1 L Mux' STO1 DAC MIX"
+ cset "name='PDM1 R Mux' STO1 DAC MIX"
+
+ # Adjust Master Playback volume if needed
+ # cset "name='Master Playback Volume' 30"
+
+ cset "name='OUT1 Playback Switch' off"
+ cset "name='OUT2 Playback Switch' off"
+
+ cset "name='DAC1 Playback Volume' 175"
+ cset "name='DAC2 Playback Volume' 175"
+ cset "name='DAC12 SRC Mux' STO1 DAC MIX"
+
+ cset "name='Stereo DAC MIXL ST L Switch' off"
+ cset "name='Stereo DAC MIXL DAC1 L Switch' off"
+ cset "name='Stereo DAC MIXL DAC2 L Switch' off"
+ cset "name='Stereo DAC MIXL DAC1 R Switch' on"
+
+ cset "name='Stereo DAC MIXR ST R Switch' off"
+ cset "name='Stereo DAC MIXR DAC1 R Switch' off"
+ cset "name='Stereo DAC MIXR DAC2 R Switch' off"
+ cset "name='Stereo DAC MIXR DAC1 L Switch' on"
+
+ cset "name='DAC1 MIXL Stereo ADC Switch' off"
+ cset "name='DAC1 MIXL DAC1 Switch' on"
+
+ cset "name='DAC1 MIXR Stereo ADC Switch' off"
+ cset "name='DAC1 MIXR DAC1 Switch' on"
+
+ cset "name='DAC1 Mux' IF1 DAC 01"
+
+ cset "name='Stereo1 DMIC Mux' DMIC1"
+ cset "name='Stereo1 ADC2 Mux' DMIC"
+ cset "name='Stereo1 ADC1 Mux' ADC1/2"
+
+ cset "name='Sto1 ADC MIXL ADC1 Switch' off"
+ cset "name='Sto1 ADC MIXL ADC2 Switch' off"
+ cset "name='Sto1 ADC MIXL ADC2 Switch' on"
+
+ cset "name='Sto1 ADC MIXR ADC1 Switch' off"
+ cset "name='Sto1 ADC MIXR ADC2 Switch' off"
+ cset "name='Sto1 ADC MIXR ADC2 Switch' on"
+
+ cset "name='IF1 ADC1 Mux' STO1 ADC MIX"
+ cset "name='IF1 ADC1 Swap Mux' L/R"
+
+ # Adjust Mic Capture Volume if needed
+ # cset "name='Mic Capture Volume' 30"
+
+ cset "name='ADC1 Capture Switch' on"
+ cset "name='ADC1 Capture Volume' 31"
+ cset "name='STO1 ADC Boost Volume' 2"
+
+ cset "name='Headphone Switch' off"
+ cset "name='Speaker Switch' on"
+
+ cset "name='Remote DMICs Switch' on"
+ cset "name='Mono DMIC L Mux' DMIC1"
+ cset "name='Mono ADC2 L Mux' DMIC"
+ cset "name='Mono ADC MIXL ADC1 Switch' off"
+ cset "name='Mono ADC MIXL ADC2 Switch' on"
+ cset "name='VAD ADC Mux' MONO ADC MIX L"
+ cset "name='IB01 Mux' VAD ADC/DAC1 FS"
+ cset "name='IB01 Bypass Mux' Bypass"
+ cset "name='Mono ADC Boost Volume' 2"
+ ]
+
+ DisableSequence [
+ ]
+}
+
+SectionDevice."Speaker" {
+ Comment "Speakers"
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ ]
+
+ DisableSequence [
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId}"
+ }
+}
+
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ EnableSequence [
+ cset "name='Speaker Switch' off"
+ cset "name='Stereo DAC MIXL DAC1 R Switch' off"
+ cset "name='Stereo DAC MIXR DAC1 L Switch' off"
+ cset "name='Stereo DAC MIXL DAC1 L Switch' on"
+ cset "name='Stereo DAC MIXR DAC1 R Switch' on"
+ cset "name='OUT1 Playback Switch' on"
+ cset "name='OUT2 Playback Switch' on"
+ cset "name='Headphone Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Headphone Switch' off"
+ cset "name='OUT1 Playback Switch' off"
+ cset "name='OUT2 Playback Switch' off"
+ cset "name='Stereo DAC MIXL DAC1 L Switch' off"
+ cset "name='Stereo DAC MIXR DAC1 R Switch' off"
+ cset "name='Stereo DAC MIXL DAC1 R Switch' on"
+ cset "name='Stereo DAC MIXR DAC1 L Switch' on"
+ cset "name='Speaker Switch' on"
+ ]
+
+ Value {
+ PlaybackPriority 300
+ PlaybackPCM "hw:${CardId}"
+ JackControl "Headphone Jack"
+ JackHWMute "Speakers"
+ }
+}
+
+SectionDevice."Mic" {
+ Comment "Internal Microphone"
+
+ ConflictingDevice [
+ "Headset"
+ ]
+
+ EnableSequence [
+ ]
+
+ DisableSequence [
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId}"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ ConflictingDevice [
+ "Mic"
+ ]
+
+ EnableSequence [
+ cset "name='Sto1 ADC MIXL ADC2 Switch' off"
+ cset "name='Sto1 ADC MIXR ADC2 Switch' off"
+ cset "name='Local DMICs Switch' off"
+
+ cset "name='IF1 ADC1 Swap Mux' L/L"
+
+ cset "name='Sto1 ADC MIXL ADC1 Switch' on"
+ cset "name='Sto1 ADC MIXR ADC1 Switch' on"
+ cset "name='Headset Mic Switch' on"
+ ]
+
+ DisableSequence [
+ cset "name='Sto1 ADC MIXL ADC1 Switch' off"
+ cset "name='Sto1 ADC MIXR ADC1 Switch' off"
+ cset "name='Headset Mic Switch' off"
+
+ cset "name='IF1 ADC1 Swap Mux' L/R"
+
+ cset "name='Sto1 ADC MIXL ADC2 Switch' on"
+ cset "name='Sto1 ADC MIXR ADC2 Switch' on"
+ cset "name='Local DMICs Switch' on"
+ ]
+
+ Value {
+ CapturePriority 300
+ CapturePCM "hw:${CardId}"
+ JackControl "Mic Jack"
+ }
+}
diff --git a/ucm2/sof-bdw-rt5677/sof-bdw-rt5677.conf b/ucm2/sof-bdw-rt5677/sof-bdw-rt5677.conf
new file mode 100644
index 0000000..d672df2
--- /dev/null
+++ b/ucm2/sof-bdw-rt5677/sof-bdw-rt5677.conf
@@ -0,0 +1,6 @@
+Syntax 2
+
+SectionUseCase."HiFi" {
+ File "HiFi.conf"
+ Comment "Default"
+}
--
2.25.1
From da45a07c756308b57facf1a97c4842274ff04fe3 Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <perex@perex.cz>
Date: Sun, 1 Mar 2020 16:12:28 +0100
Subject: [PATCH 02/10] ucm2: treewide - JackHWMute fixes
Fixes: https://github.com/alsa-project/alsa-ucm-conf/issues/14
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
ucm2/HDA-Intel/HiFi-dual.conf | 1 +
ucm2/broxton-rt298/HiFi.conf | 1 -
ucm2/chtrt5645/HiFi-dmic2.conf | 2 +-
ucm2/skylake-rt286/HiFi.conf | 1 -
ucm2/sof-bdw-rt5677/HiFi.conf | 2 +-
5 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/ucm2/HDA-Intel/HiFi-dual.conf b/ucm2/HDA-Intel/HiFi-dual.conf
index 174fef4..277894a 100644
--- a/ucm2/HDA-Intel/HiFi-dual.conf
+++ b/ucm2/HDA-Intel/HiFi-dual.conf
@@ -93,6 +93,7 @@ SectionDevice."Mic2" {
CapturePriority 300
CapturePCM "hw:${CardId}"
JackHWMute "Line2"
+ JackControl "Mic Jack"
}
ConflictingDevice [
diff --git a/ucm2/broxton-rt298/HiFi.conf b/ucm2/broxton-rt298/HiFi.conf
index 6f5b9a5..f7e561f 100644
--- a/ucm2/broxton-rt298/HiFi.conf
+++ b/ucm2/broxton-rt298/HiFi.conf
@@ -30,7 +30,6 @@ SectionDevice."Speaker" {
Value {
PlaybackPriority 100
PlaybackPCM "hw:${CardId}"
- JackHWMute "Headphones"
}
}
diff --git a/ucm2/chtrt5645/HiFi-dmic2.conf b/ucm2/chtrt5645/HiFi-dmic2.conf
index c9fdd79..d3f880a 100644
--- a/ucm2/chtrt5645/HiFi-dmic2.conf
+++ b/ucm2/chtrt5645/HiFi-dmic2.conf
@@ -98,7 +98,7 @@ SectionDevice."Headset" {
CapturePriority 200
CapturePCM "hw:${CardId}"
JackControl "Headset Mic Jack"
- JackHWMute "DMic"
+ JackHWMute "Mic"
}
EnableSequence [
diff --git a/ucm2/skylake-rt286/HiFi.conf b/ucm2/skylake-rt286/HiFi.conf
index 9e94a1b..ed4bfa7 100644
--- a/ucm2/skylake-rt286/HiFi.conf
+++ b/ucm2/skylake-rt286/HiFi.conf
@@ -51,7 +51,6 @@ SectionDevice."Speaker" {
Value {
PlaybackPriority 100
PlaybackPCM "hw:${CardId}"
- JackHWMute "Headphones"
}
}
diff --git a/ucm2/sof-bdw-rt5677/HiFi.conf b/ucm2/sof-bdw-rt5677/HiFi.conf
index f4b1449..724a1cc 100644
--- a/ucm2/sof-bdw-rt5677/HiFi.conf
+++ b/ucm2/sof-bdw-rt5677/HiFi.conf
@@ -132,7 +132,7 @@ SectionDevice."Headphones" {
PlaybackPriority 300
PlaybackPCM "hw:${CardId}"
JackControl "Headphone Jack"
- JackHWMute "Speakers"
+ JackHWMute "Speaker"
}
}
--
2.25.1
From 4722f5b3859903521ba0f92a64d86af31083ca50 Mon Sep 17 00:00:00 2001
From: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Date: Thu, 5 Mar 2020 14:59:56 +0200
Subject: [PATCH 03/10] sof-hda-dsp: Support systems without integrated
graphics audio
On systems where integrated graphics audio is not present
or is disabled, the HDMI PCM nodes are disabled. Add rules to
detect these systems by checking presence of HDMI jack controls
with UCM2 rules.
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
ucm2/sof-hda-dsp/Hdmi.conf | 96 ++++++++++++++++++++++++--------------
1 file changed, 60 insertions(+), 36 deletions(-)
diff --git a/ucm2/sof-hda-dsp/Hdmi.conf b/ucm2/sof-hda-dsp/Hdmi.conf
index be6cb39..6f2c4aa 100644
--- a/ucm2/sof-hda-dsp/Hdmi.conf
+++ b/ucm2/sof-hda-dsp/Hdmi.conf
@@ -1,55 +1,79 @@
# Use case Configuration for sof-hda-dsp
-SectionDevice."HDMI1" {
- Comment "HDMI1/DP1 Output"
+If.hdmi1 {
+ Condition {
+ Type ControlExists
+ Control "iface=CARD,name='HDMI/DP,pcm=3 Jack'"
+ }
+ True {
+ SectionDevice."HDMI1" {
+ Comment "HDMI1/DP1 Output"
- EnableSequence [
- cset "name='IEC958 Playback Switch' on"
- ]
+ EnableSequence [
+ cset "name='IEC958 Playback Switch' on"
+ ]
- DisableSequence [
- cset "name='IEC958 Playback Switch' off"
- ]
+ DisableSequence [
+ cset "name='IEC958 Playback Switch' off"
+ ]
- Value {
- PlaybackPriority 500
- PlaybackPCM "hw:${CardId},3"
- JackControl "HDMI/DP,pcm=3 Jack"
+ Value {
+ PlaybackPriority 500
+ PlaybackPCM "hw:${CardId},3"
+ JackControl "HDMI/DP,pcm=3 Jack"
+ }
+ }
}
}
-SectionDevice."HDMI2" {
- Comment "HDMI2/DP2 Output"
+If.hdmi2 {
+ Condition {
+ Type ControlExists
+ Control "iface=CARD,name='HDMI/DP,pcm=4 Jack'"
+ }
+ True {
+ SectionDevice."HDMI2" {
+ Comment "HDMI2/DP2 Output"
- EnableSequence [
- cset "name='IEC958 Playback Switch',index=1 on"
- ]
+ EnableSequence [
+ cset "name='IEC958 Playback Switch',index=1 on"
+ ]
- DisableSequence [
- cset "name='IEC958 Playback Switch',index=1 off"
- ]
+ DisableSequence [
+ cset "name='IEC958 Playback Switch',index=1 off"
+ ]
- Value {
- PlaybackPriority 600
- PlaybackPCM "hw:${CardId},4"
- JackControl "HDMI/DP,pcm=4 Jack"
+ Value {
+ PlaybackPriority 600
+ PlaybackPCM "hw:${CardId},4"
+ JackControl "HDMI/DP,pcm=4 Jack"
+ }
+ }
}
}
-SectionDevice."HDMI3" {
- Comment "HDMI3/DP3 Output"
+If.hdmi3 {
+ Condition {
+ Type ControlExists
+ Control "iface=CARD,name='HDMI/DP,pcm=5 Jack'"
+ }
+ True {
+ SectionDevice."HDMI3" {
+ Comment "HDMI3/DP3 Output"
- EnableSequence [
- cset "name='IEC958 Playback Switch',index=2 on"
- ]
+ EnableSequence [
+ cset "name='IEC958 Playback Switch',index=2 on"
+ ]
- DisableSequence [
- cset "name='IEC958 Playback Switch',index=2 off"
- ]
+ DisableSequence [
+ cset "name='IEC958 Playback Switch',index=2 off"
+ ]
- Value {
- PlaybackPriority 700
- PlaybackPCM "hw:${CardId},5"
- JackControl "HDMI/DP,pcm=5 Jack"
+ Value {
+ PlaybackPriority 700
+ PlaybackPCM "hw:${CardId},5"
+ JackControl "HDMI/DP,pcm=5 Jack"
+ }
+ }
}
}
--
2.25.1
From 76df616aa2fcae1cca1f948dac24c98a211c2593 Mon Sep 17 00:00:00 2001
From: Mateusz Gorski <mateusz.gorski@linux.intel.com>
Date: Wed, 18 Mar 2020 11:26:05 +0100
Subject: [PATCH 04/10] hda-dsp: add basic ucm config
Basic UCM configuration for Intel Skylake SST with HDA DSP generic
machine driver enabling codec playback and capture on both HDA codec
and DMIC ports.
Signed-off-by: Mateusz Gorski <mateusz.gorski@linux.intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
ucm2/hda-dsp/Hdmi1.conf | 24 ++++++++++
ucm2/hda-dsp/Hdmi2.conf | 23 ++++++++++
ucm2/hda-dsp/HiFi.conf | 96 +++++++++++++++++++++++++++++++++++++++
ucm2/hda-dsp/hda-dsp.conf | 16 +++++++
4 files changed, 159 insertions(+)
create mode 100644 ucm2/hda-dsp/Hdmi1.conf
create mode 100644 ucm2/hda-dsp/Hdmi2.conf
create mode 100644 ucm2/hda-dsp/HiFi.conf
create mode 100644 ucm2/hda-dsp/hda-dsp.conf
diff --git a/ucm2/hda-dsp/Hdmi1.conf b/ucm2/hda-dsp/Hdmi1.conf
new file mode 100644
index 0000000..08fa5dd
--- /dev/null
+++ b/ucm2/hda-dsp/Hdmi1.conf
@@ -0,0 +1,24 @@
+# Usecase for device HDMI1/Display Port stereo playback on Intel cAVS platforms
+# For Audio in HDA mode
+
+SectionDevice."HDMI1" {
+ Comment "HDMI/Display Port 1 Stereo"
+
+ Value {
+ PlaybackPriority 300
+ PlaybackPCM "hw:${CardId},10"
+ If.1 {
+ Condition {
+ Type ControlExists
+ Control "iface=CARD,name='HDMI/DP,pcm=17 Jack'"
+ }
+ True {
+ JackControl "HDMI/DP,pcm=17 Jack"
+ }
+ False {
+ JackControl "HDMI/DP, pcm=17 Jack"
+ }
+ }
+ }
+}
+
diff --git a/ucm2/hda-dsp/Hdmi2.conf b/ucm2/hda-dsp/Hdmi2.conf
new file mode 100644
index 0000000..eb168ea
--- /dev/null
+++ b/ucm2/hda-dsp/Hdmi2.conf
@@ -0,0 +1,23 @@
+# Usecase for device HDMI2/Display Port stereo playback on Intel cAVS platforms
+# For Audio in HDA mode
+
+SectionDevice."HDMI2" {
+ Comment "HDMI/Display Port 2 Stereo"
+
+ Value {
+ PlaybackPriority 400
+ PlaybackPCM "hw:${CardId},11"
+ If.1 {
+ Condition {
+ Type ControlExists
+ Control "iface=CARD,name='HDMI/DP,pcm=18 Jack'"
+ }
+ True {
+ JackControl "HDMI/DP,pcm=18 Jack"
+ }
+ False {
+ JackControl "HDMI/DP, pcm=18 Jack"
+ }
+ }
+ }
+}
diff --git a/ucm2/hda-dsp/HiFi.conf b/ucm2/hda-dsp/HiFi.conf
new file mode 100644
index 0000000..cdeb215
--- /dev/null
+++ b/ucm2/hda-dsp/HiFi.conf
@@ -0,0 +1,96 @@
+# Usecase for stereo playback Speaker and Headset, Recording on DMIC and Headset MIC.
+# For Audio in HDA mode on Intel cAVS platforms
+
+SectionVerb {
+
+ EnableSequence [
+ cset "name='mch_cap_out mo mch_cap_in mi Switch' 1"
+ ]
+
+ Value {
+ TQ "HiFi"
+ }
+}
+
+SectionDevice."Headphones" {
+ Comment "Headphones"
+
+ ConflictingDevice [
+ "Speaker"
+ ]
+
+ EnableSequence [
+ cset "name='Headphone Playback Switch' 1,1"
+ cset "name='Speaker Playback Switch' 0,0"
+ ]
+
+ Value {
+ PlaybackPriority 200
+ PlaybackPCM "hw:${CardId},7"
+ PlaybackMixerElem "Headphone"
+ PlaybackMasterElem "Master"
+ PlaybackVolume "Headphone Playback Volume"
+ PlaybackSwitch "Headphone Playback Switch"
+ JackControl "Front Headphone Jack"
+ JackHWMute "Speaker"
+ }
+}
+
+SectionDevice."Speaker" {
+ Comment "Speaker"
+
+ ConflictingDevice [
+ "Headphones"
+ ]
+
+ EnableSequence [
+ cset "name='Headphone Playback Switch' 0,0"
+ cset "name='Speaker Playback Switch' 1,1"
+ ]
+
+ Value {
+ PlaybackPriority 100
+ PlaybackPCM "hw:${CardId},7"
+ PlaybackMixerElem "Speaker"
+ PlaybackMasterElem "Master"
+ PlaybackVolume "Speaker Playback Volume"
+ PlaybackSwitch "Speaker Playback Switch"
+ }
+}
+
+SectionDevice."Headset" {
+ Comment "Headset Microphone"
+
+ ConflictingDevice [
+ "Mic"
+ ]
+
+ EnableSequence [
+ cset "name='media0_out mo codec0_in mi Switch' 1"
+ ]
+
+ Value {
+ CapturePriority 200
+ CapturePCM "hw:${CardId},7"
+ }
+}
+
+SectionDevice."Mic" {
+ Comment "Digital Microphone"
+
+ ConflictingDevice [
+ "Headset"
+ ]
+
+ EnableSequence [
+ cset "name='mch_cap_out mo mch_cap_in mi Switch' 1"
+ ]
+
+ Value {
+ CapturePriority 100
+ CapturePCM "hw:${CardId},13"
+ }
+}
+
+<hda-dsp/Hdmi1.conf>
+<hda-dsp/Hdmi2.conf>
diff --git a/ucm2/hda-dsp/hda-dsp.conf b/ucm2/hda-dsp/hda-dsp.conf
new file mode 100644
index 0000000..bf80b09
--- /dev/null
+++ b/ucm2/hda-dsp/hda-dsp.conf
@@ -0,0 +1,16 @@
+# UCM for Intel CAVS platforms
+# For Audio in HDA and DMIC mode
+
+Syntax 2
+
+SectionUseCase."HiFi" {
+ File "HiFi.conf"
+ Comment "Play HiFi quality Music"
+}
+
+SectionDefaults [
+ cset "name='Master Playback Switch' 1"
+ cset "name='codec0_out mo media0_in mi Switch' 1"
+ cset "name='media0_out mo codec0_in mi Switch' 1"
+ cset "name='mch_cap_out mo mch_cap_in mi Switch' 1"
+]
--
2.25.1
From 340b8a1d6aaa164bc27bdb8811cc00d729ca2e45 Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <perex@perex.cz>
Date: Mon, 30 Mar 2020 16:51:45 +0200
Subject: [PATCH 05/10] update README files
- UCM validator
- UCM paths for ucm2/
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
README.md | 6 ++++++
ucm2/README.md | 34 +++++++++++++++++++++++++++++++---
2 files changed, 37 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 574c93c..c5afd96 100644
--- a/README.md
+++ b/README.md
@@ -2,3 +2,9 @@
## ALSA Use Case Manager configuration
![Validate UCM configuration](https://github.com/alsa-project/alsa-ucm-conf/workflows/Validate%20UCM%20configuration/badge.svg?branch=master)
+
+The UCM configurations are automatically valited using the UCM validator
+available at https://github.com/alsa-project/alsa-tests/tree/master/python/ucm-validator .
+
+If you create a pull request for new hardware, please, add also the
+alsa-info.sh output to emulate this hardware in the UCM validator.
diff --git a/ucm2/README.md b/ucm2/README.md
index 3aefdf7..fc2a178 100644
--- a/ucm2/README.md
+++ b/ucm2/README.md
@@ -7,9 +7,37 @@ Library directories:
codecs/
dsps/
-Those directories are not inspected for the list of
-available UCM configurations. They contain files
-included from other UCMs.
+Those directories are not inspected for the list of available UCM
+configurations. They contain files included from other UCMs.
+
+UCM master configuration path lookup (by priority):
+
+- {ucm_card_name}/{long_card_name}.conf
+- {ucm_card_name}/{ucm_card_name}.conf
+- {driver_name}/{long_card_name}.conf
+- {driver_name}/{driver_name}.conf
+
+For example:
+
+- USB-Audio/Dell-WD15-Dock.conf
+-- special configuration for the Dell docking station with USB soundcard
+- TwoCardsMix/TwoCardsMix.conf
+-- virtual UCM from two soundcards
+
+Note: For the driver configurations, use always the real driver name
+not the ucm card name configuration paths!
+
+The driver name can be obtained using procfs like:
+
+````
+ cat /proc/asound/cards
+ 1 [NVidia ]: HDA-Intel - HDA NVidia
+ HDA NVidia at 0xb5080000 irq 17
+
+ driver name: HDA-Intel
+ card short name: HDA NVidia
+ card long name: HDA NVidia at 0xb5080000 irq 17
+````
Syntax, value names
-------------------
--
2.25.1
From 85ca26a4f2b73888dbce3437a402df13faf628fa Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Sun, 5 Apr 2020 20:34:50 +0200
Subject: [PATCH 06/10] bytcr-rt5651: Fix dmic check in HiFi-Components.conf
The kernel sets cfg-mic:dmic not cfg-mic:dmic1 when a digital mic is
used. The wrong check for cfg-mic:dmic1 causes there to be no "Mic"
device at all, which causes the check for the ConflictingDevices section
of the HeadSet (mic) device to fail like e.g. so:
[hans@localhost ~]$ alsaucm -c bytcr-rt5651 set _verb HiFi set _enadev Speaker
ALSA lib parser.c:1138:(verb_dev_list_add) error: unable to find device 'Mic'
ALSA lib parser.c:1433:(parse_verb_file) error: device management error in verb 'HiFi'
ALSA lib main.c:962:(snd_use_case_mgr_open) error: failed to import bytcr-rt5651 use case configuration -2
alsaucm: error failed to open sound card bytcr-rt5651: No such file or directory
This commit fixes this.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
ucm2/bytcr-rt5651/HiFi-Components.conf | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/ucm2/bytcr-rt5651/HiFi-Components.conf b/ucm2/bytcr-rt5651/HiFi-Components.conf
index 53ebcbe..d0a573e 100644
--- a/ucm2/bytcr-rt5651/HiFi-Components.conf
+++ b/ucm2/bytcr-rt5651/HiFi-Components.conf
@@ -34,11 +34,11 @@ If.headphones {
}
}
-If.dmic1 {
+If.dmic {
Condition {
Type String
Haystack "${CardComponents}"
- Needle "cfg-mic:dmic1"
+ Needle "cfg-mic:dmic"
}
True {
<codecs/rt5651/DigitalMic.conf>
--
2.25.1
From aaa86069ab721683afcf978b9291219855db42f1 Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Sun, 5 Apr 2020 20:34:51 +0200
Subject: [PATCH 07/10] chtrt5645: Add ASUSTeKCOMPUTERINC.-T100HAN-1.0 symlink
to chtrt5645-dmic1.conf
We already have a ASUSTeKCOMPUTERINC.-T100HAN-1.0-T100HAN symlink to
chtrt5645-dmic1.conf, but since kernel commit 39870b0dec68 ("ASoC: DMI long
name - avoid to add board name if matches with product name"), the kernel
omits the (second) -T100HAN. So with newer kernels that no longer works.
Arguably this is a kernel regressions, but chances are we already have
some configs depending on the new behavior, so lets fix this on the
UCM2 side by adding a second symlink using the new long name.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
ucm2/chtrt5645/ASUSTeKCOMPUTERINC.-T100HAN-1.0.conf | 1 +
1 file changed, 1 insertion(+)
create mode 120000 ucm2/chtrt5645/ASUSTeKCOMPUTERINC.-T100HAN-1.0.conf
diff --git a/ucm2/chtrt5645/ASUSTeKCOMPUTERINC.-T100HAN-1.0.conf b/ucm2/chtrt5645/ASUSTeKCOMPUTERINC.-T100HAN-1.0.conf
new file mode 120000
index 0000000..b4d2816
--- /dev/null
+++ b/ucm2/chtrt5645/ASUSTeKCOMPUTERINC.-T100HAN-1.0.conf
@@ -0,0 +1 @@
+chtrt5645-dmic1.conf
\ No newline at end of file
--
2.25.1
From 5ba4fd1dfca593248a603e5621bf2f53a4e2ddcc Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Sun, 5 Apr 2020 20:34:52 +0200
Subject: [PATCH 08/10] chtrt5645: Add MEDION-E1239TMD60568-0.1-Wingman.conf
symlink to chtrt5645-dmic2.conf
The Medion Akoya E1239T 2-in-1 uses a digital mic connected to the
dmic2 pin, rather then the default analog mic on in2.
Add a long name symlink to chtrt5645-dmic2.conf for this, so that
the right config is used.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
ucm2/chtrt5645/MEDION-E1239TMD60568-0.1-Wingman.conf | 1 +
1 file changed, 1 insertion(+)
create mode 120000 ucm2/chtrt5645/MEDION-E1239TMD60568-0.1-Wingman.conf
diff --git a/ucm2/chtrt5645/MEDION-E1239TMD60568-0.1-Wingman.conf b/ucm2/chtrt5645/MEDION-E1239TMD60568-0.1-Wingman.conf
new file mode 120000
index 0000000..7823e31
--- /dev/null
+++ b/ucm2/chtrt5645/MEDION-E1239TMD60568-0.1-Wingman.conf
@@ -0,0 +1 @@
+chtrt5645-dmic2.conf
\ No newline at end of file
--
2.25.1
From d0b1a426ba7cbfb34355a4101bb314ba288a6679 Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Sun, 5 Apr 2020 20:34:53 +0200
Subject: [PATCH 09/10] chtrt5645: Remove bogus JackHWMute settings
There is no reason why the internal microphone or speakers cannot
be used when a headset is plugged in.
The jack does not physically disconnect these, so the JackHWMute settings
are wrong, remove them.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
ucm2/chtrt5645/HiFi-dmic1.conf | 2 --
ucm2/chtrt5645/HiFi-dmic2.conf | 2 --
ucm2/chtrt5645/HiFi-mono-speaker-analog-mic.conf | 2 --
ucm2/chtrt5645/HiFi.conf | 2 --
4 files changed, 8 deletions(-)
diff --git a/ucm2/chtrt5645/HiFi-dmic1.conf b/ucm2/chtrt5645/HiFi-dmic1.conf
index 1a8ee0a..c7e12c9 100644
--- a/ucm2/chtrt5645/HiFi-dmic1.conf
+++ b/ucm2/chtrt5645/HiFi-dmic1.conf
@@ -50,7 +50,6 @@ SectionDevice."Headphones" {
PlaybackPriority 200
PlaybackPCM "hw:${CardId}"
JackControl "Headphone Jack"
- JackHWMute "Speaker"
}
ConflictingDevice [
@@ -96,7 +95,6 @@ SectionDevice."Headset" {
CapturePriority 200
CapturePCM "hw:${CardId}"
JackControl "Headset Mic Jack"
- JackHWMute "Mic"
}
EnableSequence [
diff --git a/ucm2/chtrt5645/HiFi-dmic2.conf b/ucm2/chtrt5645/HiFi-dmic2.conf
index d3f880a..95fedb3 100644
--- a/ucm2/chtrt5645/HiFi-dmic2.conf
+++ b/ucm2/chtrt5645/HiFi-dmic2.conf
@@ -50,7 +50,6 @@ SectionDevice."Headphones" {
PlaybackPriority 200
PlaybackPCM "hw:${CardId}"
JackControl "Headphone Jack"
- JackHWMute "Speaker"
}
ConflictingDevice [
@@ -98,7 +97,6 @@ SectionDevice."Headset" {
CapturePriority 200
CapturePCM "hw:${CardId}"
JackControl "Headset Mic Jack"
- JackHWMute "Mic"
}
EnableSequence [
diff --git a/ucm2/chtrt5645/HiFi-mono-speaker-analog-mic.conf b/ucm2/chtrt5645/HiFi-mono-speaker-analog-mic.conf
index db866cd..f6180a4 100644
--- a/ucm2/chtrt5645/HiFi-mono-speaker-analog-mic.conf
+++ b/ucm2/chtrt5645/HiFi-mono-speaker-analog-mic.conf
@@ -54,7 +54,6 @@ SectionDevice."Headphones" {
PlaybackPriority 200
PlaybackPCM "hw:${CardId}"
JackControl "Headphone Jack"
- JackHWMute "Speaker"
}
ConflictingDevice [
@@ -84,7 +83,6 @@ SectionDevice."Headset" {
CapturePriority 200
CapturePCM "hw:${CardId}"
JackControl "Headset Mic Jack"
- JackHWMute "Mic"
}
EnableSequence [
diff --git a/ucm2/chtrt5645/HiFi.conf b/ucm2/chtrt5645/HiFi.conf
index 58468a8..116d456 100644
--- a/ucm2/chtrt5645/HiFi.conf
+++ b/ucm2/chtrt5645/HiFi.conf
@@ -50,7 +50,6 @@ SectionDevice."Headphones" {
PlaybackPriority 200
PlaybackPCM "hw:${CardId}"
JackControl "Headphone Jack"
- JackHWMute "Speaker"
}
ConflictingDevice [
@@ -76,7 +75,6 @@ SectionDevice."Headset" {
CapturePriority 200
CapturePCM "hw:${CardId}"
JackControl "Headset Mic Jack"
- JackHWMute "Mic"
}
EnableSequence [
--
2.25.1
From 907c8309b2ee671e1b36630b0d29db1bc3124990 Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <perex@perex.cz>
Date: Mon, 6 Apr 2020 17:37:20 +0200
Subject: [PATCH 10/10] sof-hda-dsp: change Headphones2 to Mic2
Fixes: https://github.com/alsa-project/alsa-ucm-conf/issues/19
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
ucm2/sof-hda-dsp/HiFi.conf | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/ucm2/sof-hda-dsp/HiFi.conf b/ucm2/sof-hda-dsp/HiFi.conf
index 60a8693..9a82930 100644
--- a/ucm2/sof-hda-dsp/HiFi.conf
+++ b/ucm2/sof-hda-dsp/HiFi.conf
@@ -6,7 +6,7 @@ SectionVerb {
]
}
-SectionDevice."Headphones1" {
+SectionDevice."Headphones" {
Comment "Headphones"
EnableSequence [
@@ -85,9 +85,9 @@ If.monomic {
Control "name='Input Source'"
ControlEnum "Headphone Mic"
}
- After.SectionDevice "Mic"
+ After.SectionDevice "Mic1"
True {
- SectionDevice."Headphones2" {
+ SectionDevice."Mic2" {
Comment "Headphones Stereo Microphone"
ConflictingDevice [
@@ -120,7 +120,7 @@ If.monomic {
}
}
False {
- SectionDevice."Headphones2" {
+ SectionDevice."Mic2" {
Comment "Headphones Stereo Microphone"
Value {
@@ -132,7 +132,7 @@ If.monomic {
}
}
-SectionDevice."Mic" {
+SectionDevice."Mic1" {
Comment "Digital Microphone"
Value {
--
2.25.1