Any spaces events received after a reset or startup should be discarded,
so ensure the rc device is in idle mode.

This also makes it much easier to detect incorrect raw events, as we will
do in a following commit.

Signed-off-by: Sean Young <s...@mess.org>
---
 drivers/media/rc/rc-ir-raw.c | 1 +
 include/media/rc-core.h      | 1 +
 2 files changed, 2 insertions(+)

diff --git a/drivers/media/rc/rc-ir-raw.c b/drivers/media/rc/rc-ir-raw.c
index 2ab8a2b7092a..2e50104ae138 100644
--- a/drivers/media/rc/rc-ir-raw.c
+++ b/drivers/media/rc/rc-ir-raw.c
@@ -611,6 +611,7 @@ int ir_raw_event_prepare(struct rc_dev *dev)
 
        dev->raw->dev = dev;
        dev->change_protocol = change_protocol;
+       dev->idle = true;
        spin_lock_init(&dev->raw->edge_spinlock);
        timer_setup(&dev->raw->edge_handle, ir_raw_edge_handle, 0);
        INIT_KFIFO(dev->raw->kfifo);
diff --git a/include/media/rc-core.h b/include/media/rc-core.h
index 6742fd86ff65..61571773a98d 100644
--- a/include/media/rc-core.h
+++ b/include/media/rc-core.h
@@ -347,6 +347,7 @@ static inline void ir_raw_event_reset(struct rc_dev *dev)
        struct ir_raw_event ev = { .reset = true };
 
        ir_raw_event_store(dev, &ev);
+       dev->idle = true;
        ir_raw_event_handle(dev);
 }
 
-- 
2.17.0

Reply via email to