From: Daniel Fu <danifu@xxxxxxxxxx> Remove STATE_TRAILER_SPACE from state machine. Causing 2 issue: - can not decode the keycode, if it didn't following with another keycode/repeat code - will generate one more code in current logic. i.e. key_right + repeat code + key_left + repeat code. expect: key_right, key_left. Result: key_right, key_right, key_right. Reason: when receive repeat code of key_right, state machine will stay in STATE_TRAILER_SPACE state, then wait for a new interrupt, if an interrupt came after keyup_timer, then will generate another fake key. According to the NEC protocol, it don't need a trailer space. Remove it. Signed-off-by: Daniel Fu <danifu@xxxxxxxxxx> Signed-off-by: Vladislav Zhurba <vzhurba@xxxxxxxxxx> --- drivers/media/rc/ir-nec-decoder.c | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/drivers/media/rc/ir-nec-decoder.c b/drivers/media/rc/ir-nec-decoder.c index 21647b809e6f..760b66affd1a 100644 --- a/drivers/media/rc/ir-nec-decoder.c +++ b/drivers/media/rc/ir-nec-decoder.c @@ -128,16 +128,6 @@ static int ir_nec_decode(struct rc_dev *dev, struct ir_raw_event ev) if (!eq_margin(ev.duration, NEC_TRAILER_PULSE, NEC_UNIT / 2)) break; - data->state = STATE_TRAILER_SPACE; - return 0; - - case STATE_TRAILER_SPACE: - if (ev.pulse) - break; - - if (!geq_margin(ev.duration, NEC_TRAILER_SPACE, NEC_UNIT / 2)) - break; - if (data->count == NEC_NBITS) { address = bitrev8((data->bits >> 24) & 0xff); not_address = bitrev8((data->bits >> 16) & 0xff); -- 2.16.2