* [PATCH 0/3] last merge in hid-multitouch
@ 2011-11-29 12:13 Benjamin Tissoires
2011-11-29 12:13 ` [PATCH 1/3] HID: multitouch: merge quanta driver into hid-multitouch Benjamin Tissoires
` (3 more replies)
0 siblings, 4 replies; 10+ messages in thread
From: Benjamin Tissoires @ 2011-11-29 12:13 UTC (permalink / raw)
To: Dmitry Torokhov, Henrik Rydberg, Benjamin Tissoires, Jiri Kosina,
Stephane Chatty, linux-input, linux-kernel
Hi Guys,
Here are some multitouch updates.
The first one is the last merge to handle all win7 compliant multitouch
devices in hid-multitouch (finally, we've got it!).
The others are the migration to input_register to allocate items before
the input is ready, and another VID/PID.
Cheers,
Benjamin
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 1/3] HID: multitouch: merge quanta driver into hid-multitouch
2011-11-29 12:13 [PATCH 0/3] last merge in hid-multitouch Benjamin Tissoires
@ 2011-11-29 12:13 ` Benjamin Tissoires
2011-11-30 14:41 ` Jiri Kosina
2011-11-29 12:13 ` [PATCH 2/3] HID: multitouch: use input_register callback Benjamin Tissoires
` (2 subsequent siblings)
3 siblings, 1 reply; 10+ messages in thread
From: Benjamin Tissoires @ 2011-11-29 12:13 UTC (permalink / raw)
To: Dmitry Torokhov, Henrik Rydberg, Benjamin Tissoires, Jiri Kosina,
Stephane Chatty, linux-input, linux-kernel
From: Benjamin Tissoires <benjamin.tissoires@gmail.com>
This patch merge the last old-style hid multitouch driver to
the generic one.
It also adds 2 more quanta pids.
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
---
drivers/hid/Kconfig | 7 +-
drivers/hid/Makefile | 1 -
drivers/hid/hid-ids.h | 4 +-
drivers/hid/hid-multitouch.c | 23 +++-
drivers/hid/hid-quanta.c | 261 ------------------------------------------
5 files changed, 23 insertions(+), 273 deletions(-)
delete mode 100644 drivers/hid/hid-quanta.c
diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
index 741f92d..b8e98d0 100644
--- a/drivers/hid/Kconfig
+++ b/drivers/hid/Kconfig
@@ -355,6 +355,7 @@ config HID_MULTITOUCH
- MosArt dual-touch panels
- PenMount dual touch panels
- Pixcir dual touch panels
+ - Quanta panels
- eGalax dual-touch panels, including the Joojoo and Wetab tablets
- Stantum multitouch panels
- Touch International Panels
@@ -471,12 +472,6 @@ config HID_PRIMAX
Support for Primax devices that are not fully compliant with the
HID standard.
-config HID_QUANTA
- tristate "Quanta Optical Touch panels"
- depends on USB_HID
- ---help---
- Support for Quanta Optical Touch dual-touch panels.
-
config HID_ROCCAT
tristate "Roccat special event support"
depends on USB_HID
diff --git a/drivers/hid/Makefile b/drivers/hid/Makefile
index 2be5500..aee5f58 100644
--- a/drivers/hid/Makefile
+++ b/drivers/hid/Makefile
@@ -60,7 +60,6 @@ obj-$(CONFIG_HID_MULTITOUCH) += hid-multitouch.o
obj-$(CONFIG_HID_NTRIG) += hid-ntrig.o
obj-$(CONFIG_HID_ORTEK) += hid-ortek.o
obj-$(CONFIG_HID_PRODIKEYS) += hid-prodikeys.o
-obj-$(CONFIG_HID_QUANTA) += hid-quanta.o
obj-$(CONFIG_HID_PANTHERLORD) += hid-pl.o
obj-$(CONFIG_HID_PETALYNX) += hid-petalynx.o
obj-$(CONFIG_HID_PICOLCD) += hid-picolcd.o
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index cf8c866..ebfad17 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -584,7 +584,9 @@
#define USB_DEVICE_ID_PRODIGE_CORDLESS 0x3062
#define USB_VENDOR_ID_QUANTA 0x0408
-#define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH 0x3000
+#define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH 0x3000
+#define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3001 0x3001
+#define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3008 0x3008
#define USB_DEVICE_ID_PIXART_IMAGING_INC_OPTICAL_TOUCH_SCREEN 0x3001
#define USB_VENDOR_ID_ROCCAT 0x1e7d
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
index f0f3632..91c13bc 100644
--- a/drivers/hid/hid-multitouch.c
+++ b/drivers/hid/hid-multitouch.c
@@ -88,10 +88,11 @@ struct mt_device {
#define MT_CLS_SERIAL 0x0002
#define MT_CLS_CONFIDENCE 0x0003
-#define MT_CLS_CONFIDENCE_MINUS_ONE 0x0004
-#define MT_CLS_DUAL_INRANGE_CONTACTID 0x0005
-#define MT_CLS_DUAL_INRANGE_CONTACTNUMBER 0x0006
-#define MT_CLS_DUAL_NSMU_CONTACTID 0x0007
+#define MT_CLS_CONFIDENCE_CONTACT_ID 0x0004
+#define MT_CLS_CONFIDENCE_MINUS_ONE 0x0005
+#define MT_CLS_DUAL_INRANGE_CONTACTID 0x0006
+#define MT_CLS_DUAL_INRANGE_CONTACTNUMBER 0x0007
+#define MT_CLS_DUAL_NSMU_CONTACTID 0x0008
/* vendor specific classes */
#define MT_CLS_3M 0x0101
@@ -140,6 +141,9 @@ static struct mt_class mt_classes[] = {
.quirks = MT_QUIRK_ALWAYS_VALID},
{ .name = MT_CLS_CONFIDENCE,
.quirks = MT_QUIRK_VALID_IS_CONFIDENCE },
+ { .name = MT_CLS_CONFIDENCE_CONTACT_ID,
+ .quirks = MT_QUIRK_VALID_IS_CONFIDENCE |
+ MT_QUIRK_SLOT_IS_CONTACTID },
{ .name = MT_CLS_CONFIDENCE_MINUS_ONE,
.quirks = MT_QUIRK_VALID_IS_CONFIDENCE |
MT_QUIRK_SLOT_IS_CONTACTID_MINUS_ONE },
@@ -783,6 +787,17 @@ static const struct hid_device_id mt_devices[] = {
HID_USB_DEVICE(USB_VENDOR_ID_CANDO,
USB_DEVICE_ID_CANDO_PIXCIR_MULTI_TOUCH) },
+ /* Quanta-based panels */
+ { .driver_data = MT_CLS_CONFIDENCE_CONTACT_ID,
+ HID_USB_DEVICE(USB_VENDOR_ID_QUANTA,
+ USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH) },
+ { .driver_data = MT_CLS_CONFIDENCE_CONTACT_ID,
+ HID_USB_DEVICE(USB_VENDOR_ID_QUANTA,
+ USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3001) },
+ { .driver_data = MT_CLS_CONFIDENCE_CONTACT_ID,
+ HID_USB_DEVICE(USB_VENDOR_ID_QUANTA,
+ USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3008) },
+
/* Stantum panels */
{ .driver_data = MT_CLS_CONFIDENCE,
HID_USB_DEVICE(USB_VENDOR_ID_STANTUM,
diff --git a/drivers/hid/hid-quanta.c b/drivers/hid/hid-quanta.c
deleted file mode 100644
index 87a54df..0000000
--- a/drivers/hid/hid-quanta.c
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * HID driver for Quanta Optical Touch dual-touch panels
- *
- * Copyright (c) 2009-2010 Stephane Chatty <chatty@enac.fr>
- *
- */
-
-/*
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- */
-
-#include <linux/device.h>
-#include <linux/hid.h>
-#include <linux/module.h>
-#include <linux/slab.h>
-
-MODULE_AUTHOR("Stephane Chatty <chatty@enac.fr>");
-MODULE_DESCRIPTION("Quanta dual-touch panel");
-MODULE_LICENSE("GPL");
-
-#include "hid-ids.h"
-
-struct quanta_data {
- __u16 x, y;
- __u8 id;
- bool valid; /* valid finger data, or just placeholder? */
- bool first; /* is this the first finger in this frame? */
- bool activity_now; /* at least one active finger in this frame? */
- bool activity; /* at least one active finger previously? */
-};
-
-static int quanta_input_mapping(struct hid_device *hdev, struct hid_input *hi,
- struct hid_field *field, struct hid_usage *usage,
- unsigned long **bit, int *max)
-{
- switch (usage->hid & HID_USAGE_PAGE) {
-
- case HID_UP_GENDESK:
- switch (usage->hid) {
- case HID_GD_X:
- hid_map_usage(hi, usage, bit, max,
- EV_ABS, ABS_MT_POSITION_X);
- /* touchscreen emulation */
- input_set_abs_params(hi->input, ABS_X,
- field->logical_minimum,
- field->logical_maximum, 0, 0);
- return 1;
- case HID_GD_Y:
- hid_map_usage(hi, usage, bit, max,
- EV_ABS, ABS_MT_POSITION_Y);
- /* touchscreen emulation */
- input_set_abs_params(hi->input, ABS_Y,
- field->logical_minimum,
- field->logical_maximum, 0, 0);
- return 1;
- }
- return 0;
-
- case HID_UP_DIGITIZER:
- switch (usage->hid) {
- case HID_DG_CONFIDENCE:
- case HID_DG_TIPSWITCH:
- case HID_DG_INPUTMODE:
- case HID_DG_DEVICEINDEX:
- case HID_DG_CONTACTCOUNT:
- case HID_DG_CONTACTMAX:
- case HID_DG_TIPPRESSURE:
- case HID_DG_WIDTH:
- case HID_DG_HEIGHT:
- return -1;
- case HID_DG_INRANGE:
- /* touchscreen emulation */
- hid_map_usage(hi, usage, bit, max, EV_KEY, BTN_TOUCH);
- return 1;
- case HID_DG_CONTACTID:
- hid_map_usage(hi, usage, bit, max,
- EV_ABS, ABS_MT_TRACKING_ID);
- return 1;
- }
- return 0;
-
- case 0xff000000:
- /* ignore vendor-specific features */
- return -1;
- }
-
- return 0;
-}
-
-static int quanta_input_mapped(struct hid_device *hdev, struct hid_input *hi,
- struct hid_field *field, struct hid_usage *usage,
- unsigned long **bit, int *max)
-{
- if (usage->type == EV_KEY || usage->type == EV_ABS)
- clear_bit(usage->code, *bit);
-
- return 0;
-}
-
-/*
- * this function is called when a whole finger has been parsed,
- * so that it can decide what to send to the input layer.
- */
-static void quanta_filter_event(struct quanta_data *td, struct input_dev *input)
-{
-
- td->first = !td->first; /* touchscreen emulation */
-
- if (!td->valid) {
- /*
- * touchscreen emulation: if no finger in this frame is valid
- * and there previously was finger activity, this is a release
- */
- if (!td->first && !td->activity_now && td->activity) {
- input_event(input, EV_KEY, BTN_TOUCH, 0);
- td->activity = false;
- }
- return;
- }
-
- input_event(input, EV_ABS, ABS_MT_TRACKING_ID, td->id);
- input_event(input, EV_ABS, ABS_MT_POSITION_X, td->x);
- input_event(input, EV_ABS, ABS_MT_POSITION_Y, td->y);
-
- input_mt_sync(input);
- td->valid = false;
-
- /* touchscreen emulation: if first active finger in this frame... */
- if (!td->activity_now) {
- /* if there was no previous activity, emit touch event */
- if (!td->activity) {
- input_event(input, EV_KEY, BTN_TOUCH, 1);
- td->activity = true;
- }
- td->activity_now = true;
- /* and in any case this is our preferred finger */
- input_event(input, EV_ABS, ABS_X, td->x);
- input_event(input, EV_ABS, ABS_Y, td->y);
- }
-}
-
-
-static int quanta_event(struct hid_device *hid, struct hid_field *field,
- struct hid_usage *usage, __s32 value)
-{
- struct quanta_data *td = hid_get_drvdata(hid);
-
- if (hid->claimed & HID_CLAIMED_INPUT) {
- struct input_dev *input = field->hidinput->input;
-
- switch (usage->hid) {
- case HID_DG_INRANGE:
- td->valid = !!value;
- break;
- case HID_GD_X:
- td->x = value;
- break;
- case HID_GD_Y:
- td->y = value;
- quanta_filter_event(td, input);
- break;
- case HID_DG_CONTACTID:
- td->id = value;
- break;
- case HID_DG_CONTACTCOUNT:
- /* touch emulation: this is the last field in a frame */
- td->first = false;
- td->activity_now = false;
- break;
- case HID_DG_CONFIDENCE:
- case HID_DG_TIPSWITCH:
- /* avoid interference from generic hidinput handling */
- break;
-
- default:
- /* fallback to the generic hidinput handling */
- return 0;
- }
- }
-
- /* we have handled the hidinput part, now remains hiddev */
- if (hid->claimed & HID_CLAIMED_HIDDEV && hid->hiddev_hid_event)
- hid->hiddev_hid_event(hid, field, usage, value);
-
- return 1;
-}
-
-static int quanta_probe(struct hid_device *hdev, const struct hid_device_id *id)
-{
- int ret;
- struct quanta_data *td;
-
- td = kmalloc(sizeof(struct quanta_data), GFP_KERNEL);
- if (!td) {
- hid_err(hdev, "cannot allocate Quanta Touch data\n");
- return -ENOMEM;
- }
- td->valid = false;
- td->activity = false;
- td->activity_now = false;
- td->first = false;
- hid_set_drvdata(hdev, td);
-
- ret = hid_parse(hdev);
- if (!ret)
- ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT);
-
- if (ret)
- kfree(td);
-
- return ret;
-}
-
-static void quanta_remove(struct hid_device *hdev)
-{
- hid_hw_stop(hdev);
- kfree(hid_get_drvdata(hdev));
- hid_set_drvdata(hdev, NULL);
-}
-
-static const struct hid_device_id quanta_devices[] = {
- { HID_USB_DEVICE(USB_VENDOR_ID_QUANTA,
- USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH) },
- { HID_USB_DEVICE(USB_VENDOR_ID_QUANTA,
- USB_DEVICE_ID_PIXART_IMAGING_INC_OPTICAL_TOUCH_SCREEN) },
- { }
-};
-MODULE_DEVICE_TABLE(hid, quanta_devices);
-
-static const struct hid_usage_id quanta_grabbed_usages[] = {
- { HID_ANY_ID, HID_ANY_ID, HID_ANY_ID },
- { HID_ANY_ID - 1, HID_ANY_ID - 1, HID_ANY_ID - 1}
-};
-
-static struct hid_driver quanta_driver = {
- .name = "quanta-touch",
- .id_table = quanta_devices,
- .probe = quanta_probe,
- .remove = quanta_remove,
- .input_mapping = quanta_input_mapping,
- .input_mapped = quanta_input_mapped,
- .usage_table = quanta_grabbed_usages,
- .event = quanta_event,
-};
-
-static int __init quanta_init(void)
-{
- return hid_register_driver(&quanta_driver);
-}
-
-static void __exit quanta_exit(void)
-{
- hid_unregister_driver(&quanta_driver);
-}
-
-module_init(quanta_init);
-module_exit(quanta_exit);
-
--
1.7.4.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/3] HID: multitouch: use input_register callback
2011-11-29 12:13 [PATCH 0/3] last merge in hid-multitouch Benjamin Tissoires
2011-11-29 12:13 ` [PATCH 1/3] HID: multitouch: merge quanta driver into hid-multitouch Benjamin Tissoires
@ 2011-11-29 12:13 ` Benjamin Tissoires
2011-11-30 14:37 ` Jiri Kosina
2011-11-29 12:13 ` [PATCH 3/3] hid-multitouch: add support for new Hanvon panels Benjamin Tissoires
2011-11-30 0:19 ` [PATCH 0/3] last merge in hid-multitouch Henrik Rydberg
3 siblings, 1 reply; 10+ messages in thread
From: Benjamin Tissoires @ 2011-11-29 12:13 UTC (permalink / raw)
To: Dmitry Torokhov, Henrik Rydberg, Benjamin Tissoires, Jiri Kosina,
Stephane Chatty, linux-input, linux-kernel
Cc: Benjamin Tissoires
Use the input_register mechanism to avoid a race in which the device
may emit events before the slots are ready.
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
---
drivers/hid/hid-multitouch.c | 37 ++++++++++++++++++++++++-------------
1 files changed, 24 insertions(+), 13 deletions(-)
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
index 91c13bc..bd6e410 100644
--- a/drivers/hid/hid-multitouch.c
+++ b/drivers/hid/hid-multitouch.c
@@ -574,6 +574,29 @@ static void mt_set_input_mode(struct hid_device *hdev)
}
}
+static int mt_input_register(struct hid_device *hdev,
+ struct hid_input *hidinput)
+{
+ int ret;
+ struct mt_device *td = hid_get_drvdata(hdev);
+
+ td->slots = kzalloc(td->maxcontacts * sizeof(struct mt_slot),
+ GFP_KERNEL);
+ if (!td->slots) {
+ dev_err(&hdev->dev, "cannot allocate multitouch slots\n");
+ return -ENOMEM;
+ }
+
+ ret = sysfs_create_group(&hdev->dev.kobj, &mt_attribute_group);
+ if (ret)
+ hid_warn(hdev,
+ "can't create sysfs quirks attribute err: %d\n", ret);
+
+ mt_set_input_mode(hdev);
+
+ return 0;
+}
+
static int mt_probe(struct hid_device *hdev, const struct hid_device_id *id)
{
int ret, i;
@@ -610,19 +633,6 @@ static int mt_probe(struct hid_device *hdev, const struct hid_device_id *id)
if (ret)
goto fail;
- td->slots = kzalloc(td->maxcontacts * sizeof(struct mt_slot),
- GFP_KERNEL);
- if (!td->slots) {
- dev_err(&hdev->dev, "cannot allocate multitouch slots\n");
- hid_hw_stop(hdev);
- ret = -ENOMEM;
- goto fail;
- }
-
- ret = sysfs_create_group(&hdev->dev.kobj, &mt_attribute_group);
-
- mt_set_input_mode(hdev);
-
return 0;
fail:
@@ -843,6 +853,7 @@ static struct hid_driver mt_driver = {
.input_mapping = mt_input_mapping,
.input_mapped = mt_input_mapped,
.feature_mapping = mt_feature_mapping,
+ .input_register = mt_input_register,
.usage_table = mt_grabbed_usages,
.event = mt_event,
#ifdef CONFIG_PM
--
1.7.4.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 3/3] hid-multitouch: add support for new Hanvon panels
2011-11-29 12:13 [PATCH 0/3] last merge in hid-multitouch Benjamin Tissoires
2011-11-29 12:13 ` [PATCH 1/3] HID: multitouch: merge quanta driver into hid-multitouch Benjamin Tissoires
2011-11-29 12:13 ` [PATCH 2/3] HID: multitouch: use input_register callback Benjamin Tissoires
@ 2011-11-29 12:13 ` Benjamin Tissoires
2011-11-30 14:41 ` Jiri Kosina
2011-11-30 0:19 ` [PATCH 0/3] last merge in hid-multitouch Henrik Rydberg
3 siblings, 1 reply; 10+ messages in thread
From: Benjamin Tissoires @ 2011-11-29 12:13 UTC (permalink / raw)
To: Dmitry Torokhov, Henrik Rydberg, Benjamin Tissoires, Jiri Kosina,
Stephane Chatty, linux-input, linux-kernel
Cc: Benjamin Tissoires
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@enac.fr>
---
drivers/hid/hid-core.c | 1 +
drivers/hid/hid-ids.h | 3 +++
drivers/hid/hid-multitouch.c | 5 +++++
3 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index e3c9e61..24b6d4b 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -1425,6 +1425,7 @@ static const struct hid_device_id hid_have_special_driver[] = {
{ HID_USB_DEVICE(USB_VENDOR_ID_GYRATION, USB_DEVICE_ID_GYRATION_REMOTE_2) },
{ HID_USB_DEVICE(USB_VENDOR_ID_GYRATION, USB_DEVICE_ID_GYRATION_REMOTE_3) },
{ HID_USB_DEVICE(USB_VENDOR_ID_HANVON, USB_DEVICE_ID_HANVON_MULTITOUCH) },
+ { HID_USB_DEVICE(USB_VENDOR_ID_HANVON_ALT, USB_DEVICE_ID_HANVON_ALT_MULTITOUCH) },
{ HID_USB_DEVICE(USB_VENDOR_ID_IDEACOM, USB_DEVICE_ID_IDEACOM_IDC6650) },
{ HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK, USB_DEVICE_ID_HOLTEK_ON_LINE_GRIP) },
{ HID_USB_DEVICE(USB_VENDOR_ID_ILITEK, USB_DEVICE_ID_ILITEK_MULTITOUCH) },
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index ebfad17..4b4f346 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -359,6 +359,9 @@
#define USB_VENDOR_ID_HANVON 0x20b3
#define USB_DEVICE_ID_HANVON_MULTITOUCH 0x0a18
+#define USB_VENDOR_ID_HANVON_ALT 0x22ed
+#define USB_DEVICE_ID_HANVON_ALT_MULTITOUCH 0x1010
+
#define USB_VENDOR_ID_HAPP 0x078b
#define USB_DEVICE_ID_UGCI_DRIVING 0x0010
#define USB_DEVICE_ID_UGCI_FLYING 0x0020
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
index bd6e410..2d321a5 100644
--- a/drivers/hid/hid-multitouch.c
+++ b/drivers/hid/hid-multitouch.c
@@ -745,6 +745,11 @@ static const struct hid_device_id mt_devices[] = {
HID_USB_DEVICE(USB_VENDOR_ID_GOODTOUCH,
USB_DEVICE_ID_GOODTOUCH_000f) },
+ /* Hanvon panels */
+ { .driver_data = MT_CLS_DUAL_INRANGE_CONTACTID,
+ HID_USB_DEVICE(USB_VENDOR_ID_HANVON_ALT,
+ USB_DEVICE_ID_HANVON_ALT_MULTITOUCH) },
+
/* Ideacom panel */
{ .driver_data = MT_CLS_SERIAL,
HID_USB_DEVICE(USB_VENDOR_ID_IDEACOM,
--
1.7.4.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 0/3] last merge in hid-multitouch
2011-11-29 12:13 [PATCH 0/3] last merge in hid-multitouch Benjamin Tissoires
` (2 preceding siblings ...)
2011-11-29 12:13 ` [PATCH 3/3] hid-multitouch: add support for new Hanvon panels Benjamin Tissoires
@ 2011-11-30 0:19 ` Henrik Rydberg
2011-11-30 8:10 ` Stéphane Chatty
3 siblings, 1 reply; 10+ messages in thread
From: Henrik Rydberg @ 2011-11-30 0:19 UTC (permalink / raw)
To: Benjamin Tissoires
Cc: Dmitry Torokhov, Benjamin Tissoires, Jiri Kosina, Stephane Chatty,
linux-input, linux-kernel
> Here are some multitouch updates.
> The first one is the last merge to handle all win7 compliant multitouch
> devices in hid-multitouch (finally, we've got it!).
> The others are the migration to input_register to allocate items before
> the input is ready, and another VID/PID.
I believe Stephane owes you a beer now. ;-)
Acked-by: Henrik Rydberg <rydberg@euromail.se>
Thanks, Benjamin.
Henrik
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 0/3] last merge in hid-multitouch
2011-11-30 0:19 ` [PATCH 0/3] last merge in hid-multitouch Henrik Rydberg
@ 2011-11-30 8:10 ` Stéphane Chatty
0 siblings, 0 replies; 10+ messages in thread
From: Stéphane Chatty @ 2011-11-30 8:10 UTC (permalink / raw)
To: Henrik Rydberg
Cc: Benjamin Tissoires, Dmitry Torokhov, Benjamin Tissoires,
Jiri Kosina, linux-input, linux-kernel
OK, granted. Tonight our research group goes together to a restaurant, so it will be easily resolved :-)
Cheers,
St.
Le 30 nov. 2011 à 01:19, Henrik Rydberg a écrit :
>> Here are some multitouch updates.
>> The first one is the last merge to handle all win7 compliant multitouch
>> devices in hid-multitouch (finally, we've got it!).
>> The others are the migration to input_register to allocate items before
>> the input is ready, and another VID/PID.
>
> I believe Stephane owes you a beer now. ;-)
>
> Acked-by: Henrik Rydberg <rydberg@euromail.se>
>
> Thanks, Benjamin.
>
> Henrik
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/3] HID: multitouch: use input_register callback
2011-11-29 12:13 ` [PATCH 2/3] HID: multitouch: use input_register callback Benjamin Tissoires
@ 2011-11-30 14:37 ` Jiri Kosina
2011-11-30 14:56 ` Benjamin Tissoires
0 siblings, 1 reply; 10+ messages in thread
From: Jiri Kosina @ 2011-11-30 14:37 UTC (permalink / raw)
To: Benjamin Tissoires
Cc: Dmitry Torokhov, Henrik Rydberg, Benjamin Tissoires,
Stephane Chatty, linux-input, linux-kernel
On Tue, 29 Nov 2011, Benjamin Tissoires wrote:
> Use the input_register mechanism to avoid a race in which the device
> may emit events before the slots are ready.
>
> Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
> ---
> drivers/hid/hid-multitouch.c | 37 ++++++++++++++++++++++++-------------
> 1 files changed, 24 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
> index 91c13bc..bd6e410 100644
> --- a/drivers/hid/hid-multitouch.c
> +++ b/drivers/hid/hid-multitouch.c
> @@ -574,6 +574,29 @@ static void mt_set_input_mode(struct hid_device *hdev)
> }
> }
>
> +static int mt_input_register(struct hid_device *hdev,
> + struct hid_input *hidinput)
> +{
> + int ret;
> + struct mt_device *td = hid_get_drvdata(hdev);
> +
> + td->slots = kzalloc(td->maxcontacts * sizeof(struct mt_slot),
> + GFP_KERNEL);
> + if (!td->slots) {
> + dev_err(&hdev->dev, "cannot allocate multitouch slots\n");
> + return -ENOMEM;
> + }
> +
> + ret = sysfs_create_group(&hdev->dev.kobj, &mt_attribute_group);
> + if (ret)
> + hid_warn(hdev,
> + "can't create sysfs quirks attribute err: %d\n", ret);
> +
> + mt_set_input_mode(hdev);
> +
> + return 0;
> +}
> +
> static int mt_probe(struct hid_device *hdev, const struct hid_device_id *id)
> {
> int ret, i;
> @@ -610,19 +633,6 @@ static int mt_probe(struct hid_device *hdev, const struct hid_device_id *id)
> if (ret)
> goto fail;
>
> - td->slots = kzalloc(td->maxcontacts * sizeof(struct mt_slot),
> - GFP_KERNEL);
> - if (!td->slots) {
> - dev_err(&hdev->dev, "cannot allocate multitouch slots\n");
> - hid_hw_stop(hdev);
> - ret = -ENOMEM;
> - goto fail;
> - }
> -
> - ret = sysfs_create_group(&hdev->dev.kobj, &mt_attribute_group);
> -
> - mt_set_input_mode(hdev);
> -
> return 0;
>
> fail:
> @@ -843,6 +853,7 @@ static struct hid_driver mt_driver = {
> .input_mapping = mt_input_mapping,
> .input_mapped = mt_input_mapped,
> .feature_mapping = mt_feature_mapping,
> + .input_register = mt_input_register,
Umm, where does this come from? My memory is famous for not being really
excellent, but I don't immediately remember any patchset adding such
callback to hid_driver struct.
And it's not anywhere in my applied queue anyway.
> .usage_table = mt_grabbed_usages,
> .event = mt_event,
> #ifdef CONFIG_PM
> --
> 1.7.4.4
>
--
Jiri Kosina
SUSE Labs
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/3] HID: multitouch: merge quanta driver into hid-multitouch
2011-11-29 12:13 ` [PATCH 1/3] HID: multitouch: merge quanta driver into hid-multitouch Benjamin Tissoires
@ 2011-11-30 14:41 ` Jiri Kosina
0 siblings, 0 replies; 10+ messages in thread
From: Jiri Kosina @ 2011-11-30 14:41 UTC (permalink / raw)
To: Benjamin Tissoires
Cc: Dmitry Torokhov, Henrik Rydberg, Benjamin Tissoires,
Stephane Chatty, linux-input, linux-kernel
On Tue, 29 Nov 2011, Benjamin Tissoires wrote:
> From: Benjamin Tissoires <benjamin.tissoires@gmail.com>
>
> This patch merge the last old-style hid multitouch driver to
> the generic one.
> It also adds 2 more quanta pids.
>
> Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
> ---
> drivers/hid/Kconfig | 7 +-
> drivers/hid/Makefile | 1 -
> drivers/hid/hid-ids.h | 4 +-
> drivers/hid/hid-multitouch.c | 23 +++-
> drivers/hid/hid-quanta.c | 261 ------------------------------------------
Excellent, good job. Applied, thanks.
--
Jiri Kosina
SUSE Labs
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 3/3] hid-multitouch: add support for new Hanvon panels
2011-11-29 12:13 ` [PATCH 3/3] hid-multitouch: add support for new Hanvon panels Benjamin Tissoires
@ 2011-11-30 14:41 ` Jiri Kosina
0 siblings, 0 replies; 10+ messages in thread
From: Jiri Kosina @ 2011-11-30 14:41 UTC (permalink / raw)
To: Benjamin Tissoires
Cc: Dmitry Torokhov, Henrik Rydberg, Benjamin Tissoires,
Stephane Chatty, linux-input, linux-kernel
On Tue, 29 Nov 2011, Benjamin Tissoires wrote:
> Signed-off-by: Benjamin Tissoires <benjamin.tissoires@enac.fr>
> ---
> drivers/hid/hid-core.c | 1 +
> drivers/hid/hid-ids.h | 3 +++
> drivers/hid/hid-multitouch.c | 5 +++++
> 3 files changed, 9 insertions(+), 0 deletions(-)
Applied, thank you.
--
Jiri Kosina
SUSE Labs
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/3] HID: multitouch: use input_register callback
2011-11-30 14:37 ` Jiri Kosina
@ 2011-11-30 14:56 ` Benjamin Tissoires
0 siblings, 0 replies; 10+ messages in thread
From: Benjamin Tissoires @ 2011-11-30 14:56 UTC (permalink / raw)
To: Jiri Kosina
Cc: Dmitry Torokhov, Henrik Rydberg, Stephane Chatty, linux-input,
linux-kernel
On Wed, Nov 30, 2011 at 15:37, Jiri Kosina <jkosina@suse.cz> wrote:
> On Tue, 29 Nov 2011, Benjamin Tissoires wrote:
>
>> Use the input_register mechanism to avoid a race in which the device
>> may emit events before the slots are ready.
>>
>> Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
>> ---
>> drivers/hid/hid-multitouch.c | 37 ++++++++++++++++++++++++-------------
>> 1 files changed, 24 insertions(+), 13 deletions(-)
>>
>> diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
>> index 91c13bc..bd6e410 100644
>> --- a/drivers/hid/hid-multitouch.c
>> +++ b/drivers/hid/hid-multitouch.c
>> @@ -574,6 +574,29 @@ static void mt_set_input_mode(struct hid_device *hdev)
>> }
>> }
>>
>> +static int mt_input_register(struct hid_device *hdev,
>> + struct hid_input *hidinput)
>> +{
>> + int ret;
>> + struct mt_device *td = hid_get_drvdata(hdev);
>> +
>> + td->slots = kzalloc(td->maxcontacts * sizeof(struct mt_slot),
>> + GFP_KERNEL);
>> + if (!td->slots) {
>> + dev_err(&hdev->dev, "cannot allocate multitouch slots\n");
>> + return -ENOMEM;
>> + }
>> +
>> + ret = sysfs_create_group(&hdev->dev.kobj, &mt_attribute_group);
>> + if (ret)
>> + hid_warn(hdev,
>> + "can't create sysfs quirks attribute err: %d\n", ret);
>> +
>> + mt_set_input_mode(hdev);
>> +
>> + return 0;
>> +}
>> +
>> static int mt_probe(struct hid_device *hdev, const struct hid_device_id *id)
>> {
>> int ret, i;
>> @@ -610,19 +633,6 @@ static int mt_probe(struct hid_device *hdev, const struct hid_device_id *id)
>> if (ret)
>> goto fail;
>>
>> - td->slots = kzalloc(td->maxcontacts * sizeof(struct mt_slot),
>> - GFP_KERNEL);
>> - if (!td->slots) {
>> - dev_err(&hdev->dev, "cannot allocate multitouch slots\n");
>> - hid_hw_stop(hdev);
>> - ret = -ENOMEM;
>> - goto fail;
>> - }
>> -
>> - ret = sysfs_create_group(&hdev->dev.kobj, &mt_attribute_group);
>> -
>> - mt_set_input_mode(hdev);
>> -
>> return 0;
>>
>> fail:
>> @@ -843,6 +853,7 @@ static struct hid_driver mt_driver = {
>> .input_mapping = mt_input_mapping,
>> .input_mapped = mt_input_mapped,
>> .feature_mapping = mt_feature_mapping,
>> + .input_register = mt_input_register,
>
> Umm, where does this come from? My memory is famous for not being really
> excellent, but I don't immediately remember any patchset adding such
> callback to hid_driver struct.
>
> And it's not anywhere in my applied queue anyway.
Indeed, your memory is perfectly working: I had some hallucinations.
I was sure you accepted the following patch:
http://article.gmane.org/gmane.linux.kernel.input/21692
It was when Jaikumar Ganesh tried to fix a race in the init of hid-magicmouse.
As the input_register callback is not queued, you can drop this.
Cheers,
Benjamin
>
>> .usage_table = mt_grabbed_usages,
>> .event = mt_event,
>> #ifdef CONFIG_PM
>> --
>> 1.7.4.4
>>
>
> --
> Jiri Kosina
> SUSE Labs
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2011-11-30 14:56 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-29 12:13 [PATCH 0/3] last merge in hid-multitouch Benjamin Tissoires
2011-11-29 12:13 ` [PATCH 1/3] HID: multitouch: merge quanta driver into hid-multitouch Benjamin Tissoires
2011-11-30 14:41 ` Jiri Kosina
2011-11-29 12:13 ` [PATCH 2/3] HID: multitouch: use input_register callback Benjamin Tissoires
2011-11-30 14:37 ` Jiri Kosina
2011-11-30 14:56 ` Benjamin Tissoires
2011-11-29 12:13 ` [PATCH 3/3] hid-multitouch: add support for new Hanvon panels Benjamin Tissoires
2011-11-30 14:41 ` Jiri Kosina
2011-11-30 0:19 ` [PATCH 0/3] last merge in hid-multitouch Henrik Rydberg
2011-11-30 8:10 ` Stéphane Chatty
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).