]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.10-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 2 Dec 2013 01:58:45 +0000 (17:58 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 2 Dec 2013 01:58:45 +0000 (17:58 -0800)
added patches:
cpufreq-highbank-cpufreq-enable-midway-ecx-2000.patch
hid-don-t-ignore-egalax-d-wav-eeti-hids.patch
input-cypress_ps2-do-not-consider-data-bad-if-palm-is-detected.patch
input-evdev-fall-back-to-vmalloc-for-client-event-buffer.patch
input-i8042-add-pnp-modaliases.patch
input-usbtouchscreen-ignore-egalax-d-wav-eeti-hids.patch

queue-3.10/cpufreq-highbank-cpufreq-enable-midway-ecx-2000.patch [new file with mode: 0644]
queue-3.10/hid-don-t-ignore-egalax-d-wav-eeti-hids.patch [new file with mode: 0644]
queue-3.10/input-cypress_ps2-do-not-consider-data-bad-if-palm-is-detected.patch [new file with mode: 0644]
queue-3.10/input-evdev-fall-back-to-vmalloc-for-client-event-buffer.patch [new file with mode: 0644]
queue-3.10/input-i8042-add-pnp-modaliases.patch [new file with mode: 0644]
queue-3.10/input-usbtouchscreen-ignore-egalax-d-wav-eeti-hids.patch [new file with mode: 0644]
queue-3.10/series

diff --git a/queue-3.10/cpufreq-highbank-cpufreq-enable-midway-ecx-2000.patch b/queue-3.10/cpufreq-highbank-cpufreq-enable-midway-ecx-2000.patch
new file mode 100644 (file)
index 0000000..23eff31
--- /dev/null
@@ -0,0 +1,36 @@
+From fbbc5bfb44a22e7a8ef753a1c8dfb448d7ac8b85 Mon Sep 17 00:00:00 2001
+From: Mark Langsdorf <mark.langsdorf@calxeda.com>
+Date: Tue, 1 Oct 2013 10:30:24 -0500
+Subject: cpufreq: highbank-cpufreq: Enable Midway/ECX-2000
+
+From: Mark Langsdorf <mark.langsdorf@calxeda.com>
+
+commit fbbc5bfb44a22e7a8ef753a1c8dfb448d7ac8b85 upstream.
+
+Calxeda's new ECX-2000 part uses the same cpufreq interface as highbank,
+so add it to the driver's compatibility list.
+
+This is a minor change that can safely be applied to the 3.10 and 3.11
+stable trees.
+
+Signed-off-by: Mark Langsdorf <mark.langsdorf@calxeda.com>
+Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
+Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/cpufreq/highbank-cpufreq.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/cpufreq/highbank-cpufreq.c
++++ b/drivers/cpufreq/highbank-cpufreq.c
+@@ -66,7 +66,8 @@ static int hb_cpufreq_driver_init(void)
+       struct device_node *np;
+       int ret;
+-      if (!of_machine_is_compatible("calxeda,highbank"))
++      if ((!of_machine_is_compatible("calxeda,highbank")) &&
++              (!of_machine_is_compatible("calxeda,ecx-2000")))
+               return -ENODEV;
+       for_each_child_of_node(of_find_node_by_path("/cpus"), np)
diff --git a/queue-3.10/hid-don-t-ignore-egalax-d-wav-eeti-hids.patch b/queue-3.10/hid-don-t-ignore-egalax-d-wav-eeti-hids.patch
new file mode 100644 (file)
index 0000000..f8d4cf1
--- /dev/null
@@ -0,0 +1,77 @@
+From 95d50b6c5e18ff7351c5f2a6ff53afaed5f7e664 Mon Sep 17 00:00:00 2001
+From: Forest Bond <forest.bond@rapidrollout.com>
+Date: Mon, 21 Oct 2013 12:38:02 -0400
+Subject: HID: don't ignore eGalax/D-Wav/EETI HIDs
+
+From: Forest Bond <forest.bond@rapidrollout.com>
+
+commit 95d50b6c5e18ff7351c5f2a6ff53afaed5f7e664 upstream.
+
+Certain devices with class HID, protocol None did not work with the HID
+driver at one point, and as a result were bound to usbtouchscreen
+instead as of commit 139ebe8 ("Input: usbtouchscreen - fix eGalax HID
+ignoring").  This change was prompted by the following report:
+
+https://lkml.org/lkml/2009/1/25/127
+
+Unfortunately, the device mentioned in this report is no longer
+available for testing.
+
+We've recently discovered that some devices with class HID, protocol
+None do not work with usbtouchscreen, but do work with usbhid.  Here is
+the report that made this evident:
+
+http://comments.gmane.org/gmane.linux.kernel.input/31710
+
+Driver binding for these devices has flip-flopped a few times, so both
+of the above reports were regressions.
+
+This situation would appear to leave us with no easy way to bind every
+device to the right driver.  However, in my own testing with several
+devices I have not found a device with class HID that does not work with
+the current HID driver.  It is my belief that changes to the HID driver
+since the original report have likely fixed the issue(s) that made it
+unsuitable at the time, and that we should prefer it over usbtouchscreen
+for these devices.  In particular, HID quirks affecting these devices
+were added/removed in the following commits since then:
+
+fe6065d HID: add multi-input quirk for eGalax Touchcontroller
+77933c3 Merge branch 'egalax' into for-linus
+ebd11fe HID: Add quirk for eGalax touch controler.
+d34c4aa HID: add no-get quirk for eGalax touch controller
+
+This patch makes the HID driver no longer ignore eGalax/D-Wav/EETI
+devices with class HID.  If there are in fact devices with class HID
+that still do not work with the HID driver, we will see another round of
+regressions.  In that case I propose we investigate why the device is
+not working with the HID driver rather than re-introduce regressions for
+functioning HID devices by again binding them to usbtouchscreen.
+
+The corresponding change to usbtouchscreen will be made separately.
+
+Signed-off-by: Forest Bond <forest.bond@rapidrollout.com>
+Signed-off-by: Jiri Kosina <jkosina@suse.cz>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/hid/hid-core.c |    9 ---------
+ 1 file changed, 9 deletions(-)
+
+--- a/drivers/hid/hid-core.c
++++ b/drivers/hid/hid-core.c
+@@ -2317,15 +2317,6 @@ bool hid_ignore(struct hid_device *hdev)
+                               hdev->type == HID_TYPE_USBNONE)
+                       return true;
+               break;
+-      case USB_VENDOR_ID_DWAV:
+-              /* These are handled by usbtouchscreen. hdev->type is probably
+-               * HID_TYPE_USBNONE, but we say !HID_TYPE_USBMOUSE to match
+-               * usbtouchscreen. */
+-              if ((hdev->product == USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER ||
+-                   hdev->product == USB_DEVICE_ID_DWAV_TOUCHCONTROLLER) &&
+-                  hdev->type != HID_TYPE_USBMOUSE)
+-                      return true;
+-              break;
+       case USB_VENDOR_ID_VELLEMAN:
+               /* These are not HID devices.  They are handled by comedi. */
+               if ((hdev->product >= USB_DEVICE_ID_VELLEMAN_K8055_FIRST &&
diff --git a/queue-3.10/input-cypress_ps2-do-not-consider-data-bad-if-palm-is-detected.patch b/queue-3.10/input-cypress_ps2-do-not-consider-data-bad-if-palm-is-detected.patch
new file mode 100644 (file)
index 0000000..a2f7bc7
--- /dev/null
@@ -0,0 +1,79 @@
+From 5df682b297f6b23ec35615ed7bb50cbb25d25869 Mon Sep 17 00:00:00 2001
+From: Joseph Salisbury <joseph.salisbury@canonical.com>
+Date: Wed, 16 Oct 2013 09:19:40 -0700
+Subject: Input: cypress_ps2 - do not consider data bad if palm is detected
+
+From: Joseph Salisbury <joseph.salisbury@canonical.com>
+
+commit 5df682b297f6b23ec35615ed7bb50cbb25d25869 upstream.
+
+If hardware (or firmware) detects palm on the surface of the device it does
+not mean that the data packet is bad from the protocol standpoint. Instead
+of reporting PSMOUSE_BAD_DATA in this case simply threat it as if nothing
+touches the surface.
+
+BugLink: http://bugs.launchpad.net/bugs/1229361
+
+Signed-off-by: Joseph Salisbury <joseph.salisbury@canonical.com>
+Tested-by: Kamal Mostafa <kamal@canonical.com>
+Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/input/mouse/cypress_ps2.c |   19 +++----------------
+ 1 file changed, 3 insertions(+), 16 deletions(-)
+
+--- a/drivers/input/mouse/cypress_ps2.c
++++ b/drivers/input/mouse/cypress_ps2.c
+@@ -439,7 +439,7 @@ static int cypress_get_finger_count(unsi
+                       case 2: return 5;
+                       default:
+                               /* Invalid contact (e.g. palm). Ignore it. */
+-                              return -1;
++                              return 0;
+               }
+       }
+@@ -452,17 +452,10 @@ static int cypress_parse_packet(struct p
+ {
+       unsigned char *packet = psmouse->packet;
+       unsigned char header_byte = packet[0];
+-      int contact_cnt;
+       memset(report_data, 0, sizeof(struct cytp_report_data));
+-      contact_cnt = cypress_get_finger_count(header_byte);
+-
+-      if (contact_cnt < 0) /* e.g. palm detect */
+-              return -EINVAL;
+-
+-      report_data->contact_cnt = contact_cnt;
+-
++      report_data->contact_cnt = cypress_get_finger_count(header_byte);
+       report_data->tap = (header_byte & ABS_MULTIFINGER_TAP) ? 1 : 0;
+       if (report_data->contact_cnt == 1) {
+@@ -535,11 +528,9 @@ static void cypress_process_packet(struc
+       int slots[CYTP_MAX_MT_SLOTS];
+       int n;
+-      if (cypress_parse_packet(psmouse, cytp, &report_data))
+-              return;
++      cypress_parse_packet(psmouse, cytp, &report_data);
+       n = report_data.contact_cnt;
+-
+       if (n > CYTP_MAX_MT_SLOTS)
+               n = CYTP_MAX_MT_SLOTS;
+@@ -605,10 +596,6 @@ static psmouse_ret_t cypress_validate_by
+               return PSMOUSE_BAD_DATA;
+       contact_cnt = cypress_get_finger_count(packet[0]);
+-
+-      if (contact_cnt < 0)
+-              return PSMOUSE_BAD_DATA;
+-
+       if (cytp->mode & CYTP_BIT_ABS_NO_PRESSURE)
+               cypress_set_packet_size(psmouse, contact_cnt == 2 ? 7 : 4);
+       else
diff --git a/queue-3.10/input-evdev-fall-back-to-vmalloc-for-client-event-buffer.patch b/queue-3.10/input-evdev-fall-back-to-vmalloc-for-client-event-buffer.patch
new file mode 100644 (file)
index 0000000..2b8fac9
--- /dev/null
@@ -0,0 +1,69 @@
+From 92eb77d0ffbaa71b501a0a8dabf09a351bf4267f Mon Sep 17 00:00:00 2001
+From: Daniel Stone <daniel@fooishbar.org>
+Date: Thu, 31 Oct 2013 00:25:34 -0700
+Subject: Input: evdev - fall back to vmalloc for client event buffer
+
+From: Daniel Stone <daniel@fooishbar.org>
+
+commit 92eb77d0ffbaa71b501a0a8dabf09a351bf4267f upstream.
+
+evdev always tries to allocate the event buffer for clients using
+kzalloc rather than vmalloc, presumably to avoid mapping overhead where
+possible.  However, drivers like bcm5974, which claims support for
+reporting 16 fingers simultaneously, can have an extraordinarily large
+buffer.  The resultant contiguous order-4 allocation attempt fails due
+to fragmentation, and the device is thus unusable until reboot.
+
+Try kzalloc if we can to avoid the mapping overhead, but if that fails,
+fall back to vzalloc.
+
+Signed-off-by: Daniel Stone <daniels@collabora.com>
+Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/input/evdev.c |   16 ++++++++++++----
+ 1 file changed, 12 insertions(+), 4 deletions(-)
+
+--- a/drivers/input/evdev.c
++++ b/drivers/input/evdev.c
+@@ -18,6 +18,8 @@
+ #include <linux/poll.h>
+ #include <linux/sched.h>
+ #include <linux/slab.h>
++#include <linux/vmalloc.h>
++#include <linux/mm.h>
+ #include <linux/module.h>
+ #include <linux/init.h>
+ #include <linux/input/mt.h>
+@@ -289,7 +291,11 @@ static int evdev_release(struct inode *i
+       mutex_unlock(&evdev->mutex);
+       evdev_detach_client(evdev, client);
+-      kfree(client);
++
++      if (is_vmalloc_addr(client))
++              vfree(client);
++      else
++              kfree(client);
+       evdev_close_device(evdev);
+@@ -309,12 +315,14 @@ static int evdev_open(struct inode *inod
+ {
+       struct evdev *evdev = container_of(inode->i_cdev, struct evdev, cdev);
+       unsigned int bufsize = evdev_compute_buffer_size(evdev->handle.dev);
++      unsigned int size = sizeof(struct evdev_client) +
++                                      bufsize * sizeof(struct input_event);
+       struct evdev_client *client;
+       int error;
+-      client = kzalloc(sizeof(struct evdev_client) +
+-                              bufsize * sizeof(struct input_event),
+-                       GFP_KERNEL);
++      client = kzalloc(size, GFP_KERNEL | __GFP_NOWARN);
++      if (!client)
++              client = vzalloc(size);
+       if (!client)
+               return -ENOMEM;
diff --git a/queue-3.10/input-i8042-add-pnp-modaliases.patch b/queue-3.10/input-i8042-add-pnp-modaliases.patch
new file mode 100644 (file)
index 0000000..087bb98
--- /dev/null
@@ -0,0 +1,40 @@
+From 78551277e4df57864b0b0e7f85c23ede2be2edb8 Mon Sep 17 00:00:00 2001
+From: Tom Gundersen <teg@jklm.no>
+Date: Thu, 31 Oct 2013 00:33:54 -0700
+Subject: Input: i8042 - add PNP modaliases
+
+From: Tom Gundersen <teg@jklm.no>
+
+commit 78551277e4df57864b0b0e7f85c23ede2be2edb8 upstream.
+
+This allows the module to be autoloaded in the common case.
+
+In order to work on non-PnP systems the module should be compiled in or
+loaded unconditionally at boot (c.f. modules-load.d(5)), as before.
+
+Signed-off-by: Tom Gundersen <teg@jklm.no>
+Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/input/serio/i8042-x86ia64io.h |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/input/serio/i8042-x86ia64io.h
++++ b/drivers/input/serio/i8042-x86ia64io.h
+@@ -765,6 +765,7 @@ static struct pnp_device_id pnp_kbd_devi
+       { .id = "CPQA0D7", .driver_data = 0 },
+       { .id = "", },
+ };
++MODULE_DEVICE_TABLE(pnp, pnp_kbd_devids);
+ static struct pnp_driver i8042_pnp_kbd_driver = {
+       .name           = "i8042 kbd",
+@@ -786,6 +787,7 @@ static struct pnp_device_id pnp_aux_devi
+       { .id = "SYN0801", .driver_data = 0 },
+       { .id = "", },
+ };
++MODULE_DEVICE_TABLE(pnp, pnp_aux_devids);
+ static struct pnp_driver i8042_pnp_aux_driver = {
+       .name           = "i8042 aux",
diff --git a/queue-3.10/input-usbtouchscreen-ignore-egalax-d-wav-eeti-hids.patch b/queue-3.10/input-usbtouchscreen-ignore-egalax-d-wav-eeti-hids.patch
new file mode 100644 (file)
index 0000000..0912c47
--- /dev/null
@@ -0,0 +1,37 @@
+From ae2aa3a512fa5f50f67feba9e66bc2efb394bd63 Mon Sep 17 00:00:00 2001
+From: Forest Bond <forest.bond@rapidrollout.com>
+Date: Mon, 21 Oct 2013 12:38:18 -0400
+Subject: Input: usbtouchscreen: ignore eGalax/D-Wav/EETI HIDs
+
+From: Forest Bond <forest.bond@rapidrollout.com>
+
+commit ae2aa3a512fa5f50f67feba9e66bc2efb394bd63 upstream.
+
+The HID driver now handles these devices, regardless of what protocol
+the device claims it supports.
+
+Signed-off-by: Forest Bond <forest.bond@rapidrollout.com>
+Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
+Signed-off-by: Jiri Kosina <jkosina@suse.cz>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/input/touchscreen/usbtouchscreen.c |    4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+--- a/drivers/input/touchscreen/usbtouchscreen.c
++++ b/drivers/input/touchscreen/usbtouchscreen.c
+@@ -146,12 +146,10 @@ enum {
+ #define USB_DEVICE_HID_CLASS(vend, prod) \
+       .match_flags = USB_DEVICE_ID_MATCH_INT_CLASS \
+-              | USB_DEVICE_ID_MATCH_INT_PROTOCOL \
+               | USB_DEVICE_ID_MATCH_DEVICE, \
+       .idVendor = (vend), \
+       .idProduct = (prod), \
+-      .bInterfaceClass = USB_INTERFACE_CLASS_HID, \
+-      .bInterfaceProtocol = USB_INTERFACE_PROTOCOL_MOUSE
++      .bInterfaceClass = USB_INTERFACE_CLASS_HID
+ static const struct usb_device_id usbtouch_devices[] = {
+ #ifdef CONFIG_TOUCHSCREEN_USB_EGALAX
index 31352d0c0e6231f2d39d819b4634967078019524..9e3253286dab89a35ed73122b15fab677d9514f8 100644 (file)
@@ -116,3 +116,9 @@ alsa-hda-create-headhpone-mic-jack-mode-when-really-needed.patch
 alsa-hda-initialize-missing-bass-speaker-pin-for-asus-aio-et2700.patch
 alsa-hda-check-leaf-nodes-to-find-aamix-amps.patch
 tracing-allow-events-to-have-null-strings.patch
+input-evdev-fall-back-to-vmalloc-for-client-event-buffer.patch
+input-cypress_ps2-do-not-consider-data-bad-if-palm-is-detected.patch
+input-i8042-add-pnp-modaliases.patch
+hid-don-t-ignore-egalax-d-wav-eeti-hids.patch
+input-usbtouchscreen-ignore-egalax-d-wav-eeti-hids.patch
+cpufreq-highbank-cpufreq-enable-midway-ecx-2000.patch