diff --git a/sound/soc/rockchip/rockchip_vad.c b/sound/soc/rockchip/rockchip_vad.c index 3eb45e8df8a5..11852125957e 100644 --- a/sound/soc/rockchip/rockchip_vad.c +++ b/sound/soc/rockchip/rockchip_vad.c @@ -81,6 +81,10 @@ static int rockchip_vad_stop(struct rockchip_vad *vad) struct vad_buf *vbuf = &vad->vbuf; struct vad_params *params = &vad->params; + regmap_read(vad->regmap, VAD_CTRL, &val); + if ((val & VAD_EN_MASK) == VAD_DISABLE) + return 0; + regmap_update_bits(vad->regmap, VAD_CTRL, VAD_EN_MASK, VAD_DISABLE); regmap_read(vad->regmap, VAD_RAM_END_ADDR, &val); vbuf->end = vbuf->begin + (val - vad->memphy) + 0x8;