Files
rob thijssen 36dc54e8db
Some checks failed
build image / build (push) Has been cancelled
Keep the DSPs out of the initramfs, and let the headphone port be chosen
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
2026-08-14 16:41:03 +03:00

101 lines
3.0 KiB
Plaintext

# 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"
}
}