|
@@ -51,7 +51,6 @@ static int ir_nec_decode(struct rc_dev *dev, struct ir_raw_event ev)
|
|
|
u32 scancode;
|
|
|
enum rc_type rc_type;
|
|
|
u8 address, not_address, command, not_command;
|
|
|
- bool send_32bits = false;
|
|
|
|
|
|
if (!is_timing_event(ev)) {
|
|
|
if (ev.reset)
|
|
@@ -157,34 +156,9 @@ static int ir_nec_decode(struct rc_dev *dev, struct ir_raw_event ev)
|
|
|
command = bitrev8((data->bits >> 8) & 0xff);
|
|
|
not_command = bitrev8((data->bits >> 0) & 0xff);
|
|
|
|
|
|
- if ((command ^ not_command) != 0xff) {
|
|
|
- IR_dprintk(1, "NEC checksum error: received 0x%08x\n",
|
|
|
- data->bits);
|
|
|
- send_32bits = true;
|
|
|
- }
|
|
|
-
|
|
|
- if (send_32bits) {
|
|
|
- /* NEC transport, but modified protocol, used by at
|
|
|
- * least Apple and TiVo remotes */
|
|
|
- scancode = not_address << 24 |
|
|
|
- address << 16 |
|
|
|
- not_command << 8 |
|
|
|
- command;
|
|
|
- IR_dprintk(1, "NEC (modified) scancode 0x%08x\n", scancode);
|
|
|
- rc_type = RC_TYPE_NEC32;
|
|
|
- } else if ((address ^ not_address) != 0xff) {
|
|
|
- /* Extended NEC */
|
|
|
- scancode = address << 16 |
|
|
|
- not_address << 8 |
|
|
|
- command;
|
|
|
- IR_dprintk(1, "NEC (Ext) scancode 0x%06x\n", scancode);
|
|
|
- rc_type = RC_TYPE_NECX;
|
|
|
- } else {
|
|
|
- /* Normal NEC */
|
|
|
- scancode = address << 8 | command;
|
|
|
- IR_dprintk(1, "NEC scancode 0x%04x\n", scancode);
|
|
|
- rc_type = RC_TYPE_NEC;
|
|
|
- }
|
|
|
+ scancode = ir_nec_bytes_to_scancode(address, not_address,
|
|
|
+ command, not_command,
|
|
|
+ &rc_type);
|
|
|
|
|
|
if (data->is_nec_x)
|
|
|
data->necx_repeat = true;
|