mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 01:55:51 +02:00
ASoC: rockchip: rockchip_pdm: Handle runtime PM resume failures in set_fmt
rockchip_pdm_set_fmt() calls pm_runtime_get_sync() before accessing hardware registers, but ignores its return value. If the runtime resume fails, the function continues to perform register accesses while the device state is undefined. Replace pm_runtime_get_sync() with pm_runtime_resume_and_get() and return early on failure to avoid unpowered register accesses. Reported-by: Sashiko AI Review <sashiko-bot@kernel.org> Closes: https://lore.kernel.org/all/20260522110302.349421F000E9@smtp.kernel.org/ Signed-off-by: bui duc phuc <phucduc.bui@gmail.com> Link: https://patch.msgid.link/20260602101608.45137-6-phucduc.bui@gmail.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
3546e9aa69
commit
ee7b5f7b39
|
|
@ -321,6 +321,7 @@ static int rockchip_pdm_set_fmt(struct snd_soc_dai *cpu_dai,
|
|||
{
|
||||
struct rk_pdm_dev *pdm = to_info(cpu_dai);
|
||||
unsigned int mask = 0, val = 0;
|
||||
int ret;
|
||||
|
||||
mask = PDM_CKP_MSK;
|
||||
switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
|
||||
|
|
@ -334,7 +335,10 @@ static int rockchip_pdm_set_fmt(struct snd_soc_dai *cpu_dai,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
pm_runtime_get_sync(cpu_dai->dev);
|
||||
ret = pm_runtime_resume_and_get(cpu_dai->dev);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
regmap_update_bits(pdm->regmap, PDM_CLK_CTRL, mask, val);
|
||||
pm_runtime_put(cpu_dai->dev);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user