Browse Source

media: rc: auto load encoder if necessary

When sending scancodes, load the encoder if we need it.

Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Sean Young 8 years ago
parent
commit
0d39ab0b62
3 changed files with 4 additions and 1 deletions
  1. 1 0
      drivers/media/rc/rc-core-priv.h
  2. 2 0
      drivers/media/rc/rc-ir-raw.c
  3. 1 1
      drivers/media/rc/rc-main.c

+ 1 - 0
drivers/media/rc/rc-core-priv.h

@@ -261,6 +261,7 @@ void ir_raw_event_free(struct rc_dev *dev);
 void ir_raw_event_unregister(struct rc_dev *dev);
 int ir_raw_handler_register(struct ir_raw_handler *ir_raw_handler);
 void ir_raw_handler_unregister(struct ir_raw_handler *ir_raw_handler);
+void ir_raw_load_modules(u64 *protocols);
 void ir_raw_init(void);
 
 /*

+ 2 - 0
drivers/media/rc/rc-ir-raw.c

@@ -448,6 +448,8 @@ int ir_raw_encode_scancode(enum rc_proto protocol, u32 scancode,
 	int ret = -EINVAL;
 	u64 mask = 1ULL << protocol;
 
+	ir_raw_load_modules(&mask);
+
 	mutex_lock(&ir_raw_handler_lock);
 	list_for_each_entry(handler, &ir_raw_handler_list, list) {
 		if (handler->protocols & mask && handler->encode) {

+ 1 - 1
drivers/media/rc/rc-main.c

@@ -1082,7 +1082,7 @@ static int parse_protocol_change(u64 *protocols, const char *buf)
 	return count;
 }
 
-static void ir_raw_load_modules(u64 *protocols)
+void ir_raw_load_modules(u64 *protocols)
 {
 	u64 available;
 	int i, ret;