Hi Bernhard: * Bernhard Schrenk <clemy at clemy.org> [2004-02-18 12:38:33 +0100]: > Thanks for your suggestions for improvement. I have incorporated them into > the patch and merged the modifications from the latest CVS driver version. > The new patch is attached to this mail. Nice work. But, there's still this (which is my fault for not being clear earlier): > #define IN_FROM_REG(val) (((val) * 16 + 5) / 10) And then later... > return sprintf(buf,"%ld\n", (long)IN_FROM_REG(data->reg[nr] * 10)); \ The '/10' and '*10' are artifacts of the 2.4 representation. They're not needed here. This is what I mean by keeping the conversions in one place... there's no reason to carry around an intermediate representation which differs by a factor of ten (or whatever). I know... the obvious example (w83781d.c) gets this wrong as well. In the mean time, I'm off to actually load the code and try it. ;) Thanks and regards, -- Mark M. Hoffman mhoffman at lightlink.com