Hi Dmitry, Sorry for late to reply you and thanks for your command Yes, I also agree, it looks great than my original code. So, should I modify this and upstream v3 patch for you? thank you, duson Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx> 於 2014/7/25 上午2:05 寫道: > Hi, > > On Tue, Jan 07, 2014 at 11:08:03AM +0800, Duson Lin wrote: >> +/* >> + ****************************************************************** >> + * General functions >> + ****************************************************************** >> + */ >> +/* >> + * (value from firmware) * 10 + 790 = dpi >> + * we also have to convert dpi to dots/mm (*10/254 to avoid floating point) >> + */ >> +static unsigned int elan_convert_res(char val) >> +{ >> + int res; >> + if (val & 0x80) { >> + val = ~val + 1; >> + res = (790 - val * 10) * 10 / 254; >> + } else >> + res = (val * 10 + 790) * 10 / 254; >> + return res; >> +} > > Why isn't this simply: > > res = ((int)val * 10 + 790) * 10 / 254; > > ? > > If high bit is 1 you basically do the 2 complement by hand to get to > positive and then subtract. Which shoudl be the same as adding positive > value. > > Thanks. > > -- > Dmitry > -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html