aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hid
diff options
context:
space:
mode:
authorDenis Kovalev <Denis.Kovalev@dataart.com>2012-02-14 03:50:33 -0500
committerJiri Kosina <jkosina@suse.cz>2012-02-21 05:55:45 -0500
commit2258e863b451be319d374f89688000ab858b13c3 (patch)
tree43c763eb2d047cfc728fcfc9020360165e53c294 /drivers/hid
parent847672cd141c07db3d5fc1442b4c3e8a702488df (diff)
HID: multitouch: add support of Panasonic multitouch panels
While at it, also fix some minor codingstyle issues. Signed-off-by: Denis Kovalev <Denis.Kovalev@dataart.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers/hid')
-rw-r--r--drivers/hid/Kconfig1
-rw-r--r--drivers/hid/hid-core.c2
-rw-r--r--drivers/hid/hid-ids.h6
-rw-r--r--drivers/hid/hid-multitouch.c19
4 files changed, 23 insertions, 5 deletions
diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
index f7c43b6c3567..bfac1f79757f 100644
--- a/drivers/hid/Kconfig
+++ b/drivers/hid/Kconfig
@@ -354,6 +354,7 @@ config HID_MULTITOUCH
354 - LG Display panels (Dell ST2220Tc) 354 - LG Display panels (Dell ST2220Tc)
355 - Lumio CrystalTouch panels 355 - Lumio CrystalTouch panels
356 - MosArt dual-touch panels 356 - MosArt dual-touch panels
357 - Panasonic multitouch panels
357 - PenMount dual touch panels 358 - PenMount dual touch panels
358 - Perixx Peripad 701 touchpad 359 - Perixx Peripad 701 touchpad
359 - PixArt optical touch screen 360 - PixArt optical touch screen
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index af08ce7207d9..bb710a6a079d 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -1501,6 +1501,8 @@ static const struct hid_device_id hid_have_special_driver[] = {
1501 { HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_18) }, 1501 { HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_18) },
1502 { HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_PKB1700) }, 1502 { HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_PKB1700) },
1503 { HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_WKB2000) }, 1503 { HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_WKB2000) },
1504 { HID_USB_DEVICE(USB_VENDOR_ID_PANASONIC, USB_DEVICE_ID_PANABOARD_UBT780) },
1505 { HID_USB_DEVICE(USB_VENDOR_ID_PANASONIC, USB_DEVICE_ID_PANABOARD_UBT880) },
1504 { HID_USB_DEVICE(USB_VENDOR_ID_PENMOUNT, USB_DEVICE_ID_PENMOUNT_PCI) }, 1506 { HID_USB_DEVICE(USB_VENDOR_ID_PENMOUNT, USB_DEVICE_ID_PENMOUNT_PCI) },
1505 { HID_USB_DEVICE(USB_VENDOR_ID_PETALYNX, USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE) }, 1507 { HID_USB_DEVICE(USB_VENDOR_ID_PETALYNX, USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE) },
1506 { HID_USB_DEVICE(USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN) }, 1508 { HID_USB_DEVICE(USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN) },
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index 662a0b6a6642..12b6c49359c8 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -41,7 +41,7 @@
41#define USB_VENDOR_ID_ACTIONSTAR 0x2101 41#define USB_VENDOR_ID_ACTIONSTAR 0x2101
42#define USB_DEVICE_ID_ACTIONSTAR_1011 0x1011 42#define USB_DEVICE_ID_ACTIONSTAR_1011 0x1011
43 43
44#define USB_VENDOR_ID_ADS_TECH 0x06e1 44#define USB_VENDOR_ID_ADS_TECH 0x06e1
45#define USB_DEVICE_ID_ADS_TECH_RADIO_SI470X 0xa155 45#define USB_DEVICE_ID_ADS_TECH_RADIO_SI470X 0xa155
46 46
47#define USB_VENDOR_ID_AFATECH 0x15a4 47#define USB_VENDOR_ID_AFATECH 0x15a4
@@ -565,6 +565,10 @@
565#define USB_DEVICE_ID_ORTEK_PKB1700 0x1700 565#define USB_DEVICE_ID_ORTEK_PKB1700 0x1700
566#define USB_DEVICE_ID_ORTEK_WKB2000 0x2000 566#define USB_DEVICE_ID_ORTEK_WKB2000 0x2000
567 567
568#define USB_VENDOR_ID_PANASONIC 0x04da
569#define USB_DEVICE_ID_PANABOARD_UBT780 0x1044
570#define USB_DEVICE_ID_PANABOARD_UBT880 0x104d
571
568#define USB_VENDOR_ID_PANJIT 0x134c 572#define USB_VENDOR_ID_PANJIT 0x134c
569 573
570#define USB_VENDOR_ID_PANTHERLORD 0x0810 574#define USB_VENDOR_ID_PANTHERLORD 0x0810
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
index 387a72fb1c84..09e42ef60d6e 100644
--- a/drivers/hid/hid-multitouch.c
+++ b/drivers/hid/hid-multitouch.c
@@ -104,6 +104,7 @@ struct mt_device {
104#define MT_CLS_EGALAX 0x0103 104#define MT_CLS_EGALAX 0x0103
105#define MT_CLS_EGALAX_SERIAL 0x0104 105#define MT_CLS_EGALAX_SERIAL 0x0104
106#define MT_CLS_TOPSEED 0x0105 106#define MT_CLS_TOPSEED 0x0105
107#define MT_CLS_PANASONIC 0x0106
107 108
108#define MT_DEFAULT_MAXCONTACT 10 109#define MT_DEFAULT_MAXCONTACT 10
109 110
@@ -198,6 +199,9 @@ static struct mt_class mt_classes[] = {
198 .is_indirect = true, 199 .is_indirect = true,
199 .maxcontacts = 2, 200 .maxcontacts = 2,
200 }, 201 },
202 { .name = MT_CLS_PANASONIC,
203 .quirks = MT_QUIRK_NOT_SEEN_MEANS_UP,
204 .maxcontacts = 4 },
201 205
202 { } 206 { }
203}; 207};
@@ -278,8 +282,8 @@ static int mt_input_mapping(struct hid_device *hdev, struct hid_input *hi,
278 int code; 282 int code;
279 283
280 /* Only map fields from TouchScreen or TouchPad collections. 284 /* Only map fields from TouchScreen or TouchPad collections.
281 * We need to ignore fields that belong to other collections 285 * We need to ignore fields that belong to other collections
282 * such as Mouse that might have the same GenericDesktop usages. */ 286 * such as Mouse that might have the same GenericDesktop usages. */
283 if (field->application == HID_DG_TOUCHSCREEN) 287 if (field->application == HID_DG_TOUCHSCREEN)
284 set_bit(INPUT_PROP_DIRECT, hi->input->propbit); 288 set_bit(INPUT_PROP_DIRECT, hi->input->propbit);
285 else if (field->application != HID_DG_TOUCHPAD) 289 else if (field->application != HID_DG_TOUCHPAD)
@@ -581,9 +585,8 @@ static int mt_event(struct hid_device *hid, struct hid_field *field,
581 return 0; 585 return 0;
582 } 586 }
583 587
584 if (usage->hid == td->last_slot_field) { 588 if (usage->hid == td->last_slot_field)
585 mt_complete_slot(td); 589 mt_complete_slot(td);
586 }
587 590
588 if (field->index == td->last_field_index 591 if (field->index == td->last_field_index
589 && td->num_received >= td->num_expected) 592 && td->num_received >= td->num_expected)
@@ -857,6 +860,14 @@ static const struct hid_device_id mt_devices[] = {
857 HID_USB_DEVICE(USB_VENDOR_ID_TURBOX, 860 HID_USB_DEVICE(USB_VENDOR_ID_TURBOX,
858 USB_DEVICE_ID_TURBOX_TOUCHSCREEN_MOSART) }, 861 USB_DEVICE_ID_TURBOX_TOUCHSCREEN_MOSART) },
859 862
863 /* Panasonic panels */
864 { .driver_data = MT_CLS_PANASONIC,
865 HID_USB_DEVICE(USB_VENDOR_ID_PANASONIC,
866 USB_DEVICE_ID_PANABOARD_UBT780) },
867 { .driver_data = MT_CLS_PANASONIC,
868 HID_USB_DEVICE(USB_VENDOR_ID_PANASONIC,
869 USB_DEVICE_ID_PANABOARD_UBT880) },
870
860 /* PenMount panels */ 871 /* PenMount panels */
861 { .driver_data = MT_CLS_CONFIDENCE, 872 { .driver_data = MT_CLS_CONFIDENCE,
862 HID_USB_DEVICE(USB_VENDOR_ID_PENMOUNT, 873 HID_USB_DEVICE(USB_VENDOR_ID_PENMOUNT,