From: Benjamin Tissoires Date: Wed, 14 Nov 2012 15:59:14 +0000 (+0100) Subject: HID: round return value of hidinput_calc_abs_res X-Git-Tag: next-20121205~99^2~11^2~11 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=ccdd699411b77c463022ebac311eb4a06ca56db4;p=karo-tx-linux.git HID: round return value of hidinput_calc_abs_res hidinput_calc_abs_res should return the closest int in the division instead of the floor. On a device with a logical_max of 3008 and a physical_max of 255mm, previous implementation gave a resolution of 11 instead of 12. With 11, user-space computes a physical size of 273.5mm and the round_closest results gives 250.6mm. The old implementation introduced an error of 2cm in this example. Signed-off-by: Benjamin Tissoires Acked-by: Jiri Kosina Signed-off-by: Jiri Kosina --- diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c index d1ec571bdb3b..1b0adc3f7803 100644 --- a/drivers/hid/hid-input.c +++ b/drivers/hid/hid-input.c @@ -287,7 +287,7 @@ __s32 hidinput_calc_abs_res(const struct hid_field *field, __u16 code) } /* Calculate resolution */ - return logical_extents / physical_extents; + return DIV_ROUND_CLOSEST(logical_extents, physical_extents); } EXPORT_SYMBOL_GPL(hidinput_calc_abs_res);