Re: [PATCH v3] ASoC: qcom: lpass-cpu: Fix pop noise during audio capture begin

From: Doug Anderson
Date: Tue Jun 01 2021 - 11:24:25 EST


Hi,

On Mon, May 24, 2021 at 7:21 AM Srinivasa Rao Mandadapu
<srivasam@xxxxxxxxxxxxxx> wrote:
>
> This patch fixes PoP noise of around 15ms observed during audio capture begin.
> Enables BCLK and LRCLK in snd_soc_dai_ops prepare call for introducing some delay
> before capture start and clock enable.
>
> Co-developed-by: Judy Hsiao <judyhsiao@xxxxxxxxxxxx>
> Signed-off-by: Judy Hsiao <judyhsiao@xxxxxxxxxxxx>
> Signed-off-by: Srinivasa Rao Mandadapu <srivasam@xxxxxxxxxxxxxx>
> ---
> Changes Since V2:
> -- Updated comments as per linux style
> -- Removed unrelated changes.
> Changes Since V1:
> -- Enableed BCLK and LRCLK in dai ops prepare API instead of startup API
> -- Added comments
>
> sound/soc/qcom/lpass-cpu.c | 54 +++++++++++++++++++++++++++++++++++++-
> 1 file changed, 53 insertions(+), 1 deletion(-)

Presumably related with Srinivas Kandagatla's comments: this patch
causes a bad splat at bootup. Specifically, here's what I saw when
this patch was in the Chrome OS 5.4 kernel:

------------[ cut here ]------------
lpass_audio_core_lpaif_pri_ibit_clk already disabled
WARNING: CPU: 0 PID: 2066 at drivers/clk/clk.c:958 clk_core_disable+0x4a0/0x670
CPU: 0 PID: 2066 Comm: cras Not tainted 5.4.122-lockdep #4
Hardware name: Google Lazor (rev1 - 2) with LTE (DT)
pstate: 60400089 (nZCv daIf +PAN -UAO)
pc : clk_core_disable+0x4a0/0x670
lr : clk_core_disable+0x4a0/0x670
sp : ffffff81727cf8a0
x29: ffffff81727cf8a0 x28: 1ffffff033d2b8d5
x27: dfffffd000000000 x26: ffffff81a3781980
x25: 1ffffff03493d3b3 x24: ffffff816f433480
x23: dfffffd000000000 x22: 1ffffff035b66e2f
x21: 00000000ffffffff x20: ffffff81adb3717c
x19: ffffff81adb37100 x18: 0000000000000339
x17: ffffffffffffffff x16: 0000000000000006
x15: 0000000000000001 x14: 0720072007200720
x13: 0000000000000000 x12: ffffffd0132c1e00
x11: 0000000000000001 x10: 0000000000000000
x9 : cff2cb5e2cb22e00 x8 : cff2cb5e2cb22e00
x7 : ffffffd010288f74 x6 : 0000000000000000
x5 : 0000000000000080 x4 : 0000000000000001
x3 : ffffffd010429d10 x2 : 0000000000000001
x1 : 0000000000000008 x0 : 0000000000000034
Call trace:
clk_core_disable+0x4a0/0x670
clk_disable+0x50/0x64
lpass_cpu_daiops_shutdown+0x190/0x204 [snd_soc_lpass_cpu]
snd_soc_dai_shutdown+0x8c/0x9c
soc_pcm_close+0x258/0x478
snd_pcm_release_substream+0xfc/0x1e8
snd_pcm_release+0x8c/0x124
__fput+0x1e4/0x4fc
____fput+0x1c/0x28
task_work_run+0x12c/0x164
do_notify_resume+0x1e04/0x2c48
work_pending+0x8/0x14
irq event stamp: 101552

-Doug