summaryrefslogtreecommitdiffstats
path: root/drivers/media/common/ir-functions.c
diff options
context:
space:
mode:
authorMauro Carvalho Chehab2009-11-29 15:08:02 +0100
committerMauro Carvalho Chehab2009-12-05 21:42:21 +0100
commitf6fc50494027e913ff0159e43c593cd75f35ec7a (patch)
treee9337bfa7c65fb9d35db726003b84907c9b9ac61 /drivers/media/common/ir-functions.c
parentV4L/DVB (13537): ir: Prepare the code for dynamic keycode table allocation (diff)
downloadkernel-qcow2-linux-f6fc50494027e913ff0159e43c593cd75f35ec7a.tar.gz
kernel-qcow2-linux-f6fc50494027e913ff0159e43c593cd75f35ec7a.tar.xz
kernel-qcow2-linux-f6fc50494027e913ff0159e43c593cd75f35ec7a.zip
V4L/DVB (13538): ir-common: Use a dynamic keycode table
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/common/ir-functions.c')
-rw-r--r--drivers/media/common/ir-functions.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/drivers/media/common/ir-functions.c b/drivers/media/common/ir-functions.c
index b31bd27da374..e616f624ceaa 100644
--- a/drivers/media/common/ir-functions.c
+++ b/drivers/media/common/ir-functions.c
@@ -59,12 +59,20 @@ int ir_input_init(struct input_dev *dev, struct ir_input_state *ir,
{
ir->ir_type = ir_type;
- /* FIXME: Add the proper code to dynamically allocate IR table */
+ ir->keytable.size = ir_roundup_tablesize(ir_codes->size);
+ ir->keytable.scan = kzalloc(ir->keytable.size *
+ sizeof(struct ir_scancode), GFP_KERNEL);
+ if (!ir->keytable.scan)
+ return -ENOMEM;
- ir_set_keycode_table(dev, ir_codes);
+ IR_dprintk(1, "Allocated space for %d keycode entries (%zd bytes)\n",
+ ir->keytable.size,
+ ir->keytable.size * sizeof(ir->keytable.scan));
- clear_bit(0, dev->keybit);
+ ir_copy_table(&ir->keytable, ir_codes);
+ ir_set_keycode_table(dev, &ir->keytable);
+ clear_bit(0, dev->keybit);
set_bit(EV_KEY, dev->evbit);
if (repeat)
set_bit(EV_REP, dev->evbit);
@@ -73,11 +81,6 @@ int ir_input_init(struct input_dev *dev, struct ir_input_state *ir,
}
EXPORT_SYMBOL_GPL(ir_input_init);
-void ir_input_free(struct input_dev *input_dev)
-{
- /* FIXME: Add the proper code to free allocated resources */
-}
-EXPORT_SYMBOL_GPL(ir_input_free);
void ir_input_nokey(struct input_dev *dev, struct ir_input_state *ir)
{