|
@@ -2044,6 +2044,23 @@ static void devm_input_device_unregister(struct device *dev, void *res)
|
|
__input_unregister_device(input);
|
|
__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
|
|
* input_register_device - register device with input core
|
|
* @dev: device to be registered
|
|
* @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
|
|
* 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.
|
|
* 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)
|
|
if (!dev->getkeycode)
|
|
dev->getkeycode = input_default_getkeycode;
|
|
dev->getkeycode = input_default_getkeycode;
|