From 435acdc5f6085191a2c59e28f6f947543a5f71a2 Mon Sep 17 00:00:00 2001 From: Jarod Wilson Date: Tue, 22 Mar 2011 17:23:15 -0300 Subject: [PATCH] --- yaml --- r: 242185 b: refs/heads/master c: 4be22b6a7f2f2b7eb6f7aab8902068a367cda8ba h: refs/heads/master i: 242183: c0dbf1782b654c07d3ef8f5d86c7c520d34ded9f v: v3 --- [refs] | 2 +- trunk/drivers/media/rc/ir-nec-decoder.c | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 75d5f0a555e2..32760e779b23 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7d9a46f9d5e0bea8e862143be73df2bbc9acb2a3 +refs/heads/master: 4be22b6a7f2f2b7eb6f7aab8902068a367cda8ba diff --git a/trunk/drivers/media/rc/ir-nec-decoder.c b/trunk/drivers/media/rc/ir-nec-decoder.c index 7b58b4a1729b..63ee722dbd02 100644 --- a/trunk/drivers/media/rc/ir-nec-decoder.c +++ b/trunk/drivers/media/rc/ir-nec-decoder.c @@ -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 |