Merge branch 'mkp-fixes' into fixes
[firefly-linux-kernel-4.4.55.git] / drivers / input / input.c
index 5391abd28b2799c6776cf1bc8a398f70ed8382d7..880605959aa6f74a87da70b24f813d2ce428af9f 100644 (file)
@@ -2044,6 +2044,23 @@ static void devm_input_device_unregister(struct device *dev, void *res)
        __input_unregister_device(input);
 }
 
+/**
+ * input_enable_softrepeat - enable software autorepeat
+ * @dev: input device
+ * @delay: repeat delay
+ * @period: repeat period
+ *
+ * Enable software autorepeat on the input device.
+ */
+void input_enable_softrepeat(struct input_dev *dev, int delay, int period)
+{
+       dev->timer.data = (unsigned long) dev;
+       dev->timer.function = input_repeat_key;
+       dev->rep[REP_DELAY] = delay;
+       dev->rep[REP_PERIOD] = period;
+}
+EXPORT_SYMBOL(input_enable_softrepeat);
+
 /**
  * input_register_device - register device with input core
  * @dev: device to be registered
@@ -2108,12 +2125,8 @@ int input_register_device(struct input_dev *dev)
         * If delay and period are pre-set by the driver, then autorepeating
         * is handled by the driver itself and we don't do it in input.c.
         */
-       if (!dev->rep[REP_DELAY] && !dev->rep[REP_PERIOD]) {
-               dev->timer.data = (long) dev;
-               dev->timer.function = input_repeat_key;
-               dev->rep[REP_DELAY] = 250;
-               dev->rep[REP_PERIOD] = 33;
-       }
+       if (!dev->rep[REP_DELAY] && !dev->rep[REP_PERIOD])
+               input_enable_softrepeat(dev, 250, 33);
 
        if (!dev->getkeycode)
                dev->getkeycode = input_default_getkeycode;