Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

HID: hid-sensor-hub: Add logical min and max

Exporting logical minimum and maximum of HID fields as part of the
hid sensor attribute info. This can be used for range checking and
to calculate enumeration base for NAry fields of HID sensor hub.

Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>

authored by

Srinivas Pandruvada and committed by
Jonathan Cameron
9f740ffa 930ba4a3

+10 -12
+8 -12
drivers/hid/hid-sensor-hub.c
··· 112 112 113 113 static void sensor_hub_fill_attr_info( 114 114 struct hid_sensor_hub_attribute_info *info, 115 - s32 index, s32 report_id, s32 units, s32 unit_expo, s32 size) 115 + s32 index, s32 report_id, struct hid_field *field) 116 116 { 117 117 info->index = index; 118 118 info->report_id = report_id; 119 - info->units = units; 120 - info->unit_expo = unit_expo; 121 - info->size = size/8; 119 + info->units = field->unit; 120 + info->unit_expo = field->unit_exponent; 121 + info->size = (field->report_size * field->report_count)/8; 122 + info->logical_minimum = field->logical_minimum; 123 + info->logical_maximum = field->logical_maximum; 122 124 } 123 125 124 126 static struct hid_sensor_hub_callbacks *sensor_hub_get_callback( ··· 327 325 if (field->physical == usage_id && 328 326 field->logical == attr_usage_id) { 329 327 sensor_hub_fill_attr_info(info, i, report->id, 330 - field->unit, field->unit_exponent, 331 - field->report_size * 332 - field->report_count); 328 + field); 333 329 ret = 0; 334 330 } else { 335 331 for (j = 0; j < field->maxusage; ++j) { ··· 336 336 field->usage[j].collection_index == 337 337 collection_index) { 338 338 sensor_hub_fill_attr_info(info, 339 - i, report->id, 340 - field->unit, 341 - field->unit_exponent, 342 - field->report_size * 343 - field->report_count); 339 + i, report->id, field); 344 340 ret = 0; 345 341 break; 346 342 }
+2
include/linux/hid-sensor-hub.h
··· 42 42 s32 units; 43 43 s32 unit_expo; 44 44 s32 size; 45 + s32 logical_minimum; 46 + s32 logical_maximum; 45 47 }; 46 48 47 49 /**