}
 
 static unsigned long akcodec_get_mclk_rate(struct snd_pcm_substream *substream,
-                                          struct snd_pcm_hw_params *params)
+                                          struct snd_pcm_hw_params *params,
+                                          int slots, int slot_width)
 {
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct imx_card_data *data = snd_soc_card_get_drvdata(rtd->card);
        const struct imx_card_plat_data *plat_data = data->plat_data;
        struct dai_link_data *link_data = &data->link_data[rtd->num];
-       unsigned int width = link_data->slots * link_data->slot_width;
+       unsigned int width = slots * slot_width;
        unsigned int rate = params_rate(params);
        int i;
 
 
        /* Set MCLK freq */
        if (codec_is_akcodec(plat_data->type))
-               mclk_freq = akcodec_get_mclk_rate(substream, params);
+               mclk_freq = akcodec_get_mclk_rate(substream, params, slots, slot_width);
        else
                mclk_freq = params_rate(params) * slots * slot_width;
        /* Use the maximum freq from DSD512 (512*44100 = 22579200) */