OSDN Git Service

Input: of_touchscreen - fix setting max values on X/Y axis
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Mon, 6 Jul 2015 21:57:54 +0000 (14:57 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Sun, 12 Jul 2015 00:26:37 +0000 (17:26 -0700)
The binding specification says that "touchscreen-size-x" and "-y" specify
horizontal and vertical resolution of the touchscreen and therefore maximum
absolute coordinates should be reduced by 1 since we are starting with 0.

Reviewed-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/touchscreen/of_touchscreen.c

index 759cf4b..50bc0f2 100644 (file)
@@ -71,23 +71,25 @@ void touchscreen_parse_of_params(struct input_dev *dev, bool multitouch)
 
        axis = multitouch ? ABS_MT_POSITION_X : ABS_X;
        data_present = touchscreen_get_prop_u32(np, "touchscreen-size-x",
-                                               input_abs_get_max(dev, axis),
+                                               input_abs_get_max(dev,
+                                                                 axis) + 1,
                                                &maximum) |
                       touchscreen_get_prop_u32(np, "touchscreen-fuzz-x",
                                                input_abs_get_fuzz(dev, axis),
                                                &fuzz);
        if (data_present)
-               touchscreen_set_params(dev, axis, maximum, fuzz);
+               touchscreen_set_params(dev, axis, maximum - 1, fuzz);
 
        axis = multitouch ? ABS_MT_POSITION_Y : ABS_Y;
        data_present = touchscreen_get_prop_u32(np, "touchscreen-size-y",
-                                               input_abs_get_max(dev, axis),
+                                               input_abs_get_max(dev,
+                                                                 axis) + 1,
                                                &maximum) |
                       touchscreen_get_prop_u32(np, "touchscreen-fuzz-y",
                                                input_abs_get_fuzz(dev, axis),
                                                &fuzz);
        if (data_present)
-               touchscreen_set_params(dev, axis, maximum, fuzz);
+               touchscreen_set_params(dev, axis, maximum - 1, fuzz);
 
        axis = multitouch ? ABS_MT_PRESSURE : ABS_PRESSURE;
        data_present = touchscreen_get_prop_u32(np, "touchscreen-max-pressure",