diff options
| author | Joonhoe Kim <26rote@gmail.com> | 2026-10-07 21:39:54 +0900 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2026-10-13 00:01:52 +0100 |
| commit | e7860dc5d8d45f6a0e98bfe542c7b776c5ede2a4 (patch) | |
| tree | 9a873c14c20a7ce8510cc395b89ed4247c72662f /scripts/Makefile.thinlto | |
| parent | 4f173a0fee694626d13494cba5f95cd49b1e28a2 (diff) | |
| download | linux-e7860dc5d8d45f6a0e98bfe542c7b776c5ede2a4.tar.gz linux-e7860dc5d8d45f6a0e98bfe542c7b776c5ede2a4.zip | |
ASoC: codecs: wcd939x: read the SoundWire port switches per channel
The "HPHL/HPHR", "ADCn" and "DMICn" switches are channels of shared
SoundWire ports (ADC1-4 are channels 0-3 of the ADC_1_4 port), but
wcd939x_get_swr_port() reports a per-port flag. Once one channel of a
port is switched on, every switch on that port reads back as on:
amixer cset name='ADC1 Switch' on -> ADC1..ADC4 Switch all read "on"
Setting one of the others then looks like a no-op to userspace, and
"alsactl store" saves all of them as on, so a later "alsactl restore"
really enables the unused channels of the port.
Read the channel's own bit in the port's channel mask instead, drop the
now unused port_enable[] and return 0 from the put handler when the
switch does not change, as ALSA expects.
Fixes: 10f514bd172a ("ASoC: codecs: Add WCD939x Codec driver")
Link: https://lore.kernel.org/all/20251124064850.15419-6-jonathan@marek.ca/
Assisted-by: LLM
Signed-off-by: Joonhoe Kim <26rote@gmail.com>
Link: https://patch.msgid.link/20261007123954.1709-1-26rote@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'scripts/Makefile.thinlto')
0 files changed, 0 insertions, 0 deletions
