Raffaele Recalcati wrote:
> @@ -447,6 +448,24 @@ static int davinci_i2s_hw_params(struct 
> snd_pcm_substream *substream,
>                                               8 - 1);
> +             if (dev->i2s_accurate_clock) {
> +                     clk_div = 256;
> +                     do {
> +                             framesize = (freq / (--clk_div)) /
> +                             params->rate_num *
> +                                     params->rate_den;
> +                     } while (((framesize < 33) || (framesize > 4095)) &&
> +                              (clk_div));
> +                     clk_div--;
> +                     srgr |= DAVINCI_MCBSP_SRGR_FPER(framesize - 1);
> +             } else {
> +                     /* symmetric waveforms */
> +                     clk_div = freq / (mcbsp_word_length * 16) /
> +                               params->rate_num * params->rate_den;
> +                     srgr |= DAVINCI_MCBSP_SRGR_FPER(mcbsp_word_length *
> +                                                     16 - 1);
> +             }
> +
>               /* symmetric waveforms */
>               clk_div = freq / (mcbsp_word_length * 16) /
>                         params->rate_num * params->rate_den;

Can you test to see if this works to replace all the above ?

                unsigned cycles;
                framesize = mcbsp_word_length * 16;
                cycles = (freq / params->rate_num) * params->rate_den;
                clk_div = cycles / framesize;

                if (dev->i2s_accurate_clock) {
                        framesize = cycles / clk_div;
                        if (framesize > 4096))
                                framesize = 4096;
                }
                srgr |= DAVINCI_MCBSP_SRGR_FPER(framesize - 1);



_______________________________________________
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to