Merge tag 'v3.10.107' into update
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / input / joydev.c
index f362883c94e37ce828d18938b7d25790135cf2d1..3736c1759524abd454fb3ace22050dfebc5134af 100644 (file)
@@ -188,6 +188,17 @@ static void joydev_detach_client(struct joydev *joydev,
        synchronize_rcu();
 }
 
+static void joydev_refresh_state(struct joydev *joydev)
+{
+       struct input_dev *dev = joydev->handle.dev;
+       int i, val;
+
+       for (i = 0; i < joydev->nabs; i++) {
+               val = input_abs_get_val(dev, joydev->abspam[i]);
+               joydev->abs[i] = joydev_correct(val, &joydev->corr[i]);
+       }
+}
+
 static int joydev_open_device(struct joydev *joydev)
 {
        int retval;
@@ -202,6 +213,8 @@ static int joydev_open_device(struct joydev *joydev)
                retval = input_open_device(&joydev->handle);
                if (retval)
                        joydev->open--;
+               else
+                       joydev_refresh_state(joydev);
        }
 
        mutex_unlock(&joydev->mutex);
@@ -823,7 +836,6 @@ static int joydev_connect(struct input_handler *handler, struct input_dev *dev,
                j = joydev->abspam[i];
                if (input_abs_get_max(dev, j) == input_abs_get_min(dev, j)) {
                        joydev->corr[i].type = JS_CORR_NONE;
-                       joydev->abs[i] = input_abs_get_val(dev, j);
                        continue;
                }
                joydev->corr[i].type = JS_CORR_BROKEN;
@@ -838,10 +850,6 @@ static int joydev_connect(struct input_handler *handler, struct input_dev *dev,
                if (t) {
                        joydev->corr[i].coef[2] = (1 << 29) / t;
                        joydev->corr[i].coef[3] = (1 << 29) / t;
-
-                       joydev->abs[i] =
-                               joydev_correct(input_abs_get_val(dev, j),
-                                              joydev->corr + i);
                }
        }