[PATCH] ASoC: rt1320-sdw: don't poll PDE state on power-down

From: Aaron Ma

Date: Tue Apr 28 2026 - 03:47:07 EST


rt1320_pde23_event(PRE_PMD) writes REQ_POWER_STATE=PS3 then polls
ACTUAL_POWER_STATE. DAPM fires PRE_PMD while the SoundWire data port
is still streaming — the codec cannot reach PS3 until the port stops,
so the poll always times out during playback. This blocks
snd_ctl_elem_write() for 2-3s making mute unresponsive.

Remove the poll from PRE_PMD in rt1320_pde23_event() and
rt1320_pde11_event(). The codec transitions to PS3 on its own once the
data port becomes inactive. Keep the POST_PMU poll — on power-up the
domain must reach PS0 before audio can flow.

Fixes: f465d10cd731 ("ASoC: rt1320: Add support for version C")
Signed-off-by: Aaron Ma <aaron.ma@xxxxxxxxxxxxx>
---
sound/soc/codecs/rt1320-sdw.c | 2 --
1 file changed, 2 deletions(-)

diff --git a/sound/soc/codecs/rt1320-sdw.c b/sound/soc/codecs/rt1320-sdw.c
index 192faa431b5e9..e42e8b6de853e 100644
--- a/sound/soc/codecs/rt1320-sdw.c
+++ b/sound/soc/codecs/rt1320-sdw.c
@@ -2000,7 +2000,6 @@ static int rt1320_pde11_event(struct snd_soc_dapm_widget *w,
regmap_write(rt1320->regmap,
SDW_SDCA_CTL(FUNC_NUM_MIC, RT1320_SDCA_ENT_PDE11,
RT1320_SDCA_CTL_REQ_POWER_STATE, 0), ps3);
- rt1320_pde_transition_delay(rt1320, FUNC_NUM_MIC, RT1320_SDCA_ENT_PDE11, ps3);
break;
default:
break;
@@ -2028,7 +2027,6 @@ static int rt1320_pde23_event(struct snd_soc_dapm_widget *w,
regmap_write(rt1320->regmap,
SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_PDE23,
RT1320_SDCA_CTL_REQ_POWER_STATE, 0), ps3);
- rt1320_pde_transition_delay(rt1320, FUNC_NUM_AMP, RT1320_SDCA_ENT_PDE23, ps3);
break;
default:
break;
--
2.43.0