From: waldek andrukiewicz <waldek.andrukiewicz@protonmail.com>
To: Takashi Iwai <tiwai@suse.de>
Cc: stable@vger.kernel.org, regressions@lists.linux.dev,
Stefan Binding <sbinding@opensource.cirrus.com>,
Richard Fitzgerald <rf@opensource.cirrus.com>,
Lucas Tanure <tanureal@opensource.cirrus.com>
Subject: Re: i2c-CLSA0100:00-cs35l41-hda.1: System Suspend not supported
Date: Wed, 04 Jan 2023 17:37:21 +0000 [thread overview]
Message-ID: <1fb50261-8cf0-2953-2c1a-f7e16cd12d5d@protonmail.com> (raw)
In-Reply-To: <874jt6ps04.wl-tiwai@suse.de>
On 04.01.23 10:29, Takashi Iwai wrote:
> [ adding Cirrus people to Cc ]
>
> On Tue, 03 Jan 2023 21:39:42 +0100,
> waldek andrukiewicz wrote:
>> Hello,
>>
>> I am running Manjaro, after upgrading from kernel 6.0.15 to 6.1.1 (
>> https://gitlab.manjaro.org/packages/core/linux61) I have noticed that suspend
>> stopped working, what I can see in the logs is the following issue which IMO
>> points to cs35l41
>>
>> Machine:
>> Type: Laptop System: LENOVO product: 82N6 v: Legion 7 16ACHg6
>>
>> journalctl output below:
>>
>> Jan 02 21:52:54 legion16 systemd[1]: Starting System Suspend...
>> Jan 02 21:52:54 legion16 wpa_supplicant[1193]: wlp4s0: CTRL-EVENT-DSCP-POLICY
>> clear_all
>> Jan 02 21:52:54 legion16 systemd-sleep[2912]: Entering sleep state
>> 'suspend'...
>> Jan 02 21:52:54 legion16 kernel: PM: suspend entry (deep)
>> Jan 02 21:52:54 legion16 kernel: Filesystems sync: 0.008 seconds
>> Jan 02 21:52:54 legion16 wpa_supplicant[1193]: wlp4s0: CTRL-EVENT-DSCP-POLICY
>> clear_all
>> Jan 02 21:52:54 legion16 wpa_supplicant[1193]: nl80211: deinit ifname=wlp4s0
>> disabled_11b_rates=0
>> Jan 02 21:52:54 legion16 plasmashell[1770]: qml: [DEBUG] - onNewData
>> Jan 02 21:52:54 legion16 kernel: Freezing user space processes ... (elapsed
>> 0.002 seconds) done.
>> Jan 02 21:52:54 legion16 kernel: OOM killer disabled.
>> Jan 02 21:52:54 legion16 kernel: Freezing remaining freezable tasks ...
>> (elapsed 0.001 seconds) done.
>> Jan 02 21:52:54 legion16 kernel: printk: Suspending console(s) (use
>> no_console_suspend to debug)
>> Jan 02 21:52:54 legion16 kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.1:
>> System Suspend not supported
>> Jan 02 21:52:54 legion16 kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.0:
>> System Suspend not supported
>> Jan 02 21:52:54 legion16 kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.1:
>> PM: dpm_run_callback(): cs35l41_system_suspend+0x0/0xd0
>> [snd_hda_scodec_cs35l41] returns -22
> Indeed the suspend isn't supported for this chip wrt the specific
> model/config, but it's a bad behavior to block the whole system
> suspend due to that.
>
> Could you try the patch below?
>
>
> Takashi
>
> -- 8< --
> diff --git a/sound/pci/hda/cs35l41_hda.c b/sound/pci/hda/cs35l41_hda.c
> index 91842c0c8c74..6322157c7ea2 100644
> --- a/sound/pci/hda/cs35l41_hda.c
> +++ b/sound/pci/hda/cs35l41_hda.c
> @@ -598,8 +598,8 @@ static int cs35l41_system_suspend(struct device *dev)
> dev_dbg(cs35l41->dev, "System Suspend\n");
>
> if (cs35l41->hw_cfg.bst_type == CS35L41_EXT_BOOST_NO_VSPK_SWITCH) {
> - dev_err(cs35l41->dev, "System Suspend not supported\n");
> - return -EINVAL;
> + dev_err_once(cs35l41->dev, "System Suspend not supported\n");
> + return 0; /* don't block the whole system suspend */
> }
>
> ret = pm_runtime_force_suspend(dev);
> @@ -624,8 +624,8 @@ static int cs35l41_system_resume(struct device *dev)
> dev_dbg(cs35l41->dev, "System Resume\n");
>
> if (cs35l41->hw_cfg.bst_type == CS35L41_EXT_BOOST_NO_VSPK_SWITCH) {
> - dev_err(cs35l41->dev, "System Resume not supported\n");
> - return -EINVAL;
> + dev_err_once(cs35l41->dev, "System Resume not supported\n");
> + return 0; /* don't block the whole system resume */
> }
>
> if (cs35l41->reset_gpio) {
> @@ -647,6 +647,15 @@ static int cs35l41_system_resume(struct device *dev)
> return ret;
> }
>
> +static int cs35l41_runtime_idle(struct device *dev)
> +{
> + struct cs35l41_hda *cs35l41 = dev_get_drvdata(dev);
> +
> + if (cs35l41->hw_cfg.bst_type == CS35L41_EXT_BOOST_NO_VSPK_SWITCH)
> + return -EBUSY; /* suspend not supported yet on this model */
> + return 0;
> +}
> +
> static int cs35l41_runtime_suspend(struct device *dev)
> {
> struct cs35l41_hda *cs35l41 = dev_get_drvdata(dev);
> @@ -1536,7 +1545,8 @@ void cs35l41_hda_remove(struct device *dev)
> EXPORT_SYMBOL_NS_GPL(cs35l41_hda_remove, SND_HDA_SCODEC_CS35L41);
>
> const struct dev_pm_ops cs35l41_hda_pm_ops = {
> - RUNTIME_PM_OPS(cs35l41_runtime_suspend, cs35l41_runtime_resume, NULL)
> + RUNTIME_PM_OPS(cs35l41_runtime_suspend, cs35l41_runtime_resume,
> + cs35l41_runtime_idle)
> SYSTEM_SLEEP_PM_OPS(cs35l41_system_suspend, cs35l41_system_resume)
> };
> EXPORT_SYMBOL_NS_GPL(cs35l41_hda_pm_ops, SND_HDA_SCODEC_CS35L41);
Hi Takashi,
Thank you for your prompt reply, I decided to patch the Manjaro 6.1.3
kernel and in case the issue persisted, try the same with mainline but
it helped. I can suspend/resume the laptop same as I could with pre 6.1
kernels.
If you are interested in any logs from my system let me know.
Best Regards,
Waldek Andrukiewicz
next prev parent reply other threads:[~2023-01-04 17:37 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <4262e3c4-6169-bbd2-e918-16b06f6994bc@protonmail.com>
2023-01-04 9:29 ` i2c-CLSA0100:00-cs35l41-hda.1: System Suspend not supported Takashi Iwai
2023-01-04 17:37 ` waldek andrukiewicz [this message]
2023-01-03 20:45 Waldek Andrukiewicz
2023-01-04 2:18 ` Bagas Sanjaya
2023-01-04 20:05 ` Waldek Andrukiewicz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1fb50261-8cf0-2953-2c1a-f7e16cd12d5d@protonmail.com \
--to=waldek.andrukiewicz@protonmail.com \
--cc=regressions@lists.linux.dev \
--cc=rf@opensource.cirrus.com \
--cc=sbinding@opensource.cirrus.com \
--cc=stable@vger.kernel.org \
--cc=tanureal@opensource.cirrus.com \
--cc=tiwai@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).