mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-06 05:02:31 +00:00
HID: Recognize sensors with application collections
According to HUTRR39 logical sensor devices may be nested inside physical collections or may be specified in multiple top-level application collections (see page 59, strategies 1 and 2). However, the current code was only recognizing those with physical collections. This issue turned up in the T2 MacBook Pros which define the ALS in a top-level application collection. Signed-off-by: Ronald Tschalär <ronald@innovation.ch> Signed-off-by: Aditya Garg <gargaditya08@live.com> Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
parent
52d2253469
commit
e04955db6a
@ -804,7 +804,8 @@ static void hid_scan_collection(struct hid_parser *parser, unsigned type)
|
||||
int i;
|
||||
|
||||
if (((parser->global.usage_page << 16) == HID_UP_SENSOR) &&
|
||||
type == HID_COLLECTION_PHYSICAL)
|
||||
(type == HID_COLLECTION_PHYSICAL ||
|
||||
type == HID_COLLECTION_APPLICATION))
|
||||
hid->group = HID_GROUP_SENSOR_HUB;
|
||||
|
||||
if (hid->vendor == USB_VENDOR_ID_MICROSOFT &&
|
||||
|
@ -397,7 +397,8 @@ int sensor_hub_input_get_attribute_info(struct hid_sensor_hub_device *hsdev,
|
||||
for (i = 0; i < report->maxfield; ++i) {
|
||||
field = report->field[i];
|
||||
if (field->maxusage) {
|
||||
if (field->physical == usage_id &&
|
||||
if ((field->physical == usage_id ||
|
||||
field->application == usage_id) &&
|
||||
(field->logical == attr_usage_id ||
|
||||
field->usage[0].hid ==
|
||||
attr_usage_id) &&
|
||||
@ -506,7 +507,8 @@ static int sensor_hub_raw_event(struct hid_device *hdev,
|
||||
collection->usage);
|
||||
|
||||
callback = sensor_hub_get_callback(hdev,
|
||||
report->field[i]->physical,
|
||||
report->field[i]->physical ? report->field[i]->physical :
|
||||
report->field[i]->application,
|
||||
report->field[i]->usage[0].collection_index,
|
||||
&hsdev, &priv);
|
||||
if (!callback) {
|
||||
|
Loading…
Reference in New Issue
Block a user