MLK-16929-1: ASoC: fsl_sai: add bitclk_freq
authorShengjiu Wang <shengjiu.wang@nxp.com>
Thu, 23 Nov 2017 05:32:13 +0000 (13:32 +0800)
committerNitin Garg <nitin.garg@nxp.com>
Tue, 20 Mar 2018 19:50:02 +0000 (14:50 -0500)
Allow set SAI bit clock frequency trough snd_soc_dai_set_sysclk
function call on machine sound drivers.

Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Signed-off-by: Adrian Alonso <adrian.alonso@nxp.com>
sound/soc/fsl/fsl_sai.c
sound/soc/fsl/fsl_sai.h

index e3f42bc..d93b6a0 100644 (file)
@@ -239,11 +239,14 @@ static int fsl_sai_set_dai_sysclk_tr(struct snd_soc_dai *cpu_dai,
 static int fsl_sai_set_dai_sysclk(struct snd_soc_dai *cpu_dai,
                int clk_id, unsigned int freq, int dir)
 {
+       struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai);
        int ret;
 
        if (dir == SND_SOC_CLOCK_IN)
                return 0;
 
+       sai->bitclk_freq = freq;
+
        ret = fsl_sai_set_dai_sysclk_tr(cpu_dai, clk_id, freq,
                                        FSL_FMT_TRANSMITTER);
        if (ret) {
@@ -503,7 +506,11 @@ static int fsl_sai_hw_params(struct snd_pcm_substream *substream,
                slot_width = sai->slot_width;
 
        if (!sai->slave_mode[tx]) {
-               ret = fsl_sai_set_bclk(cpu_dai, tx,
+               if (sai->bitclk_freq)
+                       ret = fsl_sai_set_bclk(cpu_dai, tx,
+                                       sai->bitclk_freq);
+               else
+                       ret = fsl_sai_set_bclk(cpu_dai, tx,
                                slots * slot_width * params_rate(params));
                if (ret)
                        return ret;
index dabcee0..6f55677 100644 (file)
@@ -186,6 +186,7 @@ struct fsl_sai {
        unsigned int mclk_streams;
        unsigned int slots;
        unsigned int slot_width;
+       unsigned int bitclk_freq;
 
        struct snd_dmaengine_dai_dma_data dma_params_rx;
        struct snd_dmaengine_dai_dma_data dma_params_tx;