diff options
| author | John Madieu <john.madieu.xa@bp.renesas.com> | 2026-06-10 16:47:04 +0000 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2026-07-01 16:57:26 +0100 |
| commit | ed0abc8be27e23aa65716bcaab8976ada2503cab (patch) | |
| tree | 73a2cca3ed5521e320cdea21c8f573184684ab44 /scripts/Makefile.thinlto | |
| parent | 95edf2dbb492f3ea2420111e9c0044c7dec9113c (diff) | |
| download | linux-ed0abc8be27e23aa65716bcaab8976ada2503cab.tar.gz linux-ed0abc8be27e23aa65716bcaab8976ada2503cab.zip | |
ASoC: rsnd: adg: make rsnd_adg_clk_control() idempotent
rsnd_adg_clk_control() is asymmetric on the disable path: the clkin
clocks are guarded by clkin_rate[], but the "adg" clock is disabled
unconditionally. If an enable attempt fails (for example a clkin
failing to turn on during resume), the error path correctly rolls
everything back, but rsnd_resume() ignores the return value, so the
following system suspend calls rsnd_adg_clk_disable() again and
underflows the "adg" clock enable count:
adg_0_clks1 already disabled
WARNING: drivers/clk/clk.c:1188 clk_core_disable+0xa4/0xac
Call trace:
clk_core_disable+0xa4/0xac (P)
clk_disable+0x30/0x4c
rsnd_adg_clk_control+0x9c/0x2cc
rsnd_suspend+0x20/0x74
device_suspend+0x140/0x3ec
dpm_suspend+0x168/0x270
Track the enable state explicitly and bail out of redundant
enable/disable calls, mirroring what is already done for the per-SSI
clock prepare state. A failed enable leaves the state as disabled, so
the next suspend becomes a no-op and the next resume retries cleanly.
Fixes: 47899d53f86f ("ASoC: rsnd: adg: Add per-SSI ADG and SSIF supply clock management")
Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com>
Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://patch.msgid.link/20260610164704.2211321-1-john.madieu.xa@bp.renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'scripts/Makefile.thinlto')
0 files changed, 0 insertions, 0 deletions
