mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 12:43:29 +02:00
ASoC: qcom: lpass-cpu: Remove bit clock state check
No need of BCLK state maintenance from driver side as
clock_enable and clk_disable API's maintaing state counter.
One of the major issue was spotted when Headset jack inserted
while playback continues, due to same PCM device node opens twice
for playaback/capture and closes once for capture and playback continues.
It can resolve the errors in such scenarios.
Fixes: b182496822
("ASoC: qcom: Fix enabling BCLK and LRCLK in LPAIF invalid state")
Signed-off-by: Srinivasa Rao Mandadapu <srivasam@codeaurora.org>
Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20210127151824.8929-1-srivasam@codeaurora.org
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
committed by
Mark Brown
parent
ded055eea6
commit
6c28377b71
@@ -286,16 +286,12 @@ static int lpass_cpu_daiops_trigger(struct snd_pcm_substream *substream,
|
||||
dev_err(dai->dev, "error writing to i2sctl reg: %d\n",
|
||||
ret);
|
||||
|
||||
if (drvdata->bit_clk_state[id] == LPAIF_BIT_CLK_DISABLE) {
|
||||
ret = clk_enable(drvdata->mi2s_bit_clk[id]);
|
||||
if (ret) {
|
||||
dev_err(dai->dev, "error in enabling mi2s bit clk: %d\n", ret);
|
||||
clk_disable(drvdata->mi2s_osr_clk[id]);
|
||||
return ret;
|
||||
}
|
||||
drvdata->bit_clk_state[id] = LPAIF_BIT_CLK_ENABLE;
|
||||
ret = clk_enable(drvdata->mi2s_bit_clk[id]);
|
||||
if (ret) {
|
||||
dev_err(dai->dev, "error in enabling mi2s bit clk: %d\n", ret);
|
||||
clk_disable(drvdata->mi2s_osr_clk[id]);
|
||||
return ret;
|
||||
}
|
||||
|
||||
break;
|
||||
case SNDRV_PCM_TRIGGER_STOP:
|
||||
case SNDRV_PCM_TRIGGER_SUSPEND:
|
||||
@@ -310,10 +306,9 @@ static int lpass_cpu_daiops_trigger(struct snd_pcm_substream *substream,
|
||||
if (ret)
|
||||
dev_err(dai->dev, "error writing to i2sctl reg: %d\n",
|
||||
ret);
|
||||
if (drvdata->bit_clk_state[id] == LPAIF_BIT_CLK_ENABLE) {
|
||||
clk_disable(drvdata->mi2s_bit_clk[dai->driver->id]);
|
||||
drvdata->bit_clk_state[id] = LPAIF_BIT_CLK_DISABLE;
|
||||
}
|
||||
|
||||
clk_disable(drvdata->mi2s_bit_clk[dai->driver->id]);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -866,7 +861,6 @@ int asoc_qcom_lpass_cpu_platform_probe(struct platform_device *pdev)
|
||||
PTR_ERR(drvdata->mi2s_bit_clk[dai_id]));
|
||||
return PTR_ERR(drvdata->mi2s_bit_clk[dai_id]);
|
||||
}
|
||||
drvdata->bit_clk_state[dai_id] = LPAIF_BIT_CLK_DISABLE;
|
||||
}
|
||||
|
||||
/* Allocation for i2sctl regmap fields */
|
||||
|
Reference in New Issue
Block a user