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