Bluetooth: Enable Atheros 0cf3:311e for firmware upload
[pandora-kernel.git] / drivers / hid / hid-wiimote.c
index 76739c0..bfa9a27 100644 (file)
@@ -829,7 +829,7 @@ static void __ir_to_input(struct wiimote_data *wdata, const __u8 *ir,
 
        /*
         * Basic IR data is encoded into 3 bytes. The first two bytes are the
-        * upper 8 bit of the X/Y data, the 3rd byte contains the lower 2 bits
+        * lower 8 bit of the X/Y data, the 3rd byte contains the upper 2 bits
         * of both.
         * If data is packed, then the 3rd byte is put first and slightly
         * reordered. This allows to interleave packed and non-packed data to
@@ -838,17 +838,11 @@ static void __ir_to_input(struct wiimote_data *wdata, const __u8 *ir,
         */
 
        if (packed) {
-               x = ir[1] << 2;
-               y = ir[2] << 2;
-
-               x |= ir[0] & 0x3;
-               y |= (ir[0] >> 2) & 0x3;
+               x = ir[1] | ((ir[0] & 0x03) << 8);
+               y = ir[2] | ((ir[0] & 0x0c) << 6);
        } else {
-               x = ir[0] << 2;
-               y = ir[1] << 2;
-
-               x |= (ir[2] >> 4) & 0x3;
-               y |= (ir[2] >> 6) & 0x3;
+               x = ir[0] | ((ir[2] & 0x30) << 4);
+               y = ir[1] | ((ir[2] & 0xc0) << 2);
        }
 
        input_report_abs(wdata->ir, xid, x);