30 Jun
2010
30 Jun
'10
10:52 a.m.
2010/6/28 Troy Kisky troy.kisky@boundarydevices.com
Raffaele Recalcati wrote:
if (dev->i2s_fast_clock) {
clk_div = 256;
can you have f = (freq / params->rate_num) * params->rate_den;
do {
framesize = (freq / (--clk_div)) /
params->rate_num *
params->rate_den;
and framesize = f / (--clk_div);
} while (((framesize < 33) || (framesize > 4095))
&&
(clk_div));
clk_div--;
looks like clk_div can go negative here, should the above while say (clk_div > 1)
} while (((framesize < 33) || (framesize > 4095)) &&
(clk_div));
only if clk_div not null stay inside the while.
clk_div--;
and here can at minumum be 0, not negative.
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);
}
clk_div &= 0xFF;
srgr |= clk_div;
so, dividing for (CLKGDV + 1) it is ok.
Raffaele