Possible error in omap16xxcam_set_xclk?

Matt Callow
2006-06-13T15:07:40Z

Hi,

I've been looking at omap/omap16xxcam.c (with a view to creating an
omap1510 equivalent) and have noticed the following:

int divisor = 1;
divisor = data->ocp_clk/xclk;
if ( divisor * xclk < data->ocp_clk)
++divisor;

switch (divisor) {
case 1:
case 2:
xclk_val = FOSCMOD_TC2_CK2;
break;
case 3:
xclk_val = FOSCMOD_TC2_CK3;
break;
case 4:
case 5:
case 6:
case 7:
xclk_val = FOSCMOD_TC2_CK4;
break;
...

Now, by my reckoning, divisor can only be 1 or 2 when it reaches the
case statement. So, should the preceding if statement actually be:

while ( divisor * xclk < data->ocp_clk)
++divisor;

?

regards

Matt Callow