#define MT_QUIRK_ASUS_CUSTOM_UP                BIT(17)
 #define MT_QUIRK_WIN8_PTP_BUTTONS      BIT(18)
 #define MT_QUIRK_SEPARATE_APP_REPORT   BIT(19)
+#define MT_QUIRK_FORCE_MULTI_INPUT     BIT(20)
 
 #define MT_INPUTMODE_TOUCHSCREEN       0x02
 #define MT_INPUTMODE_TOUCHPAD          0x03
 #define MT_CLS_WIN_8                           0x0012
 #define MT_CLS_EXPORT_ALL_INPUTS               0x0013
 #define MT_CLS_WIN_8_DUAL                      0x0014
+#define MT_CLS_WIN_8_FORCE_MULTI_INPUT         0x0015
 
 /* vendor specific classes */
 #define MT_CLS_3M                              0x0101
                        MT_QUIRK_CONTACT_CNT_ACCURATE |
                        MT_QUIRK_WIN8_PTP_BUTTONS,
                .export_all_inputs = true },
+       { .name = MT_CLS_WIN_8_FORCE_MULTI_INPUT,
+               .quirks = MT_QUIRK_ALWAYS_VALID |
+                       MT_QUIRK_IGNORE_DUPLICATES |
+                       MT_QUIRK_HOVERING |
+                       MT_QUIRK_CONTACT_CNT_ACCURATE |
+                       MT_QUIRK_STICKY_FINGERS |
+                       MT_QUIRK_WIN8_PTP_BUTTONS |
+                       MT_QUIRK_FORCE_MULTI_INPUT,
+               .export_all_inputs = true },
 
        /*
         * vendor specific classes
        if (id->group != HID_GROUP_MULTITOUCH_WIN_8)
                hdev->quirks |= HID_QUIRK_MULTI_INPUT;
 
+       if (mtclass->quirks & MT_QUIRK_FORCE_MULTI_INPUT) {
+               hdev->quirks &= ~HID_QUIRK_INPUT_PER_APP;
+               hdev->quirks |= HID_QUIRK_MULTI_INPUT;
+       }
+
        timer_setup(&td->release_timer, mt_expired_timeout, 0);
 
        ret = hid_parse(hdev);
                MT_USB_DEVICE(USB_VENDOR_ID_DWAV,
                        USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_C002) },
 
+       /* Elan devices */
+       { .driver_data = MT_CLS_WIN_8_FORCE_MULTI_INPUT,
+               HID_DEVICE(BUS_I2C, HID_GROUP_MULTITOUCH_WIN_8,
+                       USB_VENDOR_ID_ELAN, 0x313a) },
+
        /* Elitegroup panel */
        { .driver_data = MT_CLS_SERIAL,
                MT_USB_DEVICE(USB_VENDOR_ID_ELITEGROUP,
                MT_USB_DEVICE(USB_VENDOR_ID_STANTUM_STM,
                        USB_DEVICE_ID_MTP_STM)},
 
+       /* Synaptics devices */
+       { .driver_data = MT_CLS_WIN_8_FORCE_MULTI_INPUT,
+               HID_DEVICE(BUS_I2C, HID_GROUP_MULTITOUCH_WIN_8,
+                       USB_VENDOR_ID_SYNAPTICS, 0xce08) },
+
        /* TopSeed panels */
        { .driver_data = MT_CLS_TOPSEED,
                MT_USB_DEVICE(USB_VENDOR_ID_TOPSEED2,