]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/hid/hid-core.c
[ARM] 4906/1: [AT91] SAM9/CAP9 basic power-management
[linux-2.6-omap-h63xx.git] / drivers / hid / hid-core.c
index 2884b036495a0713f0389b09ceee5a9c1a4476f0..f0b00ec1e47e7c1c0daf85cd6cc864f2c0c2c555 100644 (file)
@@ -26,6 +26,7 @@
 #include <linux/input.h>
 #include <linux/wait.h>
 #include <linux/vmalloc.h>
+#include <linux/sched.h>
 
 #include <linux/hid.h>
 #include <linux/hiddev.h>
@@ -758,7 +759,9 @@ static __inline__ __u32 extract(__u8 *report, unsigned offset, unsigned n)
 {
        u64 x;
 
-       WARN_ON(n > 32);
+       if (n > 32)
+               printk(KERN_WARNING "HID: extract() called with n (%d) > 32! (%s)\n",
+                               n, current->comm);
 
        report += offset >> 3;  /* adjust byte index */
        offset &= 7;            /* now only need bit offset into one byte */
@@ -780,8 +783,13 @@ static __inline__ void implement(__u8 *report, unsigned offset, unsigned n, __u3
        __le64 x;
        u64 m = (1ULL << n) - 1;
 
-       WARN_ON(n > 32);
+       if (n > 32)
+               printk(KERN_WARNING "HID: implement() called with n (%d) > 32! (%s)\n",
+                               n, current->comm);
 
+       if (value > m)
+               printk(KERN_WARNING "HID: implement() called with too large value %d! (%s)\n",
+                               value, current->comm);
        WARN_ON(value > m);
        value &= m;
 
@@ -960,7 +968,7 @@ int hid_input_report(struct hid_device *hid, int type, u8 *data, int size, int i
                size--;
        }
 
-       /* dump the report descriptor */
+       /* dump the report */
        dbg_hid("report %d (size %u) = ", n, size);
        for (i = 0; i < size; i++)
                dbg_hid_line(" %02x", data[i]);