On Fri, 9 Mar 2007, Jiri Kosina wrote:
If this is present also in vanilla and not only in -mm, could you please try reverting commits 4237081e573b99a48991aa71364b0682c444651c and d4ae650a904612ffb7edd3f28b69b022988d2466 and let me know if the situation gets any better?
Hi Jiri,
or even better, does the patch below (against 2.6.21-rc3) fix the problem with your keyboard? I can see possibilities of report fields unaligned to the byte boundary, which this might be causing problems.
(the original patch author added to cc)
Thanks.
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index f4ee1af..f571513 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -873,10 +873,6 @@ static void hid_output_field(struct hid_field *field, __u8 *data)
unsigned size = field->report_size;
unsigned n;
- /* make sure the unused bits in the last byte are zeros */
- if (count > 0 && size > 0)
- data[(offset+count*size-1)/8] = 0;
-
for (n = 0; n < count; n++) {
if (field->logical_minimum < 0) /* signed values */
implement(data, offset + n * size, size, s32ton(field->value[n], size));