Re: [PATCH] HID: ntrig: use input_configured() callback to set thename

From: Rafi Rubin
Date: Sun Feb 17 2013 - 21:45:00 EST


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

Looks good, and I can confirm it works fine.

Signed-off-by: Rafi Rubin <rafi@xxxxxxxxxxxxxx>

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.tissoires@xxxxxxxxx>
> --- 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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/