-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Looks good, and I can confirm it works fine.

Signed-off-by: Rafi Rubin <r...@seas.upenn.edu>

On 02/08/13 09:51, Benjamin Tissoires wrote:
> The use of input_configured() allows the ntrig driver to actually 
> change the name of the input and its bitmask before it is added to
> the input subsystem. Thus, the logs are coherents and udev catch
> the real bitmask when the device is added.
> 
> Signed-off-by: Benjamin Tissoires <benjamin.tissoi...@gmail.com> 
> --- drivers/hid/hid-ntrig.c | 68
> ++++++++++++++++++++++++------------------------- 1 file changed,
> 34 insertions(+), 34 deletions(-)
> 
> diff --git a/drivers/hid/hid-ntrig.c b/drivers/hid/hid-ntrig.c 
> index 2ffc0e3..7757e82 100644 --- a/drivers/hid/hid-ntrig.c +++
> b/drivers/hid/hid-ntrig.c @@ -858,12 +858,43 @@ not_claimed_input: 
> return 1; }
> 
> +static void ntrig_input_configured(struct hid_device *hid, +
> struct hid_input *hidinput) + +{ +    struct input_dev *input =
> hidinput->input; + +  if (hidinput->report->maxfield < 1) +
> return; + +   switch (hidinput->report->field[0]->application) { +
> case HID_DG_PEN: +            input->name = "N-Trig Pen"; +           break; 
> +        case
> HID_DG_TOUCHSCREEN: +         /* These keys are redundant for fingers,
> clear them +           * to prevent incorrect identification */ +
> __clear_bit(BTN_TOOL_PEN, input->keybit); +
> __clear_bit(BTN_TOOL_FINGER, input->keybit); +                
> __clear_bit(BTN_0,
> input->keybit); +             __set_bit(BTN_TOOL_DOUBLETAP, input->keybit); +
> /* +           * The physical touchscreen (single touch) +             * 
> input has a
> value for physical, whereas +          * the multitouch only has logical
> input +                * fields. +             */ +           input->name =
> (hidinput->report->field[0]->physical) ? +                                    
>                 "N-Trig
> Touchscreen" : +                                                      "N-Trig 
> MultiTouch"; +          break; +        } +} + 
> static int ntrig_probe(struct hid_device *hdev, const struct
> hid_device_id *id) { int ret; struct ntrig_data *nd; -        struct
> hid_input *hidinput; -        struct input_dev *input; struct hid_report
> *report;
> 
> if (id->driver_data) @@ -901,38 +932,6 @@ static int
> ntrig_probe(struct hid_device *hdev, const struct hid_device_id
> *id) goto err_free; }
> 
> - -   list_for_each_entry(hidinput, &hdev->inputs, list) { -          if
> (hidinput->report->maxfield < 1) -                    continue; - -           
> input =
> hidinput->input; -            switch
> (hidinput->report->field[0]->application) { -         case HID_DG_PEN: -
> input->name = "N-Trig Pen"; -                 break; -                case 
> HID_DG_TOUCHSCREEN: 
> -                     /* These keys are redundant for fingers, clear them -   
>                  * to
> prevent incorrect identification */ -                 
> __clear_bit(BTN_TOOL_PEN,
> input->keybit); -                     __clear_bit(BTN_TOOL_FINGER, 
> input->keybit); -
> __clear_bit(BTN_0, input->keybit); -
> __set_bit(BTN_TOOL_DOUBLETAP, input->keybit); -                       /* -    
>                  * The
> physical touchscreen (single touch) -                  * input has a value for
> physical, whereas -                    * the multitouch only has logical 
> input -
> * fields. -                    */ -                   input->name = -
> (hidinput->report->field[0] -                          ->physical) ? -        
>                         "N-Trig
> Touchscreen" : -                              "N-Trig MultiTouch"; -          
>         break; -                } -     } - /*
> This is needed for devices with more recent firmware versions */ 
> report =
> hdev->report_enum[HID_FEATURE_REPORT].report_id_hash[0x0a]; if
> (report) { @@ -1023,6 +1022,7 @@ static struct hid_driver
> ntrig_driver = { .remove = ntrig_remove, .input_mapping =
> ntrig_input_mapping, .input_mapped = ntrig_input_mapped, +
> .input_configured = ntrig_input_configured, .usage_table =
> ntrig_grabbed_usages, .event = ntrig_event, };

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQIcBAEBAgAGBQJRIZQxAAoJEPILXytRLnK26REP+weeAIqA4kfDn+tWqFOXIbcL
u65bkvNQmlEqx/mUeO7i7+tOsgTJnKpMy3ec5zsfyZd5DKs2yc3DTvrNXZbnqumZ
NkUYe7+aob1ge4+edJKw9nWDHp2E1sCm7VDNXVcEUTQN1ntMp/BjMenhDjgWhXVw
/3meslXrD3TOvXx/FzDLzJdV1WdBPeOHTHZq/yxsI3Z5jWCFba/Xz1CHc62sd2Og
hRTe9CthK3Hq9EQJXOc8qSBgNkhQ6XtBZb7KTw7FXAyKH3htus6t3c57ZPqGUUER
i6rasUYs3QGQQDG3tEU4wnWEtkS0i+9SO9L8tkUJwTKmdn7rDd5oAwovwMghkEkb
L1+tKL8EamC1oD8CMfHa7zCOTlkfTT0eRJiyHIErWpxn+VQxx2fpR7/MS2fF9n60
ecNGCRGrQo1UvIpYHmmGfigptcp6kyDgl8H9KBjafbQI5OWrJanwPi3aIXYhZmo8
XLjqCRJfgeJKFZD3mTdgqKL0hpNldskNUUauFD5GJblAB3UQ/MZ5Nmm+hWi3Y7y2
e0zxkPzw1puBFNNA06KLUNJ1DyibBZTPua1h36bD+OtqcRXIi8cdMHVf7bZhWSUK
ePVxgYjbgybAh4gMTgRQP/ucEuc6eDHGQ6MRe16ezwk3+fvUiLPntAtTXro1e3ck
nN0+r/NQSn7PKOdCqgeF
=ltkV
-----END PGP SIGNATURE-----
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to