Hi Morimoto-san, Wolfram,
During the second system suspend (suspend to mem, "deep") on H3 Salvator-X,
the clk subsystem prints warnings due to enable and prepare count imbalances.
With some additional debug code, I discovered the issue is caused by the
CS2000 clock driver failing to resume:
suspend #1:
rsnd_adg_clk_control: called by rsnd_suspend
rsnd_adg_clk_control: Disable audio_clk_a
rsnd_adg_clk_control: Disable clk_multiplier
rsnd_adg_clk_control: Disable audio_clk_c
rsnd_adg_clk_control: Disable s0d4
resume #1:
dpm_run_callback(): cs2000_resume+0x0/0x20 returns -6
PM: Device 2-004f failed to resume early: error -6
rsnd_adg_clk_control: called by rsnd_resume
rsnd_adg_clk_control: Enable audio_clk_a
rsnd_adg_clk_control: Enable clk_multiplier
rcar_sound ec500000.sound: can't use clk 1
rsnd_adg_clk_control: Enable audio_clk_c
rsnd_adg_clk_control: Enable s0d4
suspend #2:
rsnd_adg_clk_control: called by rsnd_suspend
rsnd_adg_clk_control: Disable audio_clk_a
rsnd_adg_clk_control: Disable clk_multiplier
WARNING: CPU: 0 PID: 1943 at drivers/clk/clk.c:594
clk_core_disable+0x44/0x254
[...]
WARNING: CPU: 0 PID: 1943 at drivers/clk/clk.c:476
clk_core_unprepare+0x48/0x36c
[...]
rsnd_adg_clk_control: Disable audio_clk_c
rsnd_adg_clk_control: Disable s0d4
resume #2:
dpm_run_callback(): cs2000_resume+0x0/0x20 returns -6
PM: Device 2-004f failed to resume early: error -6
rsnd_adg_clk_control: called by rsnd_resume
rsnd_adg_clk_control: Enable audio_clk_a
rsnd_adg_clk_control: Enable clk_multiplier
rcar_sound ec500000.sound: can't use clk 1
rsnd_adg_clk_control: Enable audio_clk_c
rsnd_adg_clk_control: Enable s0d4
The CS2000 driver fails to send an i2c message, probably because the
rcar-i2c driver lost some register settings during system suspend. This does
not happen with s2idle.
I guess this is also the reason for this warning:
ak4613-codec 2-0010: Unable to sync registers 0x0-0x2. -6
as the ak4613 is connected to the same i2c bus.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds