Commit 9f740ffa authored by Srinivas Pandruvada's avatar Srinivas Pandruvada Committed by Jonathan Cameron

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: default avatarSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: default avatarJonathan Cameron <jic23@kernel.org>
parent 930ba4a3
...@@ -112,13 +112,15 @@ static int sensor_hub_get_physical_device_count( ...@@ -112,13 +112,15 @@ static int sensor_hub_get_physical_device_count(
static void sensor_hub_fill_attr_info( static void sensor_hub_fill_attr_info(
struct hid_sensor_hub_attribute_info *info, struct hid_sensor_hub_attribute_info *info,
s32 index, s32 report_id, s32 units, s32 unit_expo, s32 size) s32 index, s32 report_id, struct hid_field *field)
{ {
info->index = index; info->index = index;
info->report_id = report_id; info->report_id = report_id;
info->units = units; info->units = field->unit;
info->unit_expo = unit_expo; info->unit_expo = field->unit_exponent;
info->size = size/8; info->size = (field->report_size * field->report_count)/8;
info->logical_minimum = field->logical_minimum;
info->logical_maximum = field->logical_maximum;
} }
static struct hid_sensor_hub_callbacks *sensor_hub_get_callback( static struct hid_sensor_hub_callbacks *sensor_hub_get_callback(
...@@ -325,9 +327,7 @@ int sensor_hub_input_get_attribute_info(struct hid_sensor_hub_device *hsdev, ...@@ -325,9 +327,7 @@ int sensor_hub_input_get_attribute_info(struct hid_sensor_hub_device *hsdev,
if (field->physical == usage_id && if (field->physical == usage_id &&
field->logical == attr_usage_id) { field->logical == attr_usage_id) {
sensor_hub_fill_attr_info(info, i, report->id, sensor_hub_fill_attr_info(info, i, report->id,
field->unit, field->unit_exponent, field);
field->report_size *
field->report_count);
ret = 0; ret = 0;
} else { } else {
for (j = 0; j < field->maxusage; ++j) { for (j = 0; j < field->maxusage; ++j) {
...@@ -336,11 +336,7 @@ int sensor_hub_input_get_attribute_info(struct hid_sensor_hub_device *hsdev, ...@@ -336,11 +336,7 @@ int sensor_hub_input_get_attribute_info(struct hid_sensor_hub_device *hsdev,
field->usage[j].collection_index == field->usage[j].collection_index ==
collection_index) { collection_index) {
sensor_hub_fill_attr_info(info, sensor_hub_fill_attr_info(info,
i, report->id, i, report->id, field);
field->unit,
field->unit_exponent,
field->report_size *
field->report_count);
ret = 0; ret = 0;
break; break;
} }
......
...@@ -42,6 +42,8 @@ struct hid_sensor_hub_attribute_info { ...@@ -42,6 +42,8 @@ struct hid_sensor_hub_attribute_info {
s32 units; s32 units;
s32 unit_expo; s32 unit_expo;
s32 size; s32 size;
s32 logical_minimum;
s32 logical_maximum;
}; };
/** /**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment