mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 15:50:59 +07:00
media: rc: nec decoder should not send both repeat and keycode
When receiving an nec repeat, rc_repeat() is called and then rc_keydown()
with the last decoded scancode. That last call is redundant.
Fixes: 265a2988d2
("media: rc-core: consistent use of rc_repeat()")
Cc: <stable@vger.kernel.org> # v4.14
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
This commit is contained in:
parent
2265425fd9
commit
829bbf2688
@ -87,8 +87,6 @@ static int ir_nec_decode(struct rc_dev *dev, struct ir_raw_event ev)
|
||||
data->state = STATE_BIT_PULSE;
|
||||
return 0;
|
||||
} else if (eq_margin(ev.duration, NEC_REPEAT_SPACE, NEC_UNIT / 2)) {
|
||||
rc_repeat(dev);
|
||||
IR_dprintk(1, "Repeat last key\n");
|
||||
data->state = STATE_TRAILER_PULSE;
|
||||
return 0;
|
||||
}
|
||||
@ -151,19 +149,26 @@ static int ir_nec_decode(struct rc_dev *dev, struct ir_raw_event ev)
|
||||
if (!geq_margin(ev.duration, NEC_TRAILER_SPACE, NEC_UNIT / 2))
|
||||
break;
|
||||
|
||||
address = bitrev8((data->bits >> 24) & 0xff);
|
||||
not_address = bitrev8((data->bits >> 16) & 0xff);
|
||||
command = bitrev8((data->bits >> 8) & 0xff);
|
||||
not_command = bitrev8((data->bits >> 0) & 0xff);
|
||||
if (data->count == NEC_NBITS) {
|
||||
address = bitrev8((data->bits >> 24) & 0xff);
|
||||
not_address = bitrev8((data->bits >> 16) & 0xff);
|
||||
command = bitrev8((data->bits >> 8) & 0xff);
|
||||
not_command = bitrev8((data->bits >> 0) & 0xff);
|
||||
|
||||
scancode = ir_nec_bytes_to_scancode(address, not_address,
|
||||
command, not_command,
|
||||
&rc_proto);
|
||||
scancode = ir_nec_bytes_to_scancode(address,
|
||||
not_address,
|
||||
command,
|
||||
not_command,
|
||||
&rc_proto);
|
||||
|
||||
if (data->is_nec_x)
|
||||
data->necx_repeat = true;
|
||||
if (data->is_nec_x)
|
||||
data->necx_repeat = true;
|
||||
|
||||
rc_keydown(dev, rc_proto, scancode, 0);
|
||||
} else {
|
||||
rc_repeat(dev);
|
||||
}
|
||||
|
||||
rc_keydown(dev, rc_proto, scancode, 0);
|
||||
data->state = STATE_INACTIVE;
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user