Please excuse me if I'm being to brash. I'd love to see complete Silead touchscreen controller support in the mainline kernel, but with the hardware being what it is and the lack of complete public documentation, I understand this is a bit difficult. > /* The last 4 bits are the touch id */ > id = buf[offset + SILEAD_POINT_ID_OFF] & SILEAD_TOUCH_ID_MASK; > > /* The 1st 4 bits are part of X */ > buf[offset + SILEAD_POINT_ID_OFF] = > (buf[offset + SILEAD_POINT_ID_OFF] & SILEAD_X_HSB_MASK) > >> 4; > > y = le16_to_cpup((__le16 *)(buf + offset)); > x = le16_to_cpup((__le16 *)(buf + offset + SILEAD_POINT_X_OFF)); Can you confirm that your data sheet/hardware does in fact use the lower 4 bits of byte 3 of each point record as the touch id, and not the upper 4 bits? I just checked, both the Basewin driver (and all drivers derived from it) and my testing hardware attribute it to the high nibble. The lower nibble is part of the x coordinate. Aside from this, would you be interested in making your driver compatible with legacy/"broken" hardware? I'd start working on a patch if this is ok to you. This would encompass the following: - Adding fallbacks for unavailable information (width, height, number of touch points, finger tracking availability, axis swapping and mirroring, firmware name), maybe keeping the device uninitialized until all parameters are set - Adding a sysfs interface and/or module options to set these attributes, or possibly adding platform quirks that autoconfigurate depending on DMI data (better ideas are welcome) - Adding code paths for the missing functionality (finger tracking, swapping/mirroring, other quirks) -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html