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