alistair23-linux/drivers/hid
Archana Patni f58b8487bc HID: i2c-hid: hid report descriptor retrieval changes
Reading the partial HID Descriptor is causing a firmware lockup in some
sensor hubs. Instead of a partial read, this patch implements the
i2c hid fetch using a fixed descriptor size (30 bytes) followed by a
verification of the BCDVersion (V01.00), and value stored in
wHIDDescLength (30 Bytes) for V1.00 descriptors.

As per i2c hid spec, this is the preferred model.

From hid-over-i2c-protocol-spec-v1-0:

  There are a variety of ways a HOST may choose to retrieve
  the HID Descriptor from the DEVICE. The following is a preferred
  implementation but should not be considered the only implementation.
  A HOST may read the entire HID Descriptor in a single read by
  issuing a read for 30 Bytes to get the entire HID Descriptor
  from the DEVICE.However, the HOST is responsible for validating that

  1. The BCDVersion is V01.00 (later revisions may have different
     descriptor lengths), and

  2. The value stored in wHIDDescLength is 30 (Bytes) for V1.00
     descriptors.

Reported-by: Joe Tijerina <joe.tijerina@st.com>
Signed-off-by: Archana Patni <archana.patni@intel.com>
Signed-off-by: Subramony Sesha <subramony.sesha@intel.com>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
2014-05-13 11:19:22 +02:00
..
i2c-hid HID: i2c-hid: hid report descriptor retrieval changes 2014-05-13 11:19:22 +02:00
usbhid HID: add NO_INIT_REPORTS quirk for Synaptics Touch Pad V 103S 2014-05-05 15:57:21 +02:00
hid-a4tech.c
hid-apple.c HID: apple: add Apple wireless keyboard 2011 JIS model support 2014-02-06 14:35:18 +01:00
hid-appleir.c HID: appleir: force input to be set 2013-11-21 09:58:19 +01:00
hid-aureal.c
hid-axff.c HID: enable Mayflash USB Gamecube Adapter 2013-11-12 19:06:23 +01:00
hid-belkin.c
hid-cherry.c
hid-chicony.c
hid-core.c HID: core: fix computation of the report size 2014-05-05 15:54:40 +02:00
hid-cp2112.c HID: cp2112: remove the last hid_output_raw_report() call 2014-03-14 15:29:55 +01:00
hid-cypress.c
hid-debug.c HID: debug: add labels for some new buttons 2013-12-17 13:54:40 +01:00
hid-dr.c
hid-elecom.c
hid-elo.c HID: hid-elo: some systems cannot stomach work around 2013-09-25 11:28:50 +02:00
hid-emsff.c
hid-ezkey.c
hid-gaff.c
hid-generic.c
hid-gyration.c
hid-holtek-kbd.c
hid-holtek-mouse.c HID: hid-holtek-mouse: add new a070 mouse 2014-01-16 22:58:43 +01:00
hid-holtekff.c HID: hid-holtekff: don't push static constants on stack for %*ph 2013-08-05 11:29:57 +02:00
hid-huion.c
hid-hyperv.c Merge branch 'for-3.15/hid-core-ll-transport-cleanup' into for-linus 2014-04-01 19:05:09 +02:00
hid-icade.c
hid-ids.h HID: sensor-hub: Add in quirk for sensor hub in Lenovo Ideapad Yogas 2014-05-06 01:01:49 +02:00
hid-input.c Merge branch 'for-3.15/microsoft' into for-linus 2014-04-01 19:06:41 +02:00
hid-kensington.c
hid-keytouch.c
hid-kye.c HID: kye: Fix missing break in kye_report_fixup() 2013-12-02 15:17:04 +01:00
hid-lcpower.c
hid-lenovo-tpkbd.c HID: lenovo-tpkbd: remove usb dependency 2013-09-24 11:47:47 +02:00
hid-lg.c HID: replace hid_output_raw_report with hid_hw_raw_request for feature requests 2014-02-17 14:56:50 +01:00
hid-lg.h
hid-lg2ff.c HID: logitech - lg2ff: Add IDs for Formula Vibration Feedback Wheel 2013-10-09 12:06:02 +02:00
hid-lg3ff.c HID: LG: validate HID output report details 2013-09-13 15:12:39 +02:00
hid-lg4ff.c HID: hid-lg4ff: Support new version of G27 2014-03-14 15:43:34 +01:00
hid-lgff.c HID: LG: validate HID output report details 2013-09-13 15:12:39 +02:00
hid-logitech-dj.c HID: logitech-dj: remove hid_output_raw_report call 2014-02-17 14:55:52 +01:00
hid-logitech-dj.h
hid-magicmouse.c HID: replace hid_output_raw_report with hid_hw_raw_request for feature requests 2014-02-17 14:56:50 +01:00
hid-microsoft.c Revert "HID: microsoft: Add ID's for Surface Type/Touch Cover 2" 2014-04-07 09:54:43 +02:00
hid-monterey.c
hid-multitouch.c HID: multitouch: add support of EliteGroup 05D8 panels 2014-04-24 11:45:56 +02:00
hid-ntrig.c HID: ntrig: validate feature report details 2013-09-04 12:00:23 +02:00
hid-ortek.c
hid-petalynx.c
hid-picolcd.h
hid-picolcd_backlight.c
hid-picolcd_cir.c [media] rc: abstract access to allowed/enabled protocols 2014-03-11 13:24:39 -03:00
hid-picolcd_core.c HID: picolcd_core: validate output report details 2013-09-04 12:03:27 +02:00
hid-picolcd_debugfs.c
hid-picolcd_fb.c HID: picolcd: Prevent NULL pointer dereference on _remove() 2013-09-02 13:36:50 +02:00
hid-picolcd_lcd.c
hid-picolcd_leds.c
hid-pl.c HID: pantherlord: validate output report details 2013-09-04 11:58:32 +02:00
hid-primax.c
hid-prodikeys.c HID: prodikeys: Convert to snd_card_new() with a device pointer 2014-02-14 08:14:09 +01:00
hid-roccat-arvo.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid 2013-09-06 09:30:36 -07:00
hid-roccat-arvo.h
hid-roccat-common.c HID: roccat: generalize some common code 2013-10-30 14:17:31 +01:00
hid-roccat-common.h HID: roccat: generalize some common code 2013-10-30 14:17:31 +01:00
hid-roccat-isku.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid 2013-09-06 09:30:36 -07:00
hid-roccat-isku.h
hid-roccat-kone.c HID: roccat: Fix "cannot create duplicate filename" problems 2013-09-30 10:51:31 +02:00
hid-roccat-kone.h
hid-roccat-koneplus.c HID: roccat: Fix "cannot create duplicate filename" problems 2013-09-30 10:51:31 +02:00
hid-roccat-koneplus.h
hid-roccat-konepure.c HID: roccat: generalize some common code 2013-10-30 14:17:31 +01:00
hid-roccat-kovaplus.c HID: roccat: fix Coverity CID 141438 2013-11-04 10:55:20 +01:00
hid-roccat-kovaplus.h
hid-roccat-lua.c
hid-roccat-lua.h
hid-roccat-pyra.c HID: roccat: Fix "cannot create duplicate filename" problems 2013-09-30 10:51:31 +02:00
hid-roccat-pyra.h
hid-roccat-ryos.c HID: roccat: add support for Ryos MK keyboards 2013-10-30 14:17:31 +01:00
hid-roccat-savu.c HID: roccat: generalize some common code 2013-10-30 14:17:31 +01:00
hid-roccat-savu.h HID: roccat: generalize some common code 2013-10-30 14:17:31 +01:00
hid-roccat.c
hid-saitek.c
hid-samsung.c
hid-sensor-hub.c HID: sensor-hub: Add in quirk for sensor hub in Lenovo Ideapad Yogas 2014-05-06 01:01:49 +02:00
hid-sjoy.c
hid-sony.c HID: sony: Fix cancel_work_sync mismerge 2014-04-03 14:23:49 +02:00
hid-speedlink.c HID: Fix Speedlink VAD Cezanne support for some devices 2013-08-26 13:51:10 +02:00
hid-steelseries.c HID: steelseries: validate output report details 2013-09-13 15:12:28 +02:00
hid-sunplus.c
hid-thingm.c HID: replace hid_output_raw_report with hid_hw_raw_request for feature requests 2014-02-17 14:56:50 +01:00
hid-tivo.c
hid-tmff.c
hid-topseed.c
hid-twinhan.c
hid-uclogic.c
hid-wacom.c HID: replace hid_output_raw_report with hid_hw_raw_request for feature requests 2014-02-17 14:56:50 +01:00
hid-waltop.c
hid-wiimote-core.c HID: wiimote: replace hid_output_raw_report with hid_hw_output_report for output requests 2014-02-17 14:57:17 +01:00
hid-wiimote-debug.c
hid-wiimote-modules.c HID: wiimote: add pro-controller analog stick calibration 2013-10-30 14:13:29 +01:00
hid-wiimote.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid 2013-11-15 16:48:22 -08:00
hid-xinmo.c HID: use module_hid_driver() to simplify the code 2013-08-26 13:23:04 +02:00
hid-zpff.c HID: zeroplus: validate output report details 2013-09-13 15:11:34 +02:00
hid-zydacron.c
hidraw.c Merge branch 'for-3.15/hid-core-ll-transport-cleanup' into for-linus 2014-04-01 19:05:09 +02:00
Kconfig Merge branch 'for-3.15/sony' into for-3.15/hid-core-ll-transport-cleanup 2014-03-14 15:30:16 +01:00
Makefile HID: add hid-cp2112 driver 2014-02-17 23:33:17 +01:00
uhid.c HID: uhid: Add UHID_CREATE2 + UHID_INPUT2 2014-04-01 18:27:33 +02:00