lkml.org 
[lkml]   [2012]   [Jan]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Date
SubjectRe: [PATCH v2 2/3] HID: multitouch: add control of the feature "Maximum Contact Number"
Hi Benjamin,

> If the programmer fills the field maxcontacts in the mt_class,
> then the driver will set the feature to this value. It is safe
> for current drivers as the feature is read/right in the HID norm

read/write, I presume.

> @@ -609,6 +612,36 @@ static void mt_set_input_mode(struct hid_device *hdev)
> }
> }
>
> +static void mt_set_maxcontacts(struct hid_device *hdev)
> +{
> + struct mt_device *td = hid_get_drvdata(hdev);
> + struct hid_report *r;
> + struct hid_report_enum *re;
> + int fieldmax, max;
> +
> + if (td->maxcontact_report_id < 0)
> + return;
> +
> + if (!td->mtclass.maxcontacts)
> + return;
> +
> + re = &(hdev->report_enum[HID_FEATURE_REPORT]);

Why parenthesis here?

> + r = re->report_id_hash[td->maxcontact_report_id];
> + if (r) {
> + max = td->mtclass.maxcontacts;
> + fieldmax = r->field[0]->logical_maximum;
> + hid_info(hdev, "%s: value = %d / %d / %d\n", __func__,
> + r->field[0]->value[0],
> + td->mtclass.maxcontacts,
> + fieldmax);

Looks like debug information, please downplay or remove.

> + max = fieldmax < max ? fieldmax : max;

There are kernel variants of min/max functions to consider here.

> + if (r->field[0]->value[0] != max) {
> + r->field[0]->value[0] = max;
> + usbhid_submit_report(hdev, r, USB_DIR_OUT);
> + }

So the report is in fact only set when different... Do we know for
which current devices this is true?

Thanks,
Henrik


\
 
 \ /
  Last update: 2012-01-20 17:21    [from the cache]
©2003-2011 Jasper Spaans