* [PATCH] ALSA: hda: cs35l41: Fix errors caused by software reset
@ 2026-03-02 12:11 Zhang Heng
2026-03-02 16:06 ` Stefan Binding
0 siblings, 1 reply; 2+ messages in thread
From: Zhang Heng @ 2026-03-02 12:11 UTC (permalink / raw)
To: david.rhodes, rf, perex, tiwai, sbinding
Cc: linux-sound, patches, linux-kernel, paul, Zhang Heng, stable
Performing software reset again after hardware reset is redundant
and may result in errors. Software reset should be performed when
hardware reset is not possible.
[ +0.013038] cs35l41-hda spi1-CSC3551:00-cs35l41-hda.0: Calibration applied: R0=10476
[ +0.010741] cs35l41-hda spi1-CSC3551:00-cs35l41-hda.0: Firmware Loaded - Type: spk-prot, Gain: 19
[ +0.012471] cs35l41-hda spi1-CSC3551:00-cs35l41-hda.1: Failed waiting for OTP_BOOT_DONE
[ +0.000002] cs35l41-hda spi1-CSC3551:00-cs35l41-hda.1: PM: dpm_run_callback(): cs35l41_system_resume [snd_hda_scodec_cs35l41] returns -110
[ +0.000011] cs35l41-hda spi1-CSC3551:00-cs35l41-hda.1: PM: failed to restore: error -110
Link: https://bugzilla.kernel.org/show_bug.cgi?id=221161
Fixes: 2ee06ff5d7cf ("ALSA: hda: cs35l41: Force a software reset after hardware reset")
Cc: stable@vger.kernel.org
Signed-off-by: Zhang Heng <zhangheng@kylinos.cn>
---
sound/hda/codecs/side-codecs/cs35l41_hda.c | 18 ++++++++----------
1 file changed, 8 insertions(+), 10 deletions(-)
diff --git a/sound/hda/codecs/side-codecs/cs35l41_hda.c b/sound/hda/codecs/side-codecs/cs35l41_hda.c
index b64890006bb7..c546a42754bb 100644
--- a/sound/hda/codecs/side-codecs/cs35l41_hda.c
+++ b/sound/hda/codecs/side-codecs/cs35l41_hda.c
@@ -1023,15 +1023,13 @@ static int cs35l41_system_resume(struct device *dev)
gpiod_set_value_cansleep(cs35l41->reset_gpio, 0);
usleep_range(2000, 2100);
gpiod_set_value_cansleep(cs35l41->reset_gpio, 1);
+ usleep_range(2000, 2100);
+ } else {
+ regmap_write(cs35l41->regmap, CS35L41_SFT_RESET, CS35L41_SOFTWARE_RESET);
+ usleep_range(2000, 2100);
}
-
- usleep_range(2000, 2100);
-
regcache_cache_only(cs35l41->regmap, false);
- regmap_write(cs35l41->regmap, CS35L41_SFT_RESET, CS35L41_SOFTWARE_RESET);
- usleep_range(2000, 2100);
-
ret = cs35l41_wait_boot_done(cs35l41);
if (ret)
return ret;
@@ -1973,12 +1971,12 @@ int cs35l41_hda_probe(struct device *dev, const char *device_name, int id, int i
gpiod_set_value_cansleep(cs35l41->reset_gpio, 0);
usleep_range(2000, 2100);
gpiod_set_value_cansleep(cs35l41->reset_gpio, 1);
+ usleep_range(2000, 2100);
+ } else {
+ regmap_write(cs35l41->regmap, CS35L41_SFT_RESET, CS35L41_SOFTWARE_RESET);
+ usleep_range(2000, 2100);
}
- usleep_range(2000, 2100);
- regmap_write(cs35l41->regmap, CS35L41_SFT_RESET, CS35L41_SOFTWARE_RESET);
- usleep_range(2000, 2100);
-
ret = cs35l41_wait_boot_done(cs35l41);
if (ret)
goto err;
--
2.47.1
^ permalink raw reply [flat|nested] 2+ messages in thread* Re: [PATCH] ALSA: hda: cs35l41: Fix errors caused by software reset
2026-03-02 12:11 [PATCH] ALSA: hda: cs35l41: Fix errors caused by software reset Zhang Heng
@ 2026-03-02 16:06 ` Stefan Binding
0 siblings, 0 replies; 2+ messages in thread
From: Stefan Binding @ 2026-03-02 16:06 UTC (permalink / raw)
To: Zhang Heng, david.rhodes, rf, perex, tiwai
Cc: linux-sound, patches, linux-kernel, paul, stable
Hi,
I don't think this is necessarily the correct solution to this issue.
The software resets were added intentionally, so making them conditional may cause issues.
I've commented on the original BugZilla to get more information.
Thanks,
Stefan
On 02/03/2026 12:11, Zhang Heng wrote:
> Performing software reset again after hardware reset is redundant
> and may result in errors. Software reset should be performed when
> hardware reset is not possible.
>
> [ +0.013038] cs35l41-hda spi1-CSC3551:00-cs35l41-hda.0: Calibration applied: R0=10476
> [ +0.010741] cs35l41-hda spi1-CSC3551:00-cs35l41-hda.0: Firmware Loaded - Type: spk-prot, Gain: 19
> [ +0.012471] cs35l41-hda spi1-CSC3551:00-cs35l41-hda.1: Failed waiting for OTP_BOOT_DONE
> [ +0.000002] cs35l41-hda spi1-CSC3551:00-cs35l41-hda.1: PM: dpm_run_callback(): cs35l41_system_resume [snd_hda_scodec_cs35l41] returns -110
> [ +0.000011] cs35l41-hda spi1-CSC3551:00-cs35l41-hda.1: PM: failed to restore: error -110
>
> Link: https://bugzilla.kernel.org/show_bug.cgi?id=221161
> Fixes: 2ee06ff5d7cf ("ALSA: hda: cs35l41: Force a software reset after hardware reset")
> Cc: stable@vger.kernel.org
> Signed-off-by: Zhang Heng <zhangheng@kylinos.cn>
> ---
> sound/hda/codecs/side-codecs/cs35l41_hda.c | 18 ++++++++----------
> 1 file changed, 8 insertions(+), 10 deletions(-)
>
> diff --git a/sound/hda/codecs/side-codecs/cs35l41_hda.c b/sound/hda/codecs/side-codecs/cs35l41_hda.c
> index b64890006bb7..c546a42754bb 100644
> --- a/sound/hda/codecs/side-codecs/cs35l41_hda.c
> +++ b/sound/hda/codecs/side-codecs/cs35l41_hda.c
> @@ -1023,15 +1023,13 @@ static int cs35l41_system_resume(struct device *dev)
> gpiod_set_value_cansleep(cs35l41->reset_gpio, 0);
> usleep_range(2000, 2100);
> gpiod_set_value_cansleep(cs35l41->reset_gpio, 1);
> + usleep_range(2000, 2100);
> + } else {
> + regmap_write(cs35l41->regmap, CS35L41_SFT_RESET, CS35L41_SOFTWARE_RESET);
> + usleep_range(2000, 2100);
> }
> -
> - usleep_range(2000, 2100);
> -
> regcache_cache_only(cs35l41->regmap, false);
>
> - regmap_write(cs35l41->regmap, CS35L41_SFT_RESET, CS35L41_SOFTWARE_RESET);
> - usleep_range(2000, 2100);
> -
> ret = cs35l41_wait_boot_done(cs35l41);
> if (ret)
> return ret;
> @@ -1973,12 +1971,12 @@ int cs35l41_hda_probe(struct device *dev, const char *device_name, int id, int i
> gpiod_set_value_cansleep(cs35l41->reset_gpio, 0);
> usleep_range(2000, 2100);
> gpiod_set_value_cansleep(cs35l41->reset_gpio, 1);
> + usleep_range(2000, 2100);
> + } else {
> + regmap_write(cs35l41->regmap, CS35L41_SFT_RESET, CS35L41_SOFTWARE_RESET);
> + usleep_range(2000, 2100);
> }
>
> - usleep_range(2000, 2100);
> - regmap_write(cs35l41->regmap, CS35L41_SFT_RESET, CS35L41_SOFTWARE_RESET);
> - usleep_range(2000, 2100);
> -
> ret = cs35l41_wait_boot_done(cs35l41);
> if (ret)
> goto err;
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-03-02 16:06 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-03-02 12:11 [PATCH] ALSA: hda: cs35l41: Fix errors caused by software reset Zhang Heng
2026-03-02 16:06 ` Stefan Binding
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®