Merge remote branch 'nouveau/drm-nouveau-fixes' of /ssd/git/drm-nouveau-next into...
[pandora-kernel.git] / drivers / media / rc / ir-nec-decoder.c
index 7b58b4a..63ee722 100644 (file)
@@ -49,6 +49,7 @@ static int ir_nec_decode(struct rc_dev *dev, struct ir_raw_event ev)
        struct nec_dec *data = &dev->raw->nec;
        u32 scancode;
        u8 address, not_address, command, not_command;
+       bool send_32bits = false;
 
        if (!(dev->raw->enabled_protocols & RC_TYPE_NEC))
                return 0;
@@ -164,10 +165,15 @@ static int ir_nec_decode(struct rc_dev *dev, struct ir_raw_event ev)
                if ((command ^ not_command) != 0xff) {
                        IR_dprintk(1, "NEC checksum error: received 0x%08x\n",
                                   data->bits);
-                       break;
+                       send_32bits = true;
                }
 
-               if ((address ^ not_address) != 0xff) {
+               if (send_32bits) {
+                       /* NEC transport, but modified protocol, used by at
+                        * least Apple and TiVo remotes */
+                       scancode = data->bits;
+                       IR_dprintk(1, "NEC (modified) scancode 0x%08x\n", scancode);
+               } else if ((address ^ not_address) != 0xff) {
                        /* Extended NEC */
                        scancode = address     << 16 |
                                   not_address <<  8 |