HID: increase maximum global item tag report size to 256
authorSong, Hongyan <hongyan.song@intel.com>
Fri, 3 Aug 2018 06:45:59 +0000 (14:45 +0800)
committerJiri Kosina <jkosina@suse.cz>
Tue, 28 Aug 2018 11:43:53 +0000 (13:43 +0200)
The maximum globale report size has changed from 32->...->96->128 in the past
years.  With the development usage of HID, the report_size max value 128 cannot
satisfy all requirements.

There are applications need to expose intrinsic metadata to camera stabilizing
applications such as 3DFE application. 3DFE intrinsic is designed to express
environmental information about sensor that may dynamically change while the
sensor is running (such data include noise spectral density, bias standard
deviation)

A sensor data field is SENSOR_VALUE_PAIR that consists of a PROPERTYKEY and
PROPVARIANT pair. It need to report a unique PROPERTYKEY for each data field.

Take “Noise Spectral Density” as an example, it report count will be
defined as below:

"Size of Property key GUID(16 Byte) + property key index(4 Byte) +
size of Noise Spectral Density value(4 Byte)"

In this case, the data report max is totally 192(24Byte), which is larger than
128, while max size 128 blocked it as illegal length. So increase the report
size to satisfy it and more demands in the future.

Signed-off-by: Song Hongyan <hongyan.song@intel.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/hid-core.c

index 3da354af7a0aac6ca129124eb6e511ea32c9535b..ef009db512ee09b826f051a5c4211ed831412c9c 100644 (file)
@@ -406,7 +406,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 > 128) {
+               if (parser->global.report_size > 256) {
                        hid_err(parser->device, "invalid report_size %d\n",
                                        parser->global.report_size);
                        return -1;