]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/commitdiff
HID: wacom: Add fuzz factor to distance and tilt axes
authorJason Gerecke <killertofu@gmail.com>
Fri, 22 Apr 2016 21:30:53 +0000 (14:30 -0700)
committerJiri Kosina <jkosina@suse.cz>
Tue, 3 May 2016 09:55:05 +0000 (11:55 +0200)
The fuzz present on the distance and tilt axes is noticable when a puck is
present, and userspace (specifically libinput) would like the ability to
filter out the noise. To facilitate this, we assign a fuzz value of '1'
for the distance and tilt axes. This is large enough to cover most of the
natural variation in distance value as the puck is moved around, and
enough to cover the jitter in rotation (reported through tilt axes) when
the puck is left alone.

Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/wacom_sys.c
drivers/hid/wacom_wac.c
drivers/hid/wacom_wac.h

index ccf1883318c37ff401c08a147d365ab2fbb0d5df..499cc8213cfe1627b95364f7143bd6f98e064eee 100644 (file)
@@ -493,7 +493,8 @@ static void wacom_retrieve_hid_descriptor(struct hid_device *hdev,
        features->x_fuzz = 4;
        features->y_fuzz = 4;
        features->pressure_fuzz = 0;
-       features->distance_fuzz = 0;
+       features->distance_fuzz = 1;
+       features->tilt_fuzz = 1;
 
        /*
         * The wireless device HID is basic and layout conflicts with
index 02c4efea241c02eb6270d19b40cc90256b04721a..ea949cb2ec1ea59264b9b9e4420d486e0043bab3 100644 (file)
@@ -2343,12 +2343,13 @@ static void wacom_setup_basic_pro_pen(struct wacom_wac *wacom_wac)
        __set_bit(BTN_STYLUS2, input_dev->keybit);
 
        input_set_abs_params(input_dev, ABS_DISTANCE,
-                            0, wacom_wac->features.distance_max, 0, 0);
+                            0, wacom_wac->features.distance_max, wacom_wac->features.distance_fuzz, 0);
 }
 
 static void wacom_setup_cintiq(struct wacom_wac *wacom_wac)
 {
        struct input_dev *input_dev = wacom_wac->pen_input;
+       struct wacom_features *features = &wacom_wac->features;
 
        wacom_setup_basic_pro_pen(wacom_wac);
 
@@ -2358,9 +2359,9 @@ static void wacom_setup_cintiq(struct wacom_wac *wacom_wac)
        __set_bit(BTN_TOOL_AIRBRUSH, input_dev->keybit);
 
        input_set_abs_params(input_dev, ABS_WHEEL, 0, 1023, 0, 0);
-       input_set_abs_params(input_dev, ABS_TILT_X, -64, 63, 0, 0);
+       input_set_abs_params(input_dev, ABS_TILT_X, -64, 63, features->tilt_fuzz, 0);
        input_abs_set_res(input_dev, ABS_TILT_X, 57);
-       input_set_abs_params(input_dev, ABS_TILT_Y, -64, 63, 0, 0);
+       input_set_abs_params(input_dev, ABS_TILT_Y, -64, 63, features->tilt_fuzz, 0);
        input_abs_set_res(input_dev, ABS_TILT_Y, 57);
 }
 
@@ -2506,7 +2507,7 @@ int wacom_setup_pen_input_capabilities(struct input_dev *input_dev,
        case WACOM_G4:
                input_set_abs_params(input_dev, ABS_DISTANCE, 0,
                                              features->distance_max,
-                                             0, 0);
+                                             features->distance_fuzz, 0);
                /* fall through */
 
        case GRAPHIRE:
@@ -2568,7 +2569,7 @@ int wacom_setup_pen_input_capabilities(struct input_dev *input_dev,
 
                input_set_abs_params(input_dev, ABS_DISTANCE, 0,
                                      features->distance_max,
-                                     0, 0);
+                                     features->distance_fuzz, 0);
 
                input_set_abs_params(input_dev, ABS_Z, -900, 899, 0, 0);
                input_abs_set_res(input_dev, ABS_Z, 287);
@@ -2627,7 +2628,7 @@ int wacom_setup_pen_input_capabilities(struct input_dev *input_dev,
                        __set_bit(BTN_STYLUS2, input_dev->keybit);
                        input_set_abs_params(input_dev, ABS_DISTANCE, 0,
                                      features->distance_max,
-                                     0, 0);
+                                     features->distance_fuzz, 0);
                }
                break;
        case BAMBOO_PAD:
index e2084d914c14aa3902b42e2cb852517c31327256..53d16537fd2a101feebf1392a0f51b6abd75a741 100644 (file)
@@ -177,6 +177,7 @@ struct wacom_features {
        int y_fuzz;
        int pressure_fuzz;
        int distance_fuzz;
+       int tilt_fuzz;
        unsigned quirks;
        unsigned touch_max;
        int oVid;