Commit 0210bb60 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input

Pull input layer fixes from Dmitry Torokhov:
 "The main change is to fix breakage in Elantech driver introduced by
  the recent commit adding trackpoint reporting to protocol v4.  Now we
  are trusting the hardware to advertise the trackpoint properly and do
  not try to decode the data as trackpoint if firmware told us it is not
  present"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
  Input: xpad - use proper endpoint type
  Input: elantech - trust firmware about trackpoint presence
  Input: synaptics - adjust min/max on Thinkpad E540
parents 3314bf6b a1f9a407
...@@ -1179,9 +1179,19 @@ static int xpad_probe(struct usb_interface *intf, const struct usb_device_id *id ...@@ -1179,9 +1179,19 @@ static int xpad_probe(struct usb_interface *intf, const struct usb_device_id *id
} }
ep_irq_in = &intf->cur_altsetting->endpoint[1].desc; ep_irq_in = &intf->cur_altsetting->endpoint[1].desc;
usb_fill_bulk_urb(xpad->bulk_out, udev, if (usb_endpoint_is_bulk_out(ep_irq_in)) {
usb_sndbulkpipe(udev, ep_irq_in->bEndpointAddress), usb_fill_bulk_urb(xpad->bulk_out, udev,
xpad->bdata, XPAD_PKT_LEN, xpad_bulk_out, xpad); usb_sndbulkpipe(udev,
ep_irq_in->bEndpointAddress),
xpad->bdata, XPAD_PKT_LEN,
xpad_bulk_out, xpad);
} else {
usb_fill_int_urb(xpad->bulk_out, udev,
usb_sndintpipe(udev,
ep_irq_in->bEndpointAddress),
xpad->bdata, XPAD_PKT_LEN,
xpad_bulk_out, xpad, 0);
}
/* /*
* Submit the int URB immediately rather than waiting for open * Submit the int URB immediately rather than waiting for open
......
...@@ -428,14 +428,6 @@ static void elantech_report_trackpoint(struct psmouse *psmouse, ...@@ -428,14 +428,6 @@ static void elantech_report_trackpoint(struct psmouse *psmouse,
int x, y; int x, y;
u32 t; u32 t;
if (dev_WARN_ONCE(&psmouse->ps2dev.serio->dev,
!tp_dev,
psmouse_fmt("Unexpected trackpoint message\n"))) {
if (etd->debug == 1)
elantech_packet_dump(psmouse);
return;
}
t = get_unaligned_le32(&packet[0]); t = get_unaligned_le32(&packet[0]);
switch (t & ~7U) { switch (t & ~7U) {
...@@ -793,7 +785,7 @@ static int elantech_packet_check_v4(struct psmouse *psmouse) ...@@ -793,7 +785,7 @@ static int elantech_packet_check_v4(struct psmouse *psmouse)
unsigned char packet_type = packet[3] & 0x03; unsigned char packet_type = packet[3] & 0x03;
bool sanity_check; bool sanity_check;
if ((packet[3] & 0x0f) == 0x06) if (etd->tp_dev && (packet[3] & 0x0f) == 0x06)
return PACKET_TRACKPOINT; return PACKET_TRACKPOINT;
/* /*
......
...@@ -143,6 +143,10 @@ static const struct min_max_quirk min_max_pnpid_table[] = { ...@@ -143,6 +143,10 @@ static const struct min_max_quirk min_max_pnpid_table[] = {
(const char * const []){"LEN2001", NULL}, (const char * const []){"LEN2001", NULL},
1024, 5022, 2508, 4832 1024, 5022, 2508, 4832
}, },
{
(const char * const []){"LEN2006", NULL},
1264, 5675, 1171, 4688
},
{ } { }
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment