[media] cx231xx: Fix inverted bits for RC on PV Hybrid
authorMauro Carvalho Chehab <mchehab@redhat.com>
Fri, 17 Dec 2010 17:22:09 +0000 (14:22 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Wed, 29 Dec 2010 10:17:00 +0000 (08:17 -0200)
At Pixelview SBTVD Hybrid, the bits sent by the IR are inverted. Due to that,
the existing keytables produce wrong codes.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/cx231xx/cx231xx-input.c

index c236a4e7e97ba623feb35d688722b6953be90053..45e14cac4622ba03108bd3b4845f6f77a1beab18 100644 (file)
@@ -27,7 +27,7 @@
 static int get_key_isdbt(struct IR_i2c *ir, u32 *ir_key,
                         u32 *ir_raw)
 {
-       u8      cmd;
+       u8      cmd, scancode;
 
        dev_dbg(&ir->rc->input_dev->dev, "%s\n", __func__);
 
@@ -42,10 +42,21 @@ static int get_key_isdbt(struct IR_i2c *ir, u32 *ir_key,
        if (cmd == 0xff)
                return 0;
 
-       dev_dbg(&ir->rc->input_dev->dev, "scancode = %02x\n", cmd);
-
-       *ir_key = cmd;
-       *ir_raw = cmd;
+       scancode =
+                ((cmd & 0x01) ? 0x80 : 0) |
+                ((cmd & 0x02) ? 0x40 : 0) |
+                ((cmd & 0x04) ? 0x20 : 0) |
+                ((cmd & 0x08) ? 0x10 : 0) |
+                ((cmd & 0x10) ? 0x08 : 0) |
+                ((cmd & 0x20) ? 0x04 : 0) |
+                ((cmd & 0x40) ? 0x02 : 0) |
+                ((cmd & 0x80) ? 0x01 : 0);
+
+       dev_dbg(&ir->rc->input_dev->dev, "cmd %02x, scan = %02x\n",
+               cmd, scancode);
+
+       *ir_key = scancode;
+       *ir_raw = scancode;
        return 1;
 }