Linux v3.13.8
This commit is contained in:
parent
9a7df3187f
commit
924a3cf38b
|
@ -1,56 +0,0 @@
|
|||
Bugzilla: 1046238
|
||||
Upstream-status: Queued for 3.14
|
||||
|
||||
From 1d0d6df02750b4a6f466768cbfbf860e24f4c8d4 Mon Sep 17 00:00:00 2001
|
||||
From: Ping Cheng <pinglinux@gmail.com>
|
||||
Date: Mon, 25 Nov 2013 18:43:45 -0800
|
||||
Subject: [PATCH] Input: wacom - make sure touch_max is set for touch devices
|
||||
|
||||
Old single touch Tablet PCs do not have touch_max set at
|
||||
wacom_features. Since touch device at lease supports one
|
||||
finger, assign touch_max to 1 when touch usage is defined
|
||||
in its HID Descriptor and touch_max is not pre-defined.
|
||||
|
||||
Tested-by: Jason Gerecke <killertofu@gmail.com>
|
||||
Signed-off-by: Ping Cheng <pingc@wacom.com>
|
||||
Reviewed-by: Chris Bagwell <chris@cnpbagwell.com>
|
||||
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
|
||||
---
|
||||
drivers/input/tablet/wacom_sys.c | 7 +++++--
|
||||
1 file changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c
|
||||
index 8a90da1..3d71b60 100644
|
||||
--- a/drivers/input/tablet/wacom_sys.c
|
||||
+++ b/drivers/input/tablet/wacom_sys.c
|
||||
@@ -304,7 +304,7 @@ static int wacom_parse_hid(struct usb_interface *intf,
|
||||
struct usb_device *dev = interface_to_usbdev(intf);
|
||||
char limit = 0;
|
||||
/* result has to be defined as int for some devices */
|
||||
- int result = 0;
|
||||
+ int result = 0, touch_max = 0;
|
||||
int i = 0, usage = WCM_UNDEFINED, finger = 0, pen = 0;
|
||||
unsigned char *report;
|
||||
|
||||
@@ -351,7 +351,8 @@ static int wacom_parse_hid(struct usb_interface *intf,
|
||||
if (usage == WCM_DESKTOP) {
|
||||
if (finger) {
|
||||
features->device_type = BTN_TOOL_FINGER;
|
||||
-
|
||||
+ /* touch device at least supports one touch point */
|
||||
+ touch_max = 1;
|
||||
switch (features->type) {
|
||||
case TABLETPC2FG:
|
||||
features->pktlen = WACOM_PKGLEN_TPC2FG;
|
||||
@@ -504,6 +505,8 @@ static int wacom_parse_hid(struct usb_interface *intf,
|
||||
}
|
||||
|
||||
out:
|
||||
+ if (!features->touch_max && touch_max)
|
||||
+ features->touch_max = touch_max;
|
||||
result = 0;
|
||||
kfree(report);
|
||||
return result;
|
||||
--
|
||||
1.8.4.2
|
||||
|
|
@ -1,216 +0,0 @@
|
|||
Bugzilla: 1046238
|
||||
Upstream-status: Queued for 3.14
|
||||
|
||||
From b5fd2a3e92ca5c8c1f3c20d31ac5daed3ec4d604 Mon Sep 17 00:00:00 2001
|
||||
From: Ping Cheng <pinglinux@gmail.com>
|
||||
Date: Mon, 25 Nov 2013 18:44:55 -0800
|
||||
Subject: [PATCH] Input: wacom - add support for three new Intuos devices
|
||||
|
||||
Two tablets in this series support both pen and touch. One (Intuos S)
|
||||
only supports pen. This patch also updates the driver to process wireless
|
||||
devices that do not support touch interface.
|
||||
|
||||
Tested-by: Jason Gerecke <killertofu@gmail.com>
|
||||
Reviewed-by: Chris Bagwell <chris@cnpbagwell.com>
|
||||
Signed-off-by: Ping Cheng <pingc@wacom.com>
|
||||
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
|
||||
---
|
||||
drivers/input/tablet/wacom_sys.c | 6 ++--
|
||||
drivers/input/tablet/wacom_wac.c | 61 ++++++++++++++++++++++++++++++----------
|
||||
drivers/input/tablet/wacom_wac.h | 2 ++
|
||||
3 files changed, 51 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c
|
||||
index 3d71b60..3a7d99c 100644
|
||||
--- a/drivers/input/tablet/wacom_sys.c
|
||||
+++ b/drivers/input/tablet/wacom_sys.c
|
||||
@@ -1198,7 +1198,8 @@ static void wacom_wireless_work(struct work_struct *work)
|
||||
goto fail;
|
||||
|
||||
/* Touch interface */
|
||||
- if (wacom_wac1->features.touch_max) {
|
||||
+ if (wacom_wac1->features.touch_max ||
|
||||
+ wacom_wac1->features.type == INTUOSHT) {
|
||||
wacom_wac2->features =
|
||||
*((struct wacom_features *)id->driver_info);
|
||||
wacom_wac2->features.pktlen = WACOM_PKGLEN_BBTOUCH3;
|
||||
@@ -1321,7 +1322,7 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i
|
||||
* HID descriptor. If this is the touch interface (wMaxPacketSize
|
||||
* of WACOM_PKGLEN_BBTOUCH3), override the table values.
|
||||
*/
|
||||
- if (features->type >= INTUOS5S && features->type <= INTUOSPL) {
|
||||
+ if (features->type >= INTUOS5S && features->type <= INTUOSHT) {
|
||||
if (endpoint->wMaxPacketSize == WACOM_PKGLEN_BBTOUCH3) {
|
||||
features->device_type = BTN_TOOL_FINGER;
|
||||
features->pktlen = WACOM_PKGLEN_BBTOUCH3;
|
||||
@@ -1391,7 +1392,6 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i
|
||||
goto fail5;
|
||||
}
|
||||
}
|
||||
-
|
||||
return 0;
|
||||
|
||||
fail5: wacom_destroy_leds(wacom);
|
||||
diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c
|
||||
index 3f75f1d..eb60a28 100644
|
||||
--- a/drivers/input/tablet/wacom_wac.c
|
||||
+++ b/drivers/input/tablet/wacom_wac.c
|
||||
@@ -1176,10 +1176,16 @@ static void wacom_bpt3_touch_msg(struct wacom_wac *wacom, unsigned char *data)
|
||||
static void wacom_bpt3_button_msg(struct wacom_wac *wacom, unsigned char *data)
|
||||
{
|
||||
struct input_dev *input = wacom->input;
|
||||
+ struct wacom_features *features = &wacom->features;
|
||||
|
||||
- input_report_key(input, BTN_LEFT, (data[1] & 0x08) != 0);
|
||||
+ if (features->type == INTUOSHT) {
|
||||
+ input_report_key(input, BTN_LEFT, (data[1] & 0x02) != 0);
|
||||
+ input_report_key(input, BTN_BACK, (data[1] & 0x08) != 0);
|
||||
+ } else {
|
||||
+ input_report_key(input, BTN_BACK, (data[1] & 0x02) != 0);
|
||||
+ input_report_key(input, BTN_LEFT, (data[1] & 0x08) != 0);
|
||||
+ }
|
||||
input_report_key(input, BTN_FORWARD, (data[1] & 0x04) != 0);
|
||||
- input_report_key(input, BTN_BACK, (data[1] & 0x02) != 0);
|
||||
input_report_key(input, BTN_RIGHT, (data[1] & 0x01) != 0);
|
||||
}
|
||||
|
||||
@@ -1217,7 +1223,7 @@ static int wacom_bpt_pen(struct wacom_wac *wacom)
|
||||
unsigned char *data = wacom->data;
|
||||
int prox = 0, x = 0, y = 0, p = 0, d = 0, pen = 0, btn1 = 0, btn2 = 0;
|
||||
|
||||
- if (data[0] != 0x02)
|
||||
+ if (data[0] != WACOM_REPORT_PENABLED)
|
||||
return 0;
|
||||
|
||||
prox = (data[1] & 0x20) == 0x20;
|
||||
@@ -1297,7 +1303,7 @@ static int wacom_wireless_irq(struct wacom_wac *wacom, size_t len)
|
||||
unsigned char *data = wacom->data;
|
||||
int connected;
|
||||
|
||||
- if (len != WACOM_PKGLEN_WIRELESS || data[0] != 0x80)
|
||||
+ if (len != WACOM_PKGLEN_WIRELESS || data[0] != WACOM_REPORT_WL)
|
||||
return 0;
|
||||
|
||||
connected = data[1] & 0x01;
|
||||
@@ -1391,6 +1397,7 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len)
|
||||
break;
|
||||
|
||||
case BAMBOO_PT:
|
||||
+ case INTUOSHT:
|
||||
sync = wacom_bpt_irq(wacom_wac, len);
|
||||
break;
|
||||
|
||||
@@ -1459,7 +1466,7 @@ void wacom_setup_device_quirks(struct wacom_features *features)
|
||||
|
||||
/* these device have multiple inputs */
|
||||
if (features->type >= WIRELESS ||
|
||||
- (features->type >= INTUOS5S && features->type <= INTUOSPL) ||
|
||||
+ (features->type >= INTUOS5S && features->type <= INTUOSHT) ||
|
||||
(features->oVid && features->oPid))
|
||||
features->quirks |= WACOM_QUIRK_MULTI_INPUT;
|
||||
|
||||
@@ -1771,33 +1778,43 @@ int wacom_setup_input_capabilities(struct input_dev *input_dev,
|
||||
__set_bit(INPUT_PROP_POINTER, input_dev->propbit);
|
||||
break;
|
||||
|
||||
+ case INTUOSHT:
|
||||
case BAMBOO_PT:
|
||||
__clear_bit(ABS_MISC, input_dev->absbit);
|
||||
|
||||
- __set_bit(INPUT_PROP_POINTER, input_dev->propbit);
|
||||
-
|
||||
if (features->device_type == BTN_TOOL_FINGER) {
|
||||
- unsigned int flags = INPUT_MT_POINTER;
|
||||
|
||||
__set_bit(BTN_LEFT, input_dev->keybit);
|
||||
__set_bit(BTN_FORWARD, input_dev->keybit);
|
||||
__set_bit(BTN_BACK, input_dev->keybit);
|
||||
__set_bit(BTN_RIGHT, input_dev->keybit);
|
||||
|
||||
- if (features->pktlen == WACOM_PKGLEN_BBTOUCH3) {
|
||||
- input_set_abs_params(input_dev,
|
||||
+ if (features->touch_max) {
|
||||
+ /* touch interface */
|
||||
+ unsigned int flags = INPUT_MT_POINTER;
|
||||
+
|
||||
+ __set_bit(INPUT_PROP_POINTER, input_dev->propbit);
|
||||
+ if (features->pktlen == WACOM_PKGLEN_BBTOUCH3) {
|
||||
+ input_set_abs_params(input_dev,
|
||||
ABS_MT_TOUCH_MAJOR,
|
||||
0, features->x_max, 0, 0);
|
||||
- input_set_abs_params(input_dev,
|
||||
+ input_set_abs_params(input_dev,
|
||||
ABS_MT_TOUCH_MINOR,
|
||||
0, features->y_max, 0, 0);
|
||||
+ } else {
|
||||
+ __set_bit(BTN_TOOL_FINGER, input_dev->keybit);
|
||||
+ __set_bit(BTN_TOOL_DOUBLETAP, input_dev->keybit);
|
||||
+ flags = 0;
|
||||
+ }
|
||||
+ input_mt_init_slots(input_dev, features->touch_max, flags);
|
||||
} else {
|
||||
- __set_bit(BTN_TOOL_FINGER, input_dev->keybit);
|
||||
- __set_bit(BTN_TOOL_DOUBLETAP, input_dev->keybit);
|
||||
- flags = 0;
|
||||
+ /* buttons/keys only interface */
|
||||
+ __clear_bit(ABS_X, input_dev->absbit);
|
||||
+ __clear_bit(ABS_Y, input_dev->absbit);
|
||||
+ __clear_bit(BTN_TOUCH, input_dev->keybit);
|
||||
}
|
||||
- input_mt_init_slots(input_dev, features->touch_max, flags);
|
||||
} else if (features->device_type == BTN_TOOL_PEN) {
|
||||
+ __set_bit(INPUT_PROP_POINTER, input_dev->propbit);
|
||||
__set_bit(BTN_TOOL_RUBBER, input_dev->keybit);
|
||||
__set_bit(BTN_TOOL_PEN, input_dev->keybit);
|
||||
__set_bit(BTN_STYLUS, input_dev->keybit);
|
||||
@@ -2194,6 +2211,17 @@ static const struct wacom_features wacom_features_0x300 =
|
||||
static const struct wacom_features wacom_features_0x301 =
|
||||
{ "Wacom Bamboo One M", WACOM_PKGLEN_BBPEN, 21648, 13530, 1023,
|
||||
31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
|
||||
+static const struct wacom_features wacom_features_0x302 =
|
||||
+ { "Wacom Intuos PT S", WACOM_PKGLEN_BBPEN, 15200, 9500, 1023,
|
||||
+ 31, INTUOSHT, WACOM_INTUOS_RES, WACOM_INTUOS_RES,
|
||||
+ .touch_max = 16 };
|
||||
+static const struct wacom_features wacom_features_0x303 =
|
||||
+ { "Wacom Intuos PT M", WACOM_PKGLEN_BBPEN, 21600, 13500, 1023,
|
||||
+ 31, INTUOSHT, WACOM_INTUOS_RES, WACOM_INTUOS_RES,
|
||||
+ .touch_max = 16 };
|
||||
+static const struct wacom_features wacom_features_0x30E =
|
||||
+ { "Wacom Intuos S", WACOM_PKGLEN_BBPEN, 15200, 9500, 1023,
|
||||
+ 31, INTUOSHT, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
|
||||
static const struct wacom_features wacom_features_0x6004 =
|
||||
{ "ISD-V4", WACOM_PKGLEN_GRAPHIRE, 12800, 8000, 255,
|
||||
0, TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
|
||||
@@ -2329,6 +2357,9 @@ const struct usb_device_id wacom_ids[] = {
|
||||
{ USB_DEVICE_WACOM(0x10D) },
|
||||
{ USB_DEVICE_WACOM(0x300) },
|
||||
{ USB_DEVICE_WACOM(0x301) },
|
||||
+ { USB_DEVICE_DETAILED(0x302, USB_CLASS_HID, 0, 0) },
|
||||
+ { USB_DEVICE_DETAILED(0x303, USB_CLASS_HID, 0, 0) },
|
||||
+ { USB_DEVICE_DETAILED(0x30E, USB_CLASS_HID, 0, 0) },
|
||||
{ USB_DEVICE_WACOM(0x304) },
|
||||
{ USB_DEVICE_DETAILED(0x314, USB_CLASS_HID, 0, 0) },
|
||||
{ USB_DEVICE_DETAILED(0x315, USB_CLASS_HID, 0, 0) },
|
||||
diff --git a/drivers/input/tablet/wacom_wac.h b/drivers/input/tablet/wacom_wac.h
|
||||
index fd23a37..854cceb 100644
|
||||
--- a/drivers/input/tablet/wacom_wac.h
|
||||
+++ b/drivers/input/tablet/wacom_wac.h
|
||||
@@ -54,6 +54,7 @@
|
||||
#define WACOM_REPORT_TPCST 16
|
||||
#define WACOM_REPORT_TPC1FGE 18
|
||||
#define WACOM_REPORT_24HDT 1
|
||||
+#define WACOM_REPORT_WL 128
|
||||
|
||||
/* device quirks */
|
||||
#define WACOM_QUIRK_MULTI_INPUT 0x0001
|
||||
@@ -81,6 +82,7 @@ enum {
|
||||
INTUOSPS,
|
||||
INTUOSPM,
|
||||
INTUOSPL,
|
||||
+ INTUOSHT,
|
||||
WACOM_21UX2,
|
||||
WACOM_22HD,
|
||||
DTK,
|
||||
--
|
||||
1.8.4.2
|
||||
|
|
@ -1,155 +0,0 @@
|
|||
Bugzilla: 1046238
|
||||
Upstream-status: Queued for 3.14
|
||||
|
||||
From 961794a00eab03f4344b7d5e825e8e789e55da87 Mon Sep 17 00:00:00 2001
|
||||
From: Ping Cheng <pinglinux@gmail.com>
|
||||
Date: Thu, 5 Dec 2013 12:54:53 -0800
|
||||
Subject: [PATCH] Input: wacom - add reporting of SW_MUTE_DEVICE events
|
||||
|
||||
New Intuos series models added a hardware switch to turn touch
|
||||
data on/off. The state of the switch is reported periodically
|
||||
from the tablet. To report the state the driver will emit SW_MUTE_DEVICE
|
||||
events.
|
||||
|
||||
Reviewed_by: Chris Bagwell <chris@cnpbagwell.com>
|
||||
Acked-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
Tested-by: Jason Gerecke <killertofu@gmail.com>
|
||||
Signed-off-by: Ping Cheng <pingc@wacom.com>
|
||||
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
|
||||
---
|
||||
drivers/input/tablet/wacom_sys.c | 12 ++++++++++++
|
||||
drivers/input/tablet/wacom_wac.c | 30 +++++++++++++++++++++++++++---
|
||||
drivers/input/tablet/wacom_wac.h | 5 +++++
|
||||
3 files changed, 44 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c
|
||||
index 8318826..b16ebef 100644
|
||||
--- a/drivers/input/tablet/wacom_sys.c
|
||||
+++ b/drivers/input/tablet/wacom_sys.c
|
||||
@@ -1197,6 +1197,8 @@ static void wacom_wireless_work(struct work_struct *work)
|
||||
wacom_wac1->features.device_type = BTN_TOOL_PEN;
|
||||
snprintf(wacom_wac1->name, WACOM_NAME_MAX, "%s (WL) Pen",
|
||||
wacom_wac1->features.name);
|
||||
+ wacom_wac1->shared->touch_max = wacom_wac1->features.touch_max;
|
||||
+ wacom_wac1->shared->type = wacom_wac1->features.type;
|
||||
error = wacom_register_input(wacom1);
|
||||
if (error)
|
||||
goto fail;
|
||||
@@ -1218,6 +1220,10 @@ static void wacom_wireless_work(struct work_struct *work)
|
||||
error = wacom_register_input(wacom2);
|
||||
if (error)
|
||||
goto fail;
|
||||
+
|
||||
+ if (wacom_wac1->features.type == INTUOSHT &&
|
||||
+ wacom_wac1->features.touch_max)
|
||||
+ wacom_wac->shared->touch_input = wacom_wac2->input;
|
||||
}
|
||||
|
||||
error = wacom_initialize_battery(wacom);
|
||||
@@ -1396,6 +1402,12 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i
|
||||
goto fail5;
|
||||
}
|
||||
}
|
||||
+
|
||||
+ if (wacom_wac->features.type == INTUOSHT && wacom_wac->features.touch_max) {
|
||||
+ if (wacom_wac->features.device_type == BTN_TOOL_FINGER)
|
||||
+ wacom_wac->shared->touch_input = wacom_wac->input;
|
||||
+ }
|
||||
+
|
||||
return 0;
|
||||
|
||||
fail5: wacom_destroy_leds(wacom);
|
||||
diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c
|
||||
index 7655088..048e5b3 100644
|
||||
--- a/drivers/input/tablet/wacom_wac.c
|
||||
+++ b/drivers/input/tablet/wacom_wac.c
|
||||
@@ -1219,13 +1219,23 @@ static int wacom_bpt3_touch(struct wacom_wac *wacom)
|
||||
|
||||
static int wacom_bpt_pen(struct wacom_wac *wacom)
|
||||
{
|
||||
+ struct wacom_features *features = &wacom->features;
|
||||
struct input_dev *input = wacom->input;
|
||||
unsigned char *data = wacom->data;
|
||||
int prox = 0, x = 0, y = 0, p = 0, d = 0, pen = 0, btn1 = 0, btn2 = 0;
|
||||
|
||||
- if (data[0] != WACOM_REPORT_PENABLED)
|
||||
+ if (data[0] != WACOM_REPORT_PENABLED && data[0] != WACOM_REPORT_USB)
|
||||
return 0;
|
||||
|
||||
+ if (data[0] == WACOM_REPORT_USB) {
|
||||
+ if (features->type == INTUOSHT && features->touch_max) {
|
||||
+ input_report_switch(wacom->shared->touch_input,
|
||||
+ SW_MUTE_DEVICE, data[8] & 0x40);
|
||||
+ input_sync(wacom->shared->touch_input);
|
||||
+ }
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
prox = (data[1] & 0x20) == 0x20;
|
||||
|
||||
/*
|
||||
@@ -1258,8 +1268,8 @@ static int wacom_bpt_pen(struct wacom_wac *wacom)
|
||||
* touching and applying pressure; do not report negative
|
||||
* distance.
|
||||
*/
|
||||
- if (data[8] <= wacom->features.distance_max)
|
||||
- d = wacom->features.distance_max - data[8];
|
||||
+ if (data[8] <= features->distance_max)
|
||||
+ d = features->distance_max - data[8];
|
||||
|
||||
pen = data[1] & 0x01;
|
||||
btn1 = data[1] & 0x02;
|
||||
@@ -1310,6 +1320,13 @@ static int wacom_wireless_irq(struct wacom_wac *wacom, size_t len)
|
||||
if (connected) {
|
||||
int pid, battery;
|
||||
|
||||
+ if ((wacom->shared->type == INTUOSHT) &&
|
||||
+ wacom->shared->touch_max) {
|
||||
+ input_report_switch(wacom->shared->touch_input,
|
||||
+ SW_MUTE_DEVICE, data[5] & 0x40);
|
||||
+ input_sync(wacom->shared->touch_input);
|
||||
+ }
|
||||
+
|
||||
pid = get_unaligned_be16(&data[6]);
|
||||
battery = data[5] & 0x3f;
|
||||
if (wacom->pid != pid) {
|
||||
@@ -1779,6 +1796,13 @@ int wacom_setup_input_capabilities(struct input_dev *input_dev,
|
||||
break;
|
||||
|
||||
case INTUOSHT:
|
||||
+ if (features->touch_max &&
|
||||
+ features->device_type == BTN_TOOL_FINGER) {
|
||||
+ input_dev->evbit[0] |= BIT_MASK(EV_SW);
|
||||
+ __set_bit(SW_MUTE_DEVICE, input_dev->swbit);
|
||||
+ }
|
||||
+ /* fall through */
|
||||
+
|
||||
case BAMBOO_PT:
|
||||
__clear_bit(ABS_MISC, input_dev->absbit);
|
||||
|
||||
diff --git a/drivers/input/tablet/wacom_wac.h b/drivers/input/tablet/wacom_wac.h
|
||||
index 854cceb..3600cf7 100644
|
||||
--- a/drivers/input/tablet/wacom_wac.h
|
||||
+++ b/drivers/input/tablet/wacom_wac.h
|
||||
@@ -55,6 +55,7 @@
|
||||
#define WACOM_REPORT_TPC1FGE 18
|
||||
#define WACOM_REPORT_24HDT 1
|
||||
#define WACOM_REPORT_WL 128
|
||||
+#define WACOM_REPORT_USB 192
|
||||
|
||||
/* device quirks */
|
||||
#define WACOM_QUIRK_MULTI_INPUT 0x0001
|
||||
@@ -131,6 +132,10 @@ struct wacom_features {
|
||||
struct wacom_shared {
|
||||
bool stylus_in_proximity;
|
||||
bool touch_down;
|
||||
+ /* for wireless device to access USB interfaces */
|
||||
+ unsigned touch_max;
|
||||
+ int type;
|
||||
+ struct input_dev *touch_input;
|
||||
};
|
||||
|
||||
struct wacom_wac {
|
||||
--
|
||||
1.8.4.2
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
Bugzilla: 924916
|
||||
Upstream-status: Queued for 3.14 in kvm tree
|
||||
|
||||
From 989c6b34f6a9480e397b170cc62237e89bf4fdb9 Mon Sep 17 00:00:00 2001
|
||||
From: Marcelo Tosatti <mtosatti@redhat.com>
|
||||
Date: Thu, 19 Dec 2013 17:28:51 +0000
|
||||
Subject: KVM: MMU: handle invalid root_hpa at __direct_map
|
||||
|
||||
It is possible for __direct_map to be called on invalid root_hpa
|
||||
(-1), two examples:
|
||||
|
||||
1) try_async_pf -> can_do_async_pf
|
||||
-> vmx_interrupt_allowed -> nested_vmx_vmexit
|
||||
2) vmx_handle_exit -> vmx_interrupt_allowed -> nested_vmx_vmexit
|
||||
|
||||
Then to load_vmcs12_host_state and kvm_mmu_reset_context.
|
||||
|
||||
Check for this possibility, let fault exception be regenerated.
|
||||
|
||||
BZ: https://bugzilla.redhat.com/show_bug.cgi?id=924916
|
||||
|
||||
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
|
||||
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
||||
---
|
||||
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
|
||||
index 40772ef..31a5702 100644
|
||||
--- a/arch/x86/kvm/mmu.c
|
||||
+++ b/arch/x86/kvm/mmu.c
|
||||
@@ -2659,6 +2659,9 @@ static int __direct_map(struct kvm_vcpu *vcpu, gpa_t v, int write,
|
||||
int emulate = 0;
|
||||
gfn_t pseudo_gfn;
|
||||
|
||||
+ if (!VALID_PAGE(vcpu->arch.mmu.root_hpa))
|
||||
+ return 0;
|
||||
+
|
||||
for_each_shadow_entry(vcpu, (u64)gfn << PAGE_SHIFT, iterator) {
|
||||
if (iterator.level == level) {
|
||||
mmu_set_spte(vcpu, iterator.sptep, ACC_ALL,
|
||||
--
|
||||
cgit v0.9.2
|
|
@ -1,88 +0,0 @@
|
|||
Bugzilla: 1047892
|
||||
Upstream-status: Submitted for 3.14
|
||||
|
||||
Path: news.gmane.org!not-for-mail
|
||||
From: Marcelo Tosatti <mtosatti@redhat.com>
|
||||
Newsgroups: gmane.comp.emulators.kvm.devel
|
||||
Subject: KVM: VMX: fix use after free of vmx->loaded_vmcs
|
||||
Date: Fri, 3 Jan 2014 17:00:51 -0200
|
||||
Lines: 31
|
||||
Approved: news@gmane.org
|
||||
Message-ID: <20140103190051.GA16151@amt.cnet>
|
||||
NNTP-Posting-Host: plane.gmane.org
|
||||
Mime-Version: 1.0
|
||||
Content-Type: text/plain; charset=us-ascii
|
||||
X-Trace: ger.gmane.org 1388775805 10008 80.91.229.3 (3 Jan 2014 19:03:25 GMT)
|
||||
X-Complaints-To: usenet@ger.gmane.org
|
||||
NNTP-Posting-Date: Fri, 3 Jan 2014 19:03:25 +0000 (UTC)
|
||||
Cc: Jan Kiszka <jan.kiszka@web.de>, Paolo Bonzini <pbonzini@redhat.com>
|
||||
To: kvm-devel <kvm@vger.kernel.org>
|
||||
Original-X-From: kvm-owner@vger.kernel.org Fri Jan 03 20:03:30 2014
|
||||
Return-path: <kvm-owner@vger.kernel.org>
|
||||
Envelope-to: gcekd-kvm-devel@plane.gmane.org
|
||||
Original-Received: from vger.kernel.org ([209.132.180.67])
|
||||
by plane.gmane.org with esmtp (Exim 4.69)
|
||||
(envelope-from <kvm-owner@vger.kernel.org>)
|
||||
id 1VzA1p-0000BI-F0
|
||||
for gcekd-kvm-devel@plane.gmane.org; Fri, 03 Jan 2014 20:03:29 +0100
|
||||
Original-Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
|
||||
id S1752819AbaACTDZ (ORCPT <rfc822;gcekd-kvm-devel@m.gmane.org>);
|
||||
Fri, 3 Jan 2014 14:03:25 -0500
|
||||
Original-Received: from mx1.redhat.com ([209.132.183.28]:26936 "EHLO mx1.redhat.com"
|
||||
rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP
|
||||
id S1751681AbaACTDY (ORCPT <rfc822;kvm@vger.kernel.org>);
|
||||
Fri, 3 Jan 2014 14:03:24 -0500
|
||||
Original-Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11])
|
||||
by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s03J3NIr007205
|
||||
(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK);
|
||||
Fri, 3 Jan 2014 14:03:24 -0500
|
||||
Original-Received: from amt.cnet (vpn1-4-118.gru2.redhat.com [10.97.4.118])
|
||||
by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s03J3Mxl004396;
|
||||
Fri, 3 Jan 2014 14:03:23 -0500
|
||||
Original-Received: from amt.cnet (localhost [127.0.0.1])
|
||||
by amt.cnet (Postfix) with ESMTP id 98901104ADF;
|
||||
Fri, 3 Jan 2014 17:00:53 -0200 (BRST)
|
||||
Original-Received: (from marcelo@localhost)
|
||||
by amt.cnet (8.14.6/8.14.6/Submit) id s03J0pCL016186;
|
||||
Fri, 3 Jan 2014 17:00:51 -0200
|
||||
Content-Disposition: inline
|
||||
User-Agent: Mutt/1.5.21 (2010-09-15)
|
||||
X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11
|
||||
Original-Sender: kvm-owner@vger.kernel.org
|
||||
Precedence: bulk
|
||||
List-ID: <kvm.vger.kernel.org>
|
||||
X-Mailing-List: kvm@vger.kernel.org
|
||||
Xref: news.gmane.org gmane.comp.emulators.kvm.devel:117837
|
||||
Archived-At: <http://permalink.gmane.org/gmane.comp.emulators.kvm.devel/117837>
|
||||
|
||||
|
||||
After free_loaded_vmcs executes, the "loaded_vmcs" structure
|
||||
is kfreed, and now vmx->loaded_vmcs points to a kfreed area.
|
||||
Subsequent free_loaded_vmcs then attempts to manipulate
|
||||
vmx->loaded_vmcs.
|
||||
|
||||
Switch the order to avoid the problem.
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1047892
|
||||
|
||||
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
|
||||
|
||||
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
|
||||
index da7837e..2efa33f0 100644
|
||||
--- a/arch/x86/kvm/vmx.c
|
||||
+++ b/arch/x86/kvm/vmx.c
|
||||
@@ -7332,8 +7332,8 @@ static void vmx_free_vcpu(struct kvm_vcpu *vcpu)
|
||||
struct vcpu_vmx *vmx = to_vmx(vcpu);
|
||||
|
||||
free_vpid(vmx);
|
||||
- free_nested(vmx);
|
||||
free_loaded_vmcs(vmx->loaded_vmcs);
|
||||
+ free_nested(vmx);
|
||||
kfree(vmx->guest_msrs);
|
||||
kvm_vcpu_uninit(vcpu);
|
||||
kmem_cache_free(kvm_vcpu_cache, vmx);
|
||||
--
|
||||
To unsubscribe from this list: send the line "unsubscribe kvm" in
|
||||
the body of a message to majordomo@vger.kernel.org
|
||||
More majordomo info at http://vger.kernel.org/majordomo-info.html
|
||||
|
|
@ -1,65 +0,0 @@
|
|||
Bugzilla: 994438
|
||||
Upstream-status: 3.14
|
||||
|
||||
From 2b6e0ca175fe4a20f21ba82b1e7ccc71029c4dd4 Mon Sep 17 00:00:00 2001
|
||||
From: Michele Baldessari <michele@acksyn.org>
|
||||
Date: Thu, 30 Jan 2014 10:51:04 +0000
|
||||
Subject: [PATCH] e100: Fix "disabling already-disabled device" warning
|
||||
|
||||
In https://bugzilla.redhat.com/show_bug.cgi?id=994438 and
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=970480 we
|
||||
received different reports of e100 throwing the following
|
||||
warning:
|
||||
|
||||
[<c06a0ba5>] ? pci_disable_device+0x85/0x90
|
||||
[<c044a153>] warn_slowpath_fmt+0x33/0x40
|
||||
[<c06a0ba5>] pci_disable_device+0x85/0x90
|
||||
[<f7fdf7e0>] __e100_shutdown+0x80/0x120 [e100]
|
||||
[<c0476ca5>] ? check_preempt_curr+0x65/0x90
|
||||
[<f7fdf8d6>] e100_suspend+0x16/0x30 [e100]
|
||||
[<c06a1ebb>] pci_legacy_suspend+0x2b/0xb0
|
||||
[<c098fc0f>] ? wait_for_completion+0x1f/0xd0
|
||||
[<c06a2d50>] ? pci_pm_poweroff+0xb0/0xb0
|
||||
[<c06a2de4>] pci_pm_freeze+0x94/0xa0
|
||||
[<c0767bb7>] dpm_run_callback+0x37/0x80
|
||||
[<c076a204>] ? pm_wakeup_pending+0xc4/0x140
|
||||
[<c0767f12>] __device_suspend+0xb2/0x1f0
|
||||
[<c076806f>] async_suspend+0x1f/0x90
|
||||
[<c04706e5>] async_run_entry_fn+0x35/0x140
|
||||
[<c0478aef>] ? wake_up_process+0x1f/0x40
|
||||
[<c0464495>] process_one_work+0x115/0x370
|
||||
[<c0462645>] ? start_worker+0x25/0x30
|
||||
[<c0464dc5>] ? manage_workers.isra.27+0x1a5/0x250
|
||||
[<c0464f6e>] worker_thread+0xfe/0x330
|
||||
[<c0464e70>] ? manage_workers.isra.27+0x250/0x250
|
||||
[<c046a224>] kthread+0x94/0xa0
|
||||
[<c0997f37>] ret_from_kernel_thread+0x1b/0x28
|
||||
[<c046a190>] ? insert_kthread_work+0x30/0x30
|
||||
|
||||
This patch removes pci_disable_device() from __e100_shutdown().
|
||||
pci_clear_master() is enough.
|
||||
|
||||
Signed-off-by: Michele Baldessari <michele@acksyn.org>
|
||||
Tested-by: Mark Harig <idirectscm@aim.com>
|
||||
Signed-off-by: Aaron Brown <aaron.f.brown@intel.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
drivers/net/ethernet/intel/e100.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/net/ethernet/intel/e100.c b/drivers/net/ethernet/intel/e100.c
|
||||
index cbaba44..bf7a01e 100644
|
||||
--- a/drivers/net/ethernet/intel/e100.c
|
||||
+++ b/drivers/net/ethernet/intel/e100.c
|
||||
@@ -3034,7 +3034,7 @@ static void __e100_shutdown(struct pci_dev *pdev, bool *enable_wake)
|
||||
*enable_wake = false;
|
||||
}
|
||||
|
||||
- pci_disable_device(pdev);
|
||||
+ pci_clear_master(pdev);
|
||||
}
|
||||
|
||||
static int __e100_power_off(struct pci_dev *pdev, bool wake)
|
||||
--
|
||||
1.8.5.3
|
||||
|
|
@ -1,110 +0,0 @@
|
|||
Bugzilla: 1030802
|
||||
Upstream-status: http://www.mail-archive.com/linux-input@vger.kernel.org/msg07220.html
|
||||
|
||||
From e1c7fa5fbb6688bd464658ff8a93bdf23c442065 Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Mon, 9 Dec 2013 15:18:04 +0100
|
||||
Subject: [PATCH v2] elantech: Properly differentiate between clickpads and
|
||||
normal touchpads
|
||||
|
||||
The current assumption in the elantech driver that hw version 3 touchpads are
|
||||
never clickpads and hw version 4 touchpads are always clickpads is wrong.
|
||||
|
||||
There are several bug reports for this, ie:
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1030802
|
||||
http://superuser.com/questions/619582/right-elantech-touchpad-button-not-working-in-linux
|
||||
|
||||
I've spend a couple of hours wading through various bugzillas,
|
||||
launchpads and forum posts to create a list of fw-versions and capabilities
|
||||
for different laptop models to find a good method to differentiate between
|
||||
clickpads and versions with separate hardware buttons.
|
||||
|
||||
Which shows that a device being a clickpad is reliable indicated by bit 12
|
||||
being set in the fw_version. I've included the gathered list inside the driver,
|
||||
so that we've this info at hand if we need to revisit this later.
|
||||
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
---
|
||||
drivers/input/mouse/elantech.c | 45 +++++++++++++++++++++++++++++++++++++++---
|
||||
1 file changed, 42 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c
|
||||
index 597e9b8..ef1cf52 100644
|
||||
--- a/drivers/input/mouse/elantech.c
|
||||
+++ b/drivers/input/mouse/elantech.c
|
||||
@@ -486,6 +486,7 @@ static void elantech_input_sync_v4(struct psmouse *psmouse)
|
||||
unsigned char *packet = psmouse->packet;
|
||||
|
||||
input_report_key(dev, BTN_LEFT, packet[0] & 0x01);
|
||||
+ input_report_key(dev, BTN_RIGHT, packet[0] & 0x02);
|
||||
input_mt_report_pointer_emulation(dev, true);
|
||||
input_sync(dev);
|
||||
}
|
||||
@@ -984,6 +985,44 @@ static int elantech_get_resolution_v4(struct psmouse *psmouse,
|
||||
}
|
||||
|
||||
/*
|
||||
+ * Advertise INPUT_PROP_BUTTONPAD for clickpads. The testing of bit 12 in
|
||||
+ * fw_version for this is based on the following fw_version & caps table:
|
||||
+ *
|
||||
+ * Laptop-model: fw_version: caps: buttons:
|
||||
+ * Acer S3 0x461f00 10, 13, 0e clickpad
|
||||
+ * Acer S7-392 0x581f01 50, 17, 0d clickpad
|
||||
+ * Acer V5-131 0x461f02 01, 16, 0c clickpad
|
||||
+ * Acer V5-551 0x461f00 ? clickpad
|
||||
+ * Asus K53SV 0x450f01 78, 15, 0c 2 hw buttons
|
||||
+ * Asus G46VW 0x460f02 00, 18, 0c 2 hw buttons
|
||||
+ * Asus G750JX 0x360f00 00, 16, 0c 2 hw buttons
|
||||
+ * Asus UX31 0x361f00 20, 15, 0e clickpad
|
||||
+ * Asus UX32VD 0x361f02 00, 15, 0e clickpad
|
||||
+ * Avatar AVIU-145A2 0x361f00 ? clickpad
|
||||
+ * Gigabyte U2442 0x450f01 58, 17, 0c 2 hw buttons
|
||||
+ * Lenovo L430 0x350f02 b9, 15, 0c 2 hw buttons (*)
|
||||
+ * Samsung NF210 0x150b00 78, 14, 0a 2 hw buttons
|
||||
+ * Samsung NP770Z5E 0x575f01 10, 15, 0f clickpad
|
||||
+ * Samsung NP700Z5B 0x361f06 21, 15, 0f clickpad
|
||||
+ * Samsung NP900X3E-A02 0x575f03 ? clickpad
|
||||
+ * Samsung NP-QX410 0x851b00 19, 14, 0c clickpad
|
||||
+ * Samsung RC512 0x450f00 08, 15, 0c 2 hw buttons
|
||||
+ * Samsung RF710 0x450f00 ? 2 hw buttons
|
||||
+ * System76 Pangolin 0x250f01 ? 2 hw buttons
|
||||
+ * (*) + 3 trackpoint buttons
|
||||
+ */
|
||||
+static void elantech_set_buttonpad_prop(struct psmouse *psmouse)
|
||||
+{
|
||||
+ struct input_dev *dev = psmouse->dev;
|
||||
+ struct elantech_data *etd = psmouse->private;
|
||||
+
|
||||
+ if (etd->fw_version & 0x001000) {
|
||||
+ __set_bit(INPUT_PROP_BUTTONPAD, dev->propbit);
|
||||
+ __clear_bit(BTN_RIGHT, dev->keybit);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
* Set the appropriate event bits for the input subsystem
|
||||
*/
|
||||
static int elantech_set_input_params(struct psmouse *psmouse)
|
||||
@@ -1026,6 +1065,8 @@ static int elantech_set_input_params(struct psmouse *psmouse)
|
||||
__set_bit(INPUT_PROP_SEMI_MT, dev->propbit);
|
||||
/* fall through */
|
||||
case 3:
|
||||
+ if (etd->hw_version == 3)
|
||||
+ elantech_set_buttonpad_prop(psmouse);
|
||||
input_set_abs_params(dev, ABS_X, x_min, x_max, 0, 0);
|
||||
input_set_abs_params(dev, ABS_Y, y_min, y_max, 0, 0);
|
||||
if (etd->reports_pressure) {
|
||||
@@ -1047,9 +1088,7 @@ static int elantech_set_input_params(struct psmouse *psmouse)
|
||||
*/
|
||||
psmouse_warn(psmouse, "couldn't query resolution data.\n");
|
||||
}
|
||||
- /* v4 is clickpad, with only one button. */
|
||||
- __set_bit(INPUT_PROP_BUTTONPAD, dev->propbit);
|
||||
- __clear_bit(BTN_RIGHT, dev->keybit);
|
||||
+ elantech_set_buttonpad_prop(psmouse);
|
||||
__set_bit(BTN_TOOL_QUADTAP, dev->keybit);
|
||||
/* For X to recognize me as touchpad. */
|
||||
input_set_abs_params(dev, ABS_X, x_min, x_max, 0, 0);
|
||||
--
|
||||
1.8.4.2
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
diff --git a/fs/proc/proc_devtree.c b/fs/proc/proc_devtree.c
|
||||
index 927cbd1..f060f28 100644
|
||||
--- a/fs/proc/proc_devtree.c
|
||||
+++ b/fs/proc/proc_devtree.c
|
||||
@@ -233,6 +233,7 @@ void __init proc_device_tree_init(void)
|
||||
return;
|
||||
root = of_find_node_by_path("/");
|
||||
if (root == NULL) {
|
||||
+ remove_proc_entry("device-tree", NULL);
|
||||
pr_debug("/proc/device-tree: can't find root\n");
|
||||
return;
|
||||
}
|
49
kernel.spec
49
kernel.spec
|
@ -74,7 +74,7 @@ Summary: The Linux kernel
|
|||
%if 0%{?released_kernel}
|
||||
|
||||
# Do we have a -stable update to apply?
|
||||
%define stable_update 7
|
||||
%define stable_update 8
|
||||
# Is it a -stable RC?
|
||||
%define stable_rc 0
|
||||
# Set rpm version accordingly
|
||||
|
@ -663,8 +663,6 @@ Patch1826: drm-i915-hush-check-crtc-state.patch
|
|||
# NFSv4
|
||||
|
||||
# patches headed upstream
|
||||
Patch10000: fs-proc-devtree-remove_proc_entry.patch
|
||||
|
||||
Patch12016: disable-i8042-check-on-apple-mac.patch
|
||||
|
||||
Patch14000: hibernate-freeze-filesystems.patch
|
||||
|
@ -718,26 +716,9 @@ Patch25166: sunrpc-add-an-info-file-for-the-dummy-gssd-pipe.patch
|
|||
Patch25167: rpc_pipe-remove-the-clntXX-dir-if-creating-the-pipe-fails.patch
|
||||
Patch25168: rpc_pipe-fix-cleanup-of-dummy-gssd-directory-when-notification-fails.patch
|
||||
|
||||
#rhbz 1030802
|
||||
Patch25171: elantech-Properly-differentiate-between-clickpads-an.patch
|
||||
|
||||
#rhbz 924916
|
||||
Patch25179: KVM-MMU-handle-invalid-root_hpa-at-__direct_map.patch
|
||||
|
||||
#rhbz 1047892
|
||||
Patch25180: KVM-VMX-fix-use-after-free-of-vmx-loaded_vmcs.patch
|
||||
|
||||
#rhbz 1003167 1046238
|
||||
Patch25181: 0001-Input-wacom-make-sure-touch_max-is-set-for-touch-dev.patch
|
||||
Patch25182: 0002-Input-wacom-add-support-for-three-new-Intuos-devices.patch
|
||||
Patch25183: 0003-Input-wacom-add-reporting-of-SW_MUTE_DEVICE-events.patch
|
||||
|
||||
#rhbz 953211
|
||||
Patch25184: Input-ALPS-add-support-for-Dolphin-devices.patch
|
||||
|
||||
#rhbz 950630
|
||||
Patch25187: xhci-fix-resume-issues-on-renesas-chips-in-samsung-laptops.patch
|
||||
|
||||
#rhbz 1045755
|
||||
Patch25195: cgroup-fixes.patch
|
||||
|
||||
|
@ -751,9 +732,6 @@ Patch25201: cifs-sanity-check-length-of-data-to-send-before-sending.patch
|
|||
#rhbz 1068862
|
||||
Patch25002: cifs-mask-off-top-byte-in-get_rfc1002_length.patch
|
||||
|
||||
#rhbz 994438
|
||||
Patch25024: e100-Fix-disabling-already-disabled-device-warning.patch
|
||||
|
||||
#CVE-2014-0102 rhbz 1071396
|
||||
Patch25026: keyring-fix.patch
|
||||
|
||||
|
@ -1443,8 +1421,6 @@ ApplyPatch drm-i915-hush-check-crtc-state.patch
|
|||
# Radeon DRM
|
||||
|
||||
# Patches headed upstream
|
||||
ApplyPatch fs-proc-devtree-remove_proc_entry.patch
|
||||
|
||||
ApplyPatch disable-i8042-check-on-apple-mac.patch
|
||||
|
||||
# FIXME: REBASE
|
||||
|
@ -1477,26 +1453,9 @@ ApplyPatch rpc_pipe-remove-the-clntXX-dir-if-creating-the-pipe-fails.patch
|
|||
ApplyPatch sunrpc-add-an-info-file-for-the-dummy-gssd-pipe.patch
|
||||
ApplyPatch rpc_pipe-fix-cleanup-of-dummy-gssd-directory-when-notification-fails.patch
|
||||
|
||||
#rhbz 1030802
|
||||
ApplyPatch elantech-Properly-differentiate-between-clickpads-an.patch
|
||||
|
||||
#rhbz 924916
|
||||
ApplyPatch KVM-MMU-handle-invalid-root_hpa-at-__direct_map.patch
|
||||
|
||||
#rhbz 1047892
|
||||
ApplyPatch KVM-VMX-fix-use-after-free-of-vmx-loaded_vmcs.patch
|
||||
|
||||
#rhbz 1003167 1046238
|
||||
ApplyPatch 0001-Input-wacom-make-sure-touch_max-is-set-for-touch-dev.patch
|
||||
ApplyPatch 0002-Input-wacom-add-support-for-three-new-Intuos-devices.patch
|
||||
ApplyPatch 0003-Input-wacom-add-reporting-of-SW_MUTE_DEVICE-events.patch
|
||||
|
||||
#rhbz 953211
|
||||
ApplyPatch Input-ALPS-add-support-for-Dolphin-devices.patch
|
||||
|
||||
#rhbz 950630
|
||||
ApplyPatch xhci-fix-resume-issues-on-renesas-chips-in-samsung-laptops.patch
|
||||
|
||||
#rhbz 1045755
|
||||
ApplyPatch cgroup-fixes.patch
|
||||
|
||||
|
@ -1510,9 +1469,6 @@ ApplyPatch cifs-sanity-check-length-of-data-to-send-before-sending.patch
|
|||
#rhbz 1068862
|
||||
ApplyPatch cifs-mask-off-top-byte-in-get_rfc1002_length.patch
|
||||
|
||||
#rhbz 994438
|
||||
ApplyPatch e100-Fix-disabling-already-disabled-device-warning.patch
|
||||
|
||||
#CVE-2014-0102 rhbz 1071396
|
||||
ApplyPatch keyring-fix.patch
|
||||
|
||||
|
@ -2372,6 +2328,9 @@ fi
|
|||
# ||----w |
|
||||
# || ||
|
||||
%changelog
|
||||
* Mon Mar 31 2014 Justin M. Forbes <jforbes@fedoraproject.org> - 3.13.8-200
|
||||
- Linux v3.13.8
|
||||
|
||||
* Mon Mar 31 2014 Hans de Goede <hdegoede@redhat.com>
|
||||
- Fix clicks getting lost with cypress_ps2 touchpads with recent
|
||||
xorg-x11-drv-synaptics versions (bfdo#76341)
|
||||
|
|
2
sources
2
sources
|
@ -1,2 +1,2 @@
|
|||
0ecbaf65c00374eb4a826c2f9f37606f linux-3.13.tar.xz
|
||||
cb33b329d3417846d310c7f58a2614b6 patch-3.13.7.xz
|
||||
72b911bfc50de88c67bd0e8732978deb patch-3.13.8.xz
|
||||
|
|
|
@ -1,49 +0,0 @@
|
|||
Don Zickus <dzickus@redhat.com> writes:
|
||||
|
||||
Some co-workers of mine bought Samsung laptops that had mostly usb3 ports.
|
||||
Those ports did not resume correctly (the driver would timeout communicating
|
||||
and fail). This led to frustration as suspend/resume is a common use for
|
||||
laptops.
|
||||
|
||||
Poking around, I applied the reset on resume quirk to this chipset and the
|
||||
resume started working. Reloading the xhci_hcd module had been the temporary
|
||||
workaround.
|
||||
|
||||
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
|
||||
Reported-by: Don Zickus <dzickus@redhat.com>
|
||||
Cc: stable # 2.6.37
|
||||
---
|
||||
|
||||
Don, please ask your co-worker to apply this patch and test. Let me
|
||||
know if your other co-worker has a different subsystem device ID in his
|
||||
Samsung laptop, when he gets back from vacation. If so, we'll extend it
|
||||
to all Samsung laptops with that particular Renesas host.
|
||||
|
||||
Sarah Sharp
|
||||
|
||||
drivers/usb/host/xhci-pci.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
|
||||
index e42c318a4404..6c03584ac15f 100644
|
||||
--- a/drivers/usb/host/xhci-pci.c
|
||||
+++ b/drivers/usb/host/xhci-pci.c
|
||||
@@ -142,6 +142,11 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
|
||||
"QUIRK: Resetting on resume");
|
||||
xhci->quirks |= XHCI_TRUST_TX_LENGTH;
|
||||
}
|
||||
+ if (pdev->vendor == PCI_VENDOR_ID_RENESAS &&
|
||||
+ pdev->device == 0x0015 &&
|
||||
+ pdev->subsystem_vendor == PCI_VENDOR_ID_SAMSUNG &&
|
||||
+ pdev->subsystem_device == 0xc0cd)
|
||||
+ xhci->quirks |= XHCI_RESET_ON_RESUME;
|
||||
if (pdev->vendor == PCI_VENDOR_ID_VIA)
|
||||
xhci->quirks |= XHCI_RESET_ON_RESUME;
|
||||
}
|
||||
--
|
||||
1.8.5.2
|
||||
|
||||
--
|
||||
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
|
||||
the body of a message to majordomo@vger.kernel.org
|
||||
More majordomo info at http://vger.kernel.org/majordomo-info.html
|
Loading…
Reference in New Issue