From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752899AbeDTSwI (ORCPT ); Fri, 20 Apr 2018 14:52:08 -0400 Received: from hqemgate16.nvidia.com ([216.228.121.65]:12066 "EHLO hqemgate16.nvidia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752047AbeDTSvx (ORCPT ); Fri, 20 Apr 2018 14:51:53 -0400 X-PGP-Universal: processed; by hqpgpgate102.nvidia.com on Fri, 20 Apr 2018 11:51:52 -0700 From: Vladislav Zhurba To: CC: , , Daniel Fu , Vladislav Zhurba Subject: [PATCH 1/1] media: nec-decoder: remove trailer_space state Date: Fri, 20 Apr 2018 11:51:39 -0700 Message-ID: <20180420185139.29238-1-vzhurba@nvidia.com> X-Mailer: git-send-email 2.17.0 X-NVConfidentiality: public MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Daniel Fu 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 Signed-off-by: Vladislav Zhurba --- 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