return;
}
+ /*
+ * Ignore out-of-range values as per HID specification,
+ * section 5.10 and 6.2.25, when NULL state bit is present.
+ * When it's not, clamp the value to match Microsoft's input
+ * driver as mentioned in "Required HID usages for digitizers":
+ * https://msdn.microsoft.com/en-us/library/windows/hardware/dn672278(v=vs.85).asp
+ *
+ * The logical_minimum < logical_maximum check is done so that we
+ * don't unintentionally discard values sent by devices which
+ * don't specify logical min and max.
+ */
+ if ((field->flags & HID_MAIN_ITEM_VARIABLE) &&
+ field->logical_minimum < field->logical_maximum) {
+ if (field->flags & HID_MAIN_ITEM_NULL_STATE &&
+ (value < field->logical_minimum ||
+ value > field->logical_maximum)) {
+ dbg_hid("Ignoring out-of-range value %x\n", value);
+ return;
+ }
+ value = clamp(value,
+ field->logical_minimum,
+ field->logical_maximum);
+ }
+
switch (usage->hid) {
case HID_DG_INVERT:
*quirks = value ? (*quirks | HID_QUIRK_INVERT) : (*quirks & ~HID_QUIRK_INVERT);
}
/*
- * Ignore out-of-range values as per HID specification,
- * section 5.10 and 6.2.25, when NULL state bit is present.
- * When it's not, clamp the value to match Microsoft's input
- * driver as mentioned in "Required HID usages for digitizers":
- * https://msdn.microsoft.com/en-us/library/windows/hardware/dn672278(v=vs.85).asp
- *
- * The logical_minimum < logical_maximum check is done so that we
- * don't unintentionally discard values sent by devices which
- * don't specify logical min and max.
- */
- if ((field->flags & HID_MAIN_ITEM_VARIABLE) &&
- (field->logical_minimum < field->logical_maximum)) {
- if (field->flags & HID_MAIN_ITEM_NULL_STATE &&
- (value < field->logical_minimum ||
- value > field->logical_maximum)) {
- dbg_hid("Ignoring out-of-range value %x\n", value);
- return;
- }
- value = clamp(value,
- field->logical_minimum,
- field->logical_maximum);
- }
-
- /*
* Ignore reports for absolute data if the data didn't change. This is
* not only an optimization but also fixes 'dead' key reports. Some
* RollOver implementations for localized keys (like BACKSLASH/PIPE; HID