u8 slots = mcasp->tdm_slots;
        u8 active_serializers;
        int channels;
+       int ret;
        struct snd_interval *pcm_channels = hw_param_interval(params,
                                        SNDRV_PCM_HW_PARAM_CHANNELS);
 +
 +      /* If mcasp is BCLK master we need to set BCLK divider */
 +      if (mcasp->bclk_master) {
 +              unsigned int bclk_freq = snd_soc_params_to_bclk(params);
 +              if (mcasp->sysclk_freq % bclk_freq != 0) {
 +                      dev_err(mcasp->dev, "Can't produce requred BCLK\n");
 +                      return -EINVAL;
 +              }
 +              davinci_mcasp_set_clkdiv(
 +                      cpu_dai, 1, mcasp->sysclk_freq / bclk_freq);
 +      }
 +
        channels = pcm_channels->min;
  
        active_serializers = (channels + slots - 1) / slots;