linux/sound/soc/samsung
Marek Szyprowski 7529254014 ASoC: samsung: i2s: enable op_clk in probe to balance runtime PM
The probe function puts the device into the runtime PM active state with
only the "iis" bus clock enabled, but it also sets priv->op_clk to the
parent of the RCLK_SRC mux without enabling it. The runtime PM suspend
callback disables both clocks, so the first runtime suspend after probe
disables op_clk once more than it was enabled.

On Exynos5250 Arndale both clocks resolve to the same EXYNOS_I2S_BUS gate,
so this triggers the following warning during boot:

 WARNING: drivers/clk/clk.c:1270 at clk_core_disable+0xe4/0x23c, CPU#0: kworker/u8:3/45
 i2s_bus already disabled
 ...
 Workqueue: pm pm_runtime_work
 Call trace:
  ...
  clk_core_disable from clk_disable+0x28/0x34
  clk_disable from i2s_runtime_suspend+0x58/0x68 [snd_soc_i2s]
  i2s_runtime_suspend [snd_soc_i2s] from genpd_runtime_suspend+0xc4/0x298
  genpd_runtime_suspend from __rpm_callback+0x48/0x18c
  __rpm_callback from rpm_callback+0x4c/0x50
  rpm_callback from rpm_suspend+0xf4/0x718
  rpm_suspend from pm_runtime_work+0x9c/0xa0
  ...

Fix this by enabling op_clk in probe right after getting it, so the clock
state matches the runtime PM active state, and by disabling it in remove.

Fixes: 48279c53fd ("ASoC: samsung: i2s: Prevent external abort on exynos5433 I2S1 access")
Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Link: https://patch.msgid.link/20261002092116.585466-1-m.szyprowski@samsung.com
Signed-off-by: Mark Brown <broonie@kernel.org>
History 2026-10-06 17:24:56 +02:00
..
aries_wm8994.c Char/Misc/IIO/etc driver update for 7.3-rc1 2026-08-25 09:38:50 -07:00
arndale.c ASoC: samsung: arndale: use inclusive language for SND_SOC_DAIFMT_CBx_CFx 2025-03-03 12:59:09 +00:00
bells.c ASoC: samsung: bells: convert to snd_soc_dapm_xxx() 2025-11-17 00:18:07 +00:00
dma.h ASoC: samsung: dmaengine: Convert to SPDX License Indentifier 2019-04-19 16:48:52 +01:00
dmaengine.c ASoC: samsung: dmaengine: Convert to SPDX License Indentifier 2019-04-19 16:48:52 +01:00
i2s-regs.h ASoC: samsung: i2s: add support for FSD I2S 2023-01-17 13:16:04 +00:00
i2s.c ASoC: samsung: i2s: enable op_clk in probe to balance runtime PM 2026-10-06 17:24:56 +02:00
i2s.h ASoC: samsung: i2s: Convert to SPDX License Identifier 2019-04-19 16:49:49 +01:00
idma.c ASoC: samsung: idma: Use guard() for spin locks 2026-04-27 08:28:17 +09:00
idma.h ASoC: samsung: idma: Convert to SPDX License Identifier 2019-04-19 16:50:17 +01:00
Kconfig ASoC: samsung: Standardize ASoC menu 2025-06-24 01:01:37 +01:00
littlemill.c ASoC: samsung: littlemill: convert to snd_soc_dapm_xxx() 2025-11-17 00:18:08 +00:00
lowland.c ASoC: samsung: lowland: convert to snd_soc_dapm_xxx() 2025-11-17 00:18:09 +00:00
Makefile ASoC: samsung: Use *-y instead of *-objs in Makefile 2024-05-08 11:39:28 +09:00
midas_wm1811.c iio: inkern: Use namespaced exports 2026-07-05 01:37:19 +01:00
odroid.c ASoC: samsung: odroid: Use guard() for spin locks 2026-04-27 08:28:18 +09:00
pcm.c ASoC: samsung: pcm: Use guard() for spin locks 2026-04-27 08:28:18 +09:00
pcm.h ASoC: samsung: pcm: Convert to SPDX License Identifier 2019-04-19 16:53:12 +01:00
smdk_spdif.c ASoC: remove conditional return with no effect 2026-07-27 13:23:49 +01:00
smdk_wm8994.c ASoC: samsung: smdk_wm8994: convert to snd_soc_dapm_xxx() 2025-11-17 00:18:11 +00:00
smdk_wm8994pcm.c ASoC: samsung: smdk_wm8994pcm: use inclusive language for SND_SOC_DAIFMT_CBx_CFx 2025-03-03 12:59:17 +00:00
snow.c ASoC: samsung: snow: use inclusive language for SND_SOC_DAIFMT_CBx_CFx 2025-03-03 12:59:06 +00:00
spdif.c ASoC: samsung: spdif: Preserve the original clock acquisition error 2026-07-02 20:00:36 +01:00
spdif.h ASoC: samsung: spdif: Convert to SPDX License Identifier 2019-04-19 16:58:21 +01:00
speyside.c ASoC: samsung: speyside: convert to snd_soc_dapm_xxx() 2025-11-17 00:18:12 +00:00
tm2_wm5110.c ASoC: samsung: tm2_wm5110: convert to snd_soc_dapm_xxx() 2025-11-17 00:18:13 +00:00
tobermory.c ASoC: samsung: tobermory: convert to snd_soc_dapm_xxx() 2025-11-17 00:18:14 +00:00