|
@@ -1778,6 +1778,9 @@ static unsigned int input_estimate_events_per_packet(struct input_dev *dev)
|
|
|
if (test_bit(i, dev->relbit))
|
|
|
events++;
|
|
|
|
|
|
+ /* Make room for KEY and MSC events */
|
|
|
+ events += 7;
|
|
|
+
|
|
|
return events;
|
|
|
}
|
|
|
|
|
@@ -1816,6 +1819,7 @@ int input_register_device(struct input_dev *dev)
|
|
|
{
|
|
|
static atomic_t input_no = ATOMIC_INIT(0);
|
|
|
struct input_handler *handler;
|
|
|
+ unsigned int packet_size;
|
|
|
const char *path;
|
|
|
int error;
|
|
|
|
|
@@ -1828,9 +1832,9 @@ int input_register_device(struct input_dev *dev)
|
|
|
/* Make sure that bitmasks not mentioned in dev->evbit are clean. */
|
|
|
input_cleanse_bitmasks(dev);
|
|
|
|
|
|
- if (!dev->hint_events_per_packet)
|
|
|
- dev->hint_events_per_packet =
|
|
|
- input_estimate_events_per_packet(dev);
|
|
|
+ packet_size = input_estimate_events_per_packet(dev);
|
|
|
+ if (dev->hint_events_per_packet < packet_size)
|
|
|
+ dev->hint_events_per_packet = packet_size;
|
|
|
|
|
|
/*
|
|
|
* If delay and period are pre-set by the driver, then autorepeating
|