Re: [PATCH 2/2] ALSA: hda/cs8409: Prevent pops and clicks during reboot

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 17/08/2021 1:16 pm, Takashi Iwai wrote:
On Tue, 17 Aug 2021 13:28:21 +0200,
Vitaly Rodionov wrote:
On 14/08/2021 7:41 am, Takashi Iwai wrote:
On Fri, 13 Aug 2021 08:10:47 +0200,
Takashi Iwai wrote:
On Thu, 12 Aug 2021 20:34:33 +0200,
Vitaly Rodionov wrote:
From: Stefan Binding <sbinding@xxxxxxxxxxxxxxxxxxxxx>

During reboot, when the CS42L42 powers down, pops and clicks
may occur due to the codec not being shutdown gracefully.
This can be fixed by going through the suspend sequence,
which shuts down the codec cleanly inside the reboot_notify
hook, which is called on reboot.

Signed-off-by: Stefan Binding <sbinding@xxxxxxxxxxxxxxxxxxxxx>
Signed-off-by: Vitaly Rodionov <vitalyr@xxxxxxxxxxxxxxxxxxxxx>
I hold this one for now, as there is a fix series that deprecates the
reboot_notify callback of HD-audio by forcibly doing runtime-suspend
at shutdown.  Please check the three patches in
    https://bugzilla.kernel.org/show_bug.cgi?id=214045

I'm going to submit those soon in anyway.
Hi Takashi,

Thanks for letting us know. We have tested against for-next branch and
we have an issue.

Loud pops on reboot. It looks like suspend have never been called on
reboot or shutdown for us.
OK, we need to track down the cause.

Does the noise persist if the codec has been runtime-suspended
beforehand?  You can check the status in sysfs.

Hi Takashi,

Sorry for the delay. We just wanted to get as much information as possible. Now we can see what causing pops on reboot.

Actually when codec is suspended and we do reboot from UI, then sometimes we see suspend() calls in kernel log and no pops, but sometimes

we still have no suspend() on reboot and we hear pops. But when we do reboot from command line: > sudo reboot  then we always have pops and no suspend() called.

Then we have added extra logging and we can see that on reboot codec somehow getting resume() call and we run jack detect on resume that causing pops.

We were thinking about possible solution for that and we would propose some changes in generic code hda_bind.c:

static void hda_codec_driver_shutdown(struct device *dev) { +   if (codec->patch_ops.suspend) +      codec->patch_ops.suspend(codec);    snd_hda_codec_shutdown(dev_to_hda_codec(dev)); +  hda_codec_driver_remove(dev_to_hda_codec(dev)); }

This have been tested on all our platforms without regression and it fixes pops issue on dolphin HW

as well for reboot from UI and > sudo reboot. We always getting suspend() calls

on reboot.

Thanks,

Vitaly



thanks,

Takashi




[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux