Commit 727e625c authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab
Browse files

V4L/DVB: ir-core: export driver name used by IR via uevent



Now, both driver and keytable names are exported to userspace. This
will help userspace to decide when a table need to be replaced
by another one.

Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 9c89a181
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -404,7 +404,8 @@ EXPORT_SYMBOL_GPL(ir_g_keycode_from_table);
 */
int ir_input_register(struct input_dev *input_dev,
		      const struct ir_scancode_table *rc_tab,
		      const struct ir_dev_props *props)
		      const struct ir_dev_props *props,
		      const char *driver_name)
{
	struct ir_input_dev *ir_dev;
	struct ir_scancode  *keymap    = rc_tab->scan;
@@ -419,6 +420,10 @@ int ir_input_register(struct input_dev *input_dev,

	spin_lock_init(&ir_dev->rc_tab.lock);

	ir_dev->driver_name = kmalloc(strlen(driver_name) + 1, GFP_KERNEL);
	if (!ir_dev->driver_name)
		return -ENOMEM;
	strcpy(ir_dev->driver_name, driver_name);
	ir_dev->rc_tab.name = rc_tab->name;
	ir_dev->rc_tab.size = ir_roundup_tablesize(rc_tab->size);
	ir_dev->rc_tab.scan = kzalloc(ir_dev->rc_tab.size *
+2 −0
Original line number Diff line number Diff line
@@ -140,6 +140,8 @@ static int ir_dev_uevent(struct device *device, struct kobj_uevent_env *env)

	if (ir_dev->rc_tab.name)
		ADD_HOTPLUG_VAR("NAME=\"%s\"", ir_dev->rc_tab.name);
	if (ir_dev->driver_name)
		ADD_HOTPLUG_VAR("DRV_NAME=\"%s\"", ir_dev->driver_name);

	return 0;
}
+3 −1
Original line number Diff line number Diff line
@@ -46,6 +46,8 @@
#include "z0194a.h"
#include "ds3000.h"

#define MODULE_NAME "dm1105"

#define UNSET (-1U)

#define DM1105_BOARD_NOAUTO		UNSET
@@ -628,7 +630,7 @@ int __devinit dm1105_ir_init(struct dm1105_dev *dm1105)

	INIT_WORK(&dm1105->ir.work, dm1105_emit_key);

	err = ir_input_register(input_dev, ir_codes, NULL);
	err = ir_input_register(input_dev, ir_codes, NULL, MODULE_NAME);

	return err;
}
+3 −1
Original line number Diff line number Diff line
@@ -32,6 +32,8 @@
#include "mantis_reg.h"
#include "mantis_uart.h"

#define MODULE_NAME "mantis_core"

static struct ir_scancode mantis_ir_table[] = {
	{ 0x29, KEY_POWER	},
	{ 0x28, KEY_FAVORITES	},
@@ -126,7 +128,7 @@ int mantis_input_init(struct mantis_pci *mantis)
	rc->id.version	= 1;
	rc->dev		= mantis->pdev->dev;

	err = ir_input_register(rc, &ir_mantis, NULL);
	err = ir_input_register(rc, &ir_mantis, NULL, MODULE_NAME);
	if (err) {
		dprintk(MANTIS_ERROR, 1, "IR device registration failed, ret = %d", err);
		input_free_device(rc);
+3 −1
Original line number Diff line number Diff line
@@ -54,6 +54,8 @@
#include "tda1002x.h"
#include "tda827x.h"

#define MODULE_NAME "budget_ci"

/*
 * Regarding DEBIADDR_IR:
 * Some CI modules hang if random addresses are read.
@@ -254,7 +256,7 @@ static int msp430_ir_init(struct budget_ci *budget_ci)
	budget_ci->ir.timer_keyup.function = msp430_ir_keyup;
	budget_ci->ir.timer_keyup.data = (unsigned long) &budget_ci->ir;
	budget_ci->ir.last_raw = 0xffff; /* An impossible value */
	error = ir_input_register(input_dev, ir_codes, NULL);
	error = ir_input_register(input_dev, ir_codes, NULL, MODULE_NAME);
	if (error) {
		printk(KERN_ERR "budget_ci: could not init driver for IR device (code %d)\n", error);
		return error;
Loading