diff options
-rw-r--r-- | drivers/hid/Kconfig | 1 | ||||
-rw-r--r-- | drivers/hid/hid-core.c | 2 | ||||
-rw-r--r-- | drivers/hid/hid-ids.h | 6 | ||||
-rw-r--r-- | drivers/hid/hid-multitouch.c | 19 |
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, |