2010/6/28 Troy Kisky <troy.kisky@xxxxxxxxxxxxxxxxxxx> > 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 _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel