diff options
| author | Marek Szyprowski <m.szyprowski@samsung.com> | 2026-10-22 11:09:22 +0200 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2026-10-26 20:17:45 +0000 |
| commit | c80f86ed857e21dcdd389559d3e62bf53ff39f9a (patch) | |
| tree | 851fd3a4acece35ba5fd99ff903fcc65df7fcd9c /scripts/basic/split-include.c | |
| parent | 6ecbbd8bba209c111aa635ecd8bc95f42ff36d7a (diff) | |
| download | linux-c80f86ed857e21dcdd389559d3e62bf53ff39f9a.tar.gz linux-c80f86ed857e21dcdd389559d3e62bf53ff39f9a.zip | |
ASoC: codecs: wsa881x: Fix shared powerdown GPIO handling
On Qualcomm RB5 both WSA8815 speaker amplifiers share a single powerdown
GPIO (TLMM 130), which is handled by the shared GPIO proxy. Since commit
b30973e8c392 ("gpio: shared: make the voting mechanism adaptable") the
proxy treats the value set by the first user on request as the default
and lets any single user vote for the opposite value.
The driver requests the GPIO de-asserted (GPIOD_OUT_LOW), so powering the
amplifier up became the default and asserting powerdown became the
winning vote. Once both amplifiers are runtime suspended, resuming them
deadlocks: the first one releases its powerdown vote and waits for
SoundWire enumeration, but the line stays asserted, because the second
amplifier is still suspended and votes for powerdown. The wait times out
and playback fails:
wsa881x-codec sdw:1:0:0217:2110:00:3: Initialization not complete
wsa881x-codec sdw:1:0:0217:2110:00:3: ASoC error (-110): at snd_soc_pcm_component_pm_runtime_get() on sdw:1:0:0217:2110:00:3
Request the GPIO asserted, so that powerdown is the default state and
the line is de-asserted as long as any amplifier needs to be powered,
then de-assert it to power up the amplifier as before.
Also use gpiod_set_value_cansleep() instead of gpiod_direction_output()
in the runtime PM callbacks. The line is already configured as an output
and the proxy resets its default value when the direction is set while
it has only a single user, which can happen if the other amplifiers have
not been probed yet.
Fixes: bfa336cee332 ("ASoC: wsa881x: Move custom workaround to gpiolib-of")
Fixes: b30973e8c392 ("gpio: shared: make the voting mechanism adaptable")
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Link: https://patch.msgid.link/20261022090923.769464-1-m.szyprowski@samsung.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'scripts/basic/split-include.c')
0 files changed, 0 insertions, 0 deletions
