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