summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Vasut <marex@denx.de>2012-08-05 23:57:14 +0200
committerPeter Kim <pekim@nvidia.com>2014-06-12 21:55:17 -0700
commit5ac84f19d95ccde8725dc828073bb1aadeb80fab (patch)
treed83b5c517f866e710912633f0bc52b05cdbd03fa
parenta96c9be87c663e1ec7b4105bb30a3c77357f405e (diff)
HID: Bump maximum global item tag report size to 128 bytes
The Freescale i.MX28 BootROM USB recovery mode implements the USB HID protocol, yet the global item tag report size is 128. Linux checks if this is 96 as of now, see [1]. This causes Linux to refuse to communicate with this device, making it impossible to use the recovery mode. This is not a standard HID device per se, but rather a software emulation implemented within the BootROM code and realized through USB OTG-capable port switched to device mode present on the device. Previous attempt to discuss this issue dates back to 2011, see [2]. There has been not much response. Also noteworthy is the [3], where there seems to be a pointing device that has issue similar to this one. The tool making use of the USB recovery mode is available at [4]. [1] http://comments.gmane.org/gmane.linux.kernel.input/22328 [2] http://www.spinics.net/lists/linux-usb/msg43463.html [3] https://bbs.archlinux.org/viewtopic.php?pid=1141340 [4] http://git.bfuser.eu/?p=marex/mxsldr.git;a=summary Bug 1466757 Bug 1506725 Change-Id: I32fb3e0e96c1509e445e5a073823ed06acd9db2c Signed-off-by: Marek Vasut <marex@denx.de> Cc: Chen Peter <B29397@freescale.com> Cc: Greg KH <greg@kroah.com> Cc: Jiri Kosina <jkosina@suse.cz> Signed-off-by: Jiri Kosina <jkosina@suse.cz> Reviewed-on: http://git-master/r/402097 Signed-off-by: Kenneth Kwak <kkwak@nvidia.com> Reviewed-on: http://git-master/r/417523 Reviewed-by: Peter Kim <pekim@nvidia.com> Tested-by: Peter Kim <pekim@nvidia.com>
-rw-r--r--drivers/hid/hid-core.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index 0ba1b5d70e28..521df4d07491 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -367,7 +367,7 @@ static int hid_parser_global(struct hid_parser *parser, struct hid_item *item)
case HID_GLOBAL_ITEM_TAG_REPORT_SIZE:
parser->global.report_size = item_udata(item);
- if (parser->global.report_size > 96) {
+ if (parser->global.report_size > 128) {
hid_err(parser->device, "invalid report_size %d\n",
parser->global.report_size);
return -1;