Re: [RFC PATCH] ASoC: qcom: q6apm-lpass-dais: start the graph at prepare

From: Vladyslav Tymoshchuk

Date: Wed Oct 14 2026 - 12:39:15 EST


Hi all,

On Fri, 09 Oct 2026 17:16:32 +0200, Luca Weiss wrote:
> Is there any new info about this? This seems to be the last blocker to
> upstream Fairphone (Gen. 6) speaker support. Without this patch, the amp
> doesn't start up and audio can't play.
>
> Can you suggest a way forward here?

One more data point, and a possible way forward that does not touch
q6apm.

The OnePlus Pad 3 (SM8750) has six AW88261 on a TDM link of the
AudioReach DSP, with the IBIT clock of the link voted from hw_params
through the MI2S clock control of cc8495c1d45a. It behaves like the
FP6 and the VENTUNO Q: the amplifiers see no bit clock in their PRE_PMU
power-up check, each prepare gives six "start failure (-1)", and the
clock only shows up once the BE graph starts in trigger.

Since the DP case rules out starting the graph at prepare, I moved the
start to the codec side instead: aw88261 starts the amplifier from
.mute_stream with .mute_unmute_on_trigger set, as wsa883x and wsa884x
do. snd_soc_pcm_dai_trigger() runs the CPU DAI trigger first and the
codec unmute after it, so the graph has started and the PLL locks right
away; a prepare without trigger leaves the amplifier off. On the Pad 3:
no start failure any more, all six running during playback, and the
trigger that starts the stream (graph start plus six amplifier starts)
takes 52 to 71 ms.

The patch is here:
https://lore.kernel.org/r/20261014120000.aw88261-trigger-v1-1-tvlad744@xxxxxxxxx

Luca, Jorijn, it would be great to know whether it works on the FP6,
and that it does not change anything on the FP5.

Thanks,
Vladyslav

(I used an AI assistant, Claude, for the analysis and to draft this
mail; the tests ran on my device.)