Thread (4 messages) 4 messages, 4 authors, 2013-02-20

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

From: Rafi Rubin <hidden>
Date: 2013-02-18 02:44:53
Also in: lkml

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

Looks good, and I can confirm it works fine.

Signed-off-by: Rafi Rubin <redacted>

On 02/08/13 09:51, Benjamin Tissoires wrote:
quoted hunk ↗ jump to hunk
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 <redacted> 
--- 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-----
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help