ASoC: rockchip: pdm: fix regmap_ops hang issue
authorSugar Zhang <sugar.zhang@rock-chips.com>
Wed, 3 Apr 2019 13:40:45 +0000 (21:40 +0800)
committerMark Brown <broonie@kernel.org>
Thu, 4 Apr 2019 07:59:33 +0000 (14:59 +0700)
This is because set_fmt ops maybe called when PD is off,
and in such case, regmap_ops will lead system hang.
enale PD before doing regmap_ops.

Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/rockchip/rockchip_pdm.c

index 400e29e..8a2e3bb 100644 (file)
@@ -208,7 +208,9 @@ static int rockchip_pdm_set_fmt(struct snd_soc_dai *cpu_dai,
                return -EINVAL;
        }
 
+       pm_runtime_get_sync(cpu_dai->dev);
        regmap_update_bits(pdm->regmap, PDM_CLK_CTRL, mask, val);
+       pm_runtime_put(cpu_dai->dev);
 
        return 0;
 }