Input: wacom - add some comments to wacom_parse_hid
Signed-off-by: Chris Bagwell <chris@cnpbagwell.com> Acked-by: Ping Cheng <pingc@wacom.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
This commit is contained in:
parent
fc72bf758f
commit
428f85884b
|
@ -165,7 +165,37 @@ static void wacom_close(struct input_dev *dev)
|
|||
usb_autopm_put_interface(wacom->intf);
|
||||
}
|
||||
|
||||
static int wacom_parse_hid(struct usb_interface *intf, struct hid_descriptor *hid_desc,
|
||||
/*
|
||||
* Interface Descriptor of wacom devices can be incomplete and
|
||||
* inconsistent so wacom_features table is used to store stylus
|
||||
* device's packet lengths, various maximum values, and tablet
|
||||
* resolution based on product ID's.
|
||||
*
|
||||
* For devices that contain 2 interfaces, wacom_features table is
|
||||
* inaccurate for the touch interface. Since the Interface Descriptor
|
||||
* for touch interfaces has pretty complete data, this function exists
|
||||
* to query tablet for this missing information instead of hard coding in
|
||||
* an additional table.
|
||||
*
|
||||
* A typical Interface Descriptor for a stylus will contain a
|
||||
* boot mouse application collection that is not of interest and this
|
||||
* function will ignore it.
|
||||
*
|
||||
* It also contains a digitizer application collection that also is not
|
||||
* of interest since any information it contains would be duplicate
|
||||
* of what is in wacom_features. Usually it defines a report of an array
|
||||
* of bytes that could be used as max length of the stylus packet returned.
|
||||
* If it happens to define a Digitizer-Stylus Physical Collection then
|
||||
* the X and Y logical values contain valid data but it is ignored.
|
||||
*
|
||||
* A typical Interface Descriptor for a touch interface will contain a
|
||||
* Digitizer-Finger Physical Collection which will define both logical
|
||||
* X/Y maximum as well as the physical size of tablet. Since touch
|
||||
* interfaces haven't supported pressure or distance, this is enough
|
||||
* information to override invalid values in the wacom_features table.
|
||||
*/
|
||||
static int wacom_parse_hid(struct usb_interface *intf,
|
||||
struct hid_descriptor *hid_desc,
|
||||
struct wacom_features *features)
|
||||
{
|
||||
struct usb_device *dev = interface_to_usbdev(intf);
|
||||
|
@ -306,6 +336,11 @@ static int wacom_parse_hid(struct usb_interface *intf, struct hid_descriptor *hi
|
|||
i++;
|
||||
break;
|
||||
|
||||
/*
|
||||
* Requiring Stylus Usage will ignore boot mouse
|
||||
* X/Y values and some cases of invalid Digitizer X/Y
|
||||
* values commonly reported.
|
||||
*/
|
||||
case HID_USAGE_STYLUS:
|
||||
pen = 1;
|
||||
i++;
|
||||
|
|
Loading…
Reference in a new issue