diff -urN wt8-5k-6/CREDITS wt8/CREDITS --- wt8-5k-6/CREDITS Sat Feb 16 18:50:33 2002 +++ wt8/CREDITS Sat Feb 16 19:14:56 2002 @@ -1658,6 +1658,13 @@ S: San Antonio, Texas 78269-1886 S: USA +N: Denis O. Kropp +E: dok@directfb.org +D: NeoMagic framebuffer driver +S: Badensche Str. 46 +S: 10715 Berlin +S: Germany + N: Andrzej M. Krzysztofowicz E: ankry@mif.pg.gda.pl D: Some 8-bit XT disk driver and devfs hacking diff -urN wt8-5k-6/drivers/video/neofb.c wt8/drivers/video/neofb.c --- wt8-5k-6/drivers/video/neofb.c Sat Feb 16 18:50:41 2002 +++ wt8/drivers/video/neofb.c Sat Feb 16 19:15:50 2002 @@ -12,9 +12,15 @@ * archive for more details. * * + * 0.3.2 + * - got rid of all floating point (dok) + * + * 0.3.1 + * - added module license (dok) + * * 0.3 - * - hardware accelerated clear and move for 2200 and above - * - maximum allowed dotclock is handled now + * - hardware accelerated clear and move for 2200 and above (dok) + * - maximum allowed dotclock is handled now (dok) * * 0.2.1 * - correct panning after X usage (dok) @@ -29,10 +35,10 @@ * - ioctl for internal/external switching * - blanking * - 32bit depth support, maybe impossible - * - disable automatic pan on sync, need specs + * - disable pan-on-sync, need specs * * BUGS - * - white margin on bootup (colormap problem?) + * - white margin on bootup like with tdfxfb (colormap problem?) * */ @@ -68,7 +74,7 @@ #include "neofb.h" -#define NEOFB_VERSION "0.3" +#define NEOFB_VERSION "0.3.2" /* --------------------------------------------------------------------- */ @@ -81,7 +87,8 @@ #ifdef MODULE -MODULE_AUTHOR("(c) 2001 Denis Oliver Kropp "); +MODULE_AUTHOR("(c) 2001-2002 Denis Oliver Kropp "); +MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("FBDev driver for NeoMagic PCI Chips"); MODULE_PARM(disabled, "i"); MODULE_PARM_DESC(disabled, "Disable this driver's initialization."); @@ -866,7 +873,7 @@ * * Determine the closest clock frequency to the one requested. */ -#define REF_FREQ 14.31818 +#define REF_FREQ 0xe517 /* 14.31818 in 20.12 fixed point */ #define MAX_N 127 #define MAX_D 31 #define MAX_F 1 @@ -874,17 +881,18 @@ static void neoCalcVCLK (const struct neofb_info *info, struct neofb_par *par, long freq) { int n, d, f; - double f_out; - double f_diff; int n_best = 0, d_best = 0, f_best = 0; - double f_best_diff = 999999.0; - double f_target = freq/1000.0; + long f_best_diff = (0x7ffff << 12); /* 20.12 */ + long f_target = (freq << 12) / 1000; /* 20.12 */ for (f = 0; f <= MAX_F; f++) for (n = 0; n <= MAX_N; n++) for (d = 0; d <= MAX_D; d++) { - f_out = (n+1.0)/((d+1.0)*(1<> 12) * REF_FREQ; f_diff = abs(f_out-f_target); if (f_diff < f_best_diff) { @@ -911,12 +919,12 @@ par->VCLK3Denominator = d_best; #ifdef NEOFB_DEBUG - printk ("neoVCLK: f:%f NumLow=%d NumHi=%d Den=%d Df=%f\n", - f_target, + printk ("neoVCLK: f:%d NumLow=%d NumHi=%d Den=%d Df=%d\n", + f_target >> 12, par->VCLK3NumeratorLow, par->VCLK3NumeratorHigh, par->VCLK3Denominator, - f_best_diff); + f_best_diff >> 12); #endif }