V4L/DVB (13540): ir-common: Cleanup get key evdev code
The same loop to seek for a key were used on different places. Also,
no spinlock were protecting it to avoid the risk of replacing a keycode
while seeking for a new code.
This cleanup does:
- create an unique function to seek for a code;
- adds an spinlock to protect the table lookup;
- remove some unused code;
- simplifies to code to make it easier to understand.
Basically no change in behavior should be noticed after this patch.
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
diff --git a/include/media/ir-common.h b/include/media/ir-common.h
index 452f6e8..e41a99e 100644
--- a/include/media/ir-common.h
+++ b/include/media/ir-common.h
@@ -26,6 +26,7 @@
#include <linux/input.h>
#include <linux/workqueue.h>
#include <linux/interrupt.h>
+#include <linux/spinlock.h>
extern int media_ir_debug; /* media_ir_debug level (0,1,2) */
#define IR_dprintk(level, fmt, arg...) if (media_ir_debug >= level) \
@@ -43,6 +44,7 @@
struct ir_scancode_table {
struct ir_scancode *scan;
int size;
+ spinlock_t lock;
};
#define RC5_START(x) (((x)>>12)&3)