Skip to content

Commit

Permalink
[media] rc-core: merge rc-map.c into rc-main.c
Browse files Browse the repository at this point in the history
With this change, all rc-core functions are into just one file, except
for the rc-raw specific functions.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
  • Loading branch information
Mauro Carvalho Chehab committed Dec 29, 2010
1 parent bc2a6c5 commit 631493e
Show file tree
Hide file tree
Showing 3 changed files with 94 additions and 109 deletions.
2 changes: 1 addition & 1 deletion drivers/media/rc/Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
ir-common-objs := ir-functions.o
rc-core-objs := rc-main.o rc-raw.o rc-map.o
rc-core-objs := rc-main.o rc-raw.o

obj-y += keymaps/

Expand Down
94 changes: 93 additions & 1 deletion drivers/media/rc/rc-main.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@
* GNU General Public License for more details.
*/


#include <media/ir-core.h>
#include <linux/spinlock.h>
#include <linux/delay.h>
#include <linux/input.h>
#include <linux/slab.h>
#include <linux/device.h>
Expand All @@ -30,6 +32,96 @@ static unsigned long ir_core_dev_number;
/* FIXME: IR_KEYPRESS_TIMEOUT should be protocol specific */
#define IR_KEYPRESS_TIMEOUT 250

/* Used to handle IR raw handler extensions */
static LIST_HEAD(rc_map_list);
static DEFINE_SPINLOCK(rc_map_lock);

static struct rc_keymap *seek_rc_map(const char *name)
{
struct rc_keymap *map = NULL;

spin_lock(&rc_map_lock);
list_for_each_entry(map, &rc_map_list, list) {
if (!strcmp(name, map->map.name)) {
spin_unlock(&rc_map_lock);
return map;
}
}
spin_unlock(&rc_map_lock);

return NULL;
}

struct ir_scancode_table *get_rc_map(const char *name)
{

struct rc_keymap *map;

map = seek_rc_map(name);
#ifdef MODULE
if (!map) {
int rc = request_module(name);
if (rc < 0) {
printk(KERN_ERR "Couldn't load IR keymap %s\n", name);
return NULL;
}
msleep(20); /* Give some time for IR to register */

map = seek_rc_map(name);
}
#endif
if (!map) {
printk(KERN_ERR "IR keymap %s not found\n", name);
return NULL;
}

printk(KERN_INFO "Registered IR keymap %s\n", map->map.name);

return &map->map;
}
EXPORT_SYMBOL_GPL(get_rc_map);

int ir_register_map(struct rc_keymap *map)
{
spin_lock(&rc_map_lock);
list_add_tail(&map->list, &rc_map_list);
spin_unlock(&rc_map_lock);
return 0;
}
EXPORT_SYMBOL_GPL(ir_register_map);

void ir_unregister_map(struct rc_keymap *map)
{
spin_lock(&rc_map_lock);
list_del(&map->list);
spin_unlock(&rc_map_lock);
}
EXPORT_SYMBOL_GPL(ir_unregister_map);


static struct ir_scancode empty[] = {
{ 0x2a, KEY_COFFEE },
};

static struct rc_keymap empty_map = {
.map = {
.scan = empty,
.size = ARRAY_SIZE(empty),
.ir_type = IR_TYPE_UNKNOWN, /* Legacy IR type */
.name = RC_MAP_EMPTY,
}
};

int ir_rcmap_init(void)
{
return ir_register_map(&empty_map);
}

void ir_rcmap_cleanup(void)
{
ir_unregister_map(&empty_map);
}

/**
* ir_create_table() - initializes a scancode table
* @rc_tab: the ir_scancode_table to initialize
Expand Down
107 changes: 0 additions & 107 deletions drivers/media/rc/rc-map.c

This file was deleted.

0 comments on commit 631493e

Please sign in to comment.