You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
HID: hid-sensor-hub: fix attribute read for logical usage id
For defining enumeration values like report or power status events, the
enumeration usage ids are enclosed in a logical collection. In this case we
need to match logical usage id for pending read on this usage id. For example,
in the below field, when read is requested for 0319, the report will
contain one of the status usages like 850, 851 etc. In this case the raw
event will not match 0319. So when logical collection matches, then wake
up the pending thread.
Physical(Sensor.OtherCustom)
Logical(Sensor.0319)
Application(Sensor.Sensor)
Usage(6)
Sensor.0850
Sensor.0851
Sensor.0852
Sensor.0853
Sensor.0854
Sensor.0855
Logical Minimum(1)
Logical Maximum(5)
Report Size(8)
Report Count(1)
Report Offset(24)
Flags( Array Absolute )
Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
committed by
Jiri Kosina
parent
3950e03389
commit
eb96483349
@@ -495,8 +495,10 @@ static int sensor_hub_raw_event(struct hid_device *hdev,
|
||||
ptr += sz;
|
||||
continue;
|
||||
}
|
||||
if (hsdev->pending.status && hsdev->pending.attr_usage_id ==
|
||||
report->field[i]->usage->hid) {
|
||||
if (hsdev->pending.status && (hsdev->pending.attr_usage_id ==
|
||||
report->field[i]->usage->hid ||
|
||||
hsdev->pending.attr_usage_id ==
|
||||
report->field[i]->logical)) {
|
||||
hid_dbg(hdev, "data was pending ...\n");
|
||||
hsdev->pending.raw_data = kmemdup(ptr, sz, GFP_ATOMIC);
|
||||
if (hsdev->pending.raw_data)
|
||||
|
||||
Reference in New Issue
Block a user