Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
Pull input layer updates from Dmitry Torokhov: - evdev interface has been adjusted to extend the life of timestamps on 32 bit systems to the year of 2108 - Synaptics RMI4 driver's PS/2 guest handling ha beed updated to improve chances of detecting trackpoints on the pass-through port - mms114 touchcsreen controller driver has been updated to support generic device properties and work with mms152 cntrollers - Goodix driver now supports generic touchscreen properties - couple of drivers for AVR32 architecture are gone as the architecture support has been removed from the kernel - gpio-tilt driver has been removed as there are no mainline users and the driver itself is using legacy APIs and relies on platform data - MODULE_LINECSE/MODULE_VERSION cleanups * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (45 commits) Input: goodix - use generic touchscreen_properties Input: mms114 - fix typo in definition Input: mms114 - use BIT() macro instead of explicit shifting Input: mms114 - replace mdelay with msleep Input: mms114 - add support for mms152 Input: mms114 - drop platform data and use generic APIs Input: mms114 - mark as direct input device Input: mms114 - do not clobber interrupt trigger Input: edt-ft5x06 - fix error handling for factory mode on non-M06 Input: stmfts - set IRQ_NOAUTOEN to the irq flag Input: auo-pixcir-ts - delete an unnecessary return statement Input: auo-pixcir-ts - remove custom log for a failed memory allocation Input: da9052_tsi - remove unused mutex Input: docs - use PROPERTY_ENTRY_U32() directly Input: synaptics-rmi4 - log when we create a guest serio port Input: synaptics-rmi4 - unmask F03 interrupts when port is opened Input: synaptics-rmi4 - do not delete interrupt memory too early Input: ad7877 - use managed resource allocations Input: stmfts,s6sy671 - add SPDX identifier Input: remove atmel-wm97xx touchscreen driver ...
This commit is contained in:
@@ -135,10 +135,7 @@ static void __evdev_flush_queue(struct evdev_client *client, unsigned int type)
|
||||
continue;
|
||||
} else if (head != i) {
|
||||
/* move entry to fill the gap */
|
||||
client->buffer[head].time = ev->time;
|
||||
client->buffer[head].type = ev->type;
|
||||
client->buffer[head].code = ev->code;
|
||||
client->buffer[head].value = ev->value;
|
||||
client->buffer[head] = *ev;
|
||||
}
|
||||
|
||||
num++;
|
||||
@@ -157,6 +154,7 @@ static void __evdev_queue_syn_dropped(struct evdev_client *client)
|
||||
{
|
||||
struct input_event ev;
|
||||
ktime_t time;
|
||||
struct timespec64 ts;
|
||||
|
||||
time = client->clk_type == EV_CLK_REAL ?
|
||||
ktime_get_real() :
|
||||
@@ -164,7 +162,9 @@ static void __evdev_queue_syn_dropped(struct evdev_client *client)
|
||||
ktime_get() :
|
||||
ktime_get_boottime();
|
||||
|
||||
ev.time = ktime_to_timeval(time);
|
||||
ts = ktime_to_timespec64(time);
|
||||
ev.input_event_sec = ts.tv_sec;
|
||||
ev.input_event_usec = ts.tv_nsec / NSEC_PER_USEC;
|
||||
ev.type = EV_SYN;
|
||||
ev.code = SYN_DROPPED;
|
||||
ev.value = 0;
|
||||
@@ -241,7 +241,10 @@ static void __pass_event(struct evdev_client *client,
|
||||
*/
|
||||
client->tail = (client->head - 2) & (client->bufsize - 1);
|
||||
|
||||
client->buffer[client->tail].time = event->time;
|
||||
client->buffer[client->tail].input_event_sec =
|
||||
event->input_event_sec;
|
||||
client->buffer[client->tail].input_event_usec =
|
||||
event->input_event_usec;
|
||||
client->buffer[client->tail].type = EV_SYN;
|
||||
client->buffer[client->tail].code = SYN_DROPPED;
|
||||
client->buffer[client->tail].value = 0;
|
||||
@@ -262,12 +265,15 @@ static void evdev_pass_values(struct evdev_client *client,
|
||||
struct evdev *evdev = client->evdev;
|
||||
const struct input_value *v;
|
||||
struct input_event event;
|
||||
struct timespec64 ts;
|
||||
bool wakeup = false;
|
||||
|
||||
if (client->revoked)
|
||||
return;
|
||||
|
||||
event.time = ktime_to_timeval(ev_time[client->clk_type]);
|
||||
ts = ktime_to_timespec64(ev_time[client->clk_type]);
|
||||
event.input_event_sec = ts.tv_sec;
|
||||
event.input_event_usec = ts.tv_nsec / NSEC_PER_USEC;
|
||||
|
||||
/* Interrupts are disabled, just acquire the lock. */
|
||||
spin_lock(&client->buffer_lock);
|
||||
|
Reference in New Issue
Block a user