sof-soundwire: Add basic support for cs42l43

cs42l43 is a codec device, add basic support for it. Including a dual
channel DMIC input, stereo headphones, and a mono headset microphone.

Link: https://lore.kernel.org/alsa-devel/20240117142125.1080500-1-ckeepax@opensource.cirrus.com/
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
Charles Keepax 2024-01-17 14:21:25 +00:00 committed by Jaroslav Kysela
commit e87dde51d6
4 changed files with 87 additions and 1 deletions

View file

@ -0,0 +1,14 @@
# cs42l43 specific control settings
LibraryConfig.remap.Config {
ctl.default.map {
"name='cs42l43 PDM2 Switch'" {
"name='cs42l43 Decimator 3 Switch'".vindex.0 0
"name='cs42l43 Decimator 4 Switch'".vindex.1 0
}
"name='cs42l43 PDM2 Volume'" {
"name='cs42l43 Decimator 3 Volume'".vindex.0 0
"name='cs42l43 Decimator 4 Volume'".vindex.1 0
}
}
}

View file

@ -0,0 +1,26 @@
# Use case Configuration for sof-soundwire card
SectionDevice."Mic" {
Comment "Microphones"
ConflictingDevice [
"Headset"
]
EnableSequence [
cset "name='cs42l43 DP1TX1 Input' 'Decimator 3'"
cset "name='cs42l43 DP1TX2 Input' 'Decimator 4'"
]
DisableSequence [
cset "name='cs42l43 DP1TX1 Input' 'None'"
cset "name='cs42l43 DP1TX2 Input' 'None'"
]
Value {
CapturePriority 100
CapturePCM "hw:${CardId},4"
CaptureMixer "default:${CardId}"
CaptureMixerElem "cs42l43 PDM2"
}
}

View file

@ -0,0 +1,46 @@
# Use case Configuration for sof-soundwire card
SectionDevice."Headphones" {
Comment "Headphones"
EnableSequence [
cset "name='cs42l43 Headphone L Input 1' 'DP5RX1'"
cset "name='cs42l43 Headphone R Input 1' 'DP5RX2'"
]
DisableSequence [
cset "name='cs42l43 Headphone L Input 1' 'None'"
cset "name='cs42l43 Headphone R Input 1' 'None'"
]
Value {
PlaybackPriority 200
PlaybackPCM "hw:${CardId},0"
PlaybackVolume "cs42l43 Headphone Digital Volume"
JackControl "Headphone Jack"
}
}
SectionDevice."Headset" {
Comment "Headset Microphone"
EnableSequence [
cset "name='cs42l43 ADC1 Input' 'IN1'"
cset "name='cs42l43 Decimator 1 Mode' 'ADC'"
cset "name='cs42l43 DP1TX1 Input' 'Decimator 1'"
cset "name='cs42l43 DP1TX2 Input' 'Decimator 1'"
]
DisableSequence [
cset "name='cs42l43 DP1TX1 Input' 'None'"
cset "name='cs42l43 DP1TX2 Input' 'None'"
]
Value {
CapturePriority 200
CapturePCM "hw:${CardId},4"
CaptureMixerElem "cs42l43 Decimator 1"
JackControl "Headset Mic Jack"
}
}

View file

@ -47,7 +47,7 @@ DefineRegex {
If.hs_init {
Condition {
Type RegexMatch
Regex "(rt5682|rt700|rt711|rt713(-sdca)?)"
Regex "(cs42l43|rt5682|rt700|rt711|rt713(-sdca)?)"
String "${var:HeadsetCodec1}"
}
True.Include.hs_init.File "/codecs/${var:HeadsetCodec1}/init.conf"