Keep the DSPs out of the initramfs, and let the headphone port be chosen
Some checks failed
build image / build (push) Has been cancelled
Some checks failed
build image / build (push) Has been cancelled
Rebuilding the initramfs on the machine rather than in the build container pulled qcom_q6v5_pas into it. There it probes while the initramfs is still the root filesystem, asks for qcadsp850.mbn, gets -2, and never retries — the same race 10-c630.conf already documents for the Adreno firmware. The ADSP hosts the whole audio path, so the machine comes up with no sound card and a sound device deferring on "error getting cpu dai name", which points nowhere near firmware. The blobs cannot go in the initramfs to fix it: they are ~20 MiB and are extracted from Windows, so they need not exist at build time. Omitting the driver instead means it loads once the real root is there. The modem driver goes with it, since it is not needed early either. Separately, the WCD9340 decides what is plugged in by measuring impedance, so an amplifier on the headphone socket reads as an open circuit and the jack control never leaves 'off'. PipeWire marks the port not available, will not keep it as the default sink, and GNOME hides it — an output that works when driven directly becomes unreachable from the desktop. Dropping JackControl from the Headphones device leaves availability unknown rather than no, and the port becomes permanently selectable. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XgGF5wfxLDAybVnNz6eNQ
This commit is contained in:
100
overlay/usr/share/alsa/ucm2/Qualcomm/sdm845/HiFi-MM1.conf
Normal file
100
overlay/usr/share/alsa/ucm2/Qualcomm/sdm845/HiFi-MM1.conf
Normal file
@@ -0,0 +1,100 @@
|
||||
# Use case configuration for LenovoYOGAC6301.
|
||||
# Author: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
|
||||
#
|
||||
# Local copy of the file from alsa-ucm, with one line removed: the Headphones
|
||||
# device no longer declares
|
||||
#
|
||||
# JackControl "Headphone Jack"
|
||||
#
|
||||
# The WCD9340 detects what is in the socket by measuring its impedance, which
|
||||
# works for headphones (16-32 ohm) and not for a line input — an amplifier
|
||||
# presents something close to an open circuit, so the jack control stays 'off'
|
||||
# and nothing is ever detected as plugged in. PipeWire then marks the port
|
||||
# "not available", refuses to keep it as the default sink, and GNOME hides it
|
||||
# from Settings entirely, so there is no way to select an output that works
|
||||
# perfectly well.
|
||||
#
|
||||
# Without JackControl the port's availability is "unknown" rather than "no",
|
||||
# which makes it permanently selectable. The cost is that plugging in real
|
||||
# headphones no longer switches to them automatically; you pick the output by
|
||||
# hand. On a machine wired to an amplifier that is the better trade, and the
|
||||
# detection it gives up was never working for that case anyway.
|
||||
#
|
||||
# Only Qualcomm/sdm845/Lenovo-YOGA-C630-13Q50.conf includes this file, so the
|
||||
# override cannot affect any other card. It does shadow an alsa-ucm file, and
|
||||
# rpm will put the stock one back when that package updates — after which the
|
||||
# headphone port disappears from Settings again until this is reapplied.
|
||||
|
||||
SectionVerb {
|
||||
|
||||
EnableSequence [
|
||||
cset "name='SLIMBUS_0_RX Audio Mixer MultiMedia1' 1"
|
||||
cset "name='SLIMBUS_1_RX Audio Mixer MultiMedia3' 1"
|
||||
cset "name='MultiMedia2 Mixer SLIMBUS_0_TX' 1"
|
||||
]
|
||||
|
||||
Include.wcde.File "/codecs/wcd934x/DefaultEnableSeq.conf"
|
||||
Include.wsae.File "/codecs/wsa881x/DefaultEnableSeq.conf"
|
||||
|
||||
Include.wcdd {
|
||||
File "/codecs/wcd934x/DefaultDisableSeq.conf"
|
||||
Before.DisableSequence "0"
|
||||
}
|
||||
|
||||
DisableSequence [
|
||||
cset "name='SLIMBUS_0_RX Audio Mixer MultiMedia1' 0"
|
||||
cset "name='SLIMBUS_1_RX Audio Mixer MultiMedia3' 0"
|
||||
cset "name='MultiMedia2 Mixer SLIMBUS_0_TX' 0"
|
||||
]
|
||||
|
||||
Value {
|
||||
TQ "HiFi"
|
||||
}
|
||||
}
|
||||
|
||||
SectionDevice."Speaker" {
|
||||
Comment "Speaker playback"
|
||||
|
||||
Include.wcdspke.File "/codecs/wcd934x/SpeakerEnableSeq.conf"
|
||||
Include.wcdspkd.File "/codecs/wcd934x/SpeakerDisableSeq.conf"
|
||||
Include.wsaspke.File "/codecs/wsa881x/SpeakerEnableSeq.conf"
|
||||
Include.wsaspkd.File "/codecs/wsa881x/SpeakerDisableSeq.conf"
|
||||
|
||||
Value {
|
||||
PlaybackPriority 100
|
||||
PlaybackPCM "hw:${CardId},0"
|
||||
PlaybackMixer "default:${CardId}"
|
||||
PlaybackMixerElem "Speaker"
|
||||
}
|
||||
}
|
||||
|
||||
SectionDevice."Headphones" {
|
||||
Comment "Headphones playback"
|
||||
|
||||
Include.wcdhpe.File "/codecs/wcd934x/HeadphoneEnableSeq.conf"
|
||||
Include.wcdhpd.File "/codecs/wcd934x/HeadphoneDisableSeq.conf"
|
||||
|
||||
Value {
|
||||
PlaybackPriority 200
|
||||
PlaybackPCM "hw:${CardId},2"
|
||||
PlaybackMixer "default:${CardId}"
|
||||
PlaybackMixerElem "HP"
|
||||
}
|
||||
}
|
||||
|
||||
SectionDevice."Mic" {
|
||||
Comment "Mic"
|
||||
|
||||
Include.wcdmice.File "/codecs/wcd934x/HeadphoneMicEnableSeq.conf"
|
||||
Include.wcdmicd.File "/codecs/wcd934x/HeadphoneMicDisableSeq.conf"
|
||||
|
||||
DisableSequence [
|
||||
cset "name='AMIC MUX0' ZERO"
|
||||
]
|
||||
|
||||
Value {
|
||||
CapturePriority 100
|
||||
CapturePCM "hw:${CardId},1"
|
||||
CaptureMixerElem "ADC2"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user