|
|
@@ -100,11 +100,6 @@ static int fsl_sai_set_dai_sysclk(struct snd_soc_dai *cpu_dai,
|
|
|
if (ret)
|
|
|
return ret;
|
|
|
|
|
|
- sai_writel(sai, 0x0, sai->base + FSL_SAI_RCSR);
|
|
|
- sai_writel(sai, 0x0, sai->base + FSL_SAI_TCSR);
|
|
|
- sai_writel(sai, FSL_SAI_MAXBURST_TX * 2, sai->base + FSL_SAI_TCR1);
|
|
|
- sai_writel(sai, FSL_SAI_MAXBURST_RX - 1, sai->base + FSL_SAI_RCR1);
|
|
|
-
|
|
|
ret = fsl_sai_set_dai_sysclk_tr(cpu_dai, clk_id, freq,
|
|
|
FSL_FMT_TRANSMITTER);
|
|
|
if (ret) {
|
|
|
@@ -351,6 +346,18 @@ static const struct snd_soc_dai_ops fsl_sai_pcm_dai_ops = {
|
|
|
static int fsl_sai_dai_probe(struct snd_soc_dai *cpu_dai)
|
|
|
{
|
|
|
struct fsl_sai *sai = dev_get_drvdata(cpu_dai->dev);
|
|
|
+ int ret;
|
|
|
+
|
|
|
+ ret = clk_prepare_enable(sai->clk);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
+
|
|
|
+ sai_writel(sai, 0x0, sai->base + FSL_SAI_RCSR);
|
|
|
+ sai_writel(sai, 0x0, sai->base + FSL_SAI_TCSR);
|
|
|
+ sai_writel(sai, FSL_SAI_MAXBURST_TX * 2, sai->base + FSL_SAI_TCR1);
|
|
|
+ sai_writel(sai, FSL_SAI_MAXBURST_RX - 1, sai->base + FSL_SAI_RCR1);
|
|
|
+
|
|
|
+ clk_disable_unprepare(sai->clk);
|
|
|
|
|
|
snd_soc_dai_init_dma_data(cpu_dai, &sai->dma_params_tx,
|
|
|
&sai->dma_params_rx);
|