Commit 712551f0 authored by David Härdeman's avatar David Härdeman Committed by Mauro Carvalho Chehab

[media] lirc_dev: remove lirc_irctl_init() and lirc_cdev_add()

These two functions only make the logic in lirc_register_driver()
harder to follow.

(Note that almost no other driver calls kobject_set_name() on their cdev
so I simply removed that part).
Signed-off-by: default avatarDavid Härdeman <david@hardeman.nu>
Signed-off-by: default avatarSean Young <sean@mess.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent bd16168d
...@@ -65,15 +65,6 @@ static struct irctl *irctls[MAX_IRCTL_DEVICES]; ...@@ -65,15 +65,6 @@ static struct irctl *irctls[MAX_IRCTL_DEVICES];
/* Only used for sysfs but defined to void otherwise */ /* Only used for sysfs but defined to void otherwise */
static struct class *lirc_class; static struct class *lirc_class;
/* helper function
* initializes the irctl structure
*/
static void lirc_irctl_init(struct irctl *ir)
{
mutex_init(&ir->irctl_lock);
ir->d.minor = NOPLUG;
}
static void lirc_release(struct device *ld) static void lirc_release(struct device *ld)
{ {
struct irctl *ir = container_of(ld, struct irctl, dev); struct irctl *ir = container_of(ld, struct irctl, dev);
...@@ -91,27 +82,6 @@ static void lirc_release(struct device *ld) ...@@ -91,27 +82,6 @@ static void lirc_release(struct device *ld)
kfree(ir); kfree(ir);
} }
static int lirc_cdev_add(struct irctl *ir)
{
struct lirc_driver *d = &ir->d;
struct cdev *cdev;
int retval;
cdev = &ir->cdev;
if (!d->fops)
return -EINVAL;
cdev_init(cdev, d->fops);
cdev->owner = d->owner;
retval = kobject_set_name(&cdev->kobj, "lirc%d", d->minor);
if (retval)
return retval;
cdev->kobj.parent = &ir->dev.kobj;
return cdev_add(cdev, ir->dev.devt, 1);
}
static int lirc_allocate_buffer(struct irctl *ir) static int lirc_allocate_buffer(struct irctl *ir)
{ {
int err = 0; int err = 0;
...@@ -167,6 +137,11 @@ int lirc_register_driver(struct lirc_driver *d) ...@@ -167,6 +137,11 @@ int lirc_register_driver(struct lirc_driver *d)
return -EINVAL; return -EINVAL;
} }
if (!d->fops) {
pr_err("fops pointer not filled in!\n");
return -EINVAL;
}
if (d->minor >= MAX_IRCTL_DEVICES) { if (d->minor >= MAX_IRCTL_DEVICES) {
dev_err(d->dev, "minor must be between 0 and %d!\n", dev_err(d->dev, "minor must be between 0 and %d!\n",
MAX_IRCTL_DEVICES - 1); MAX_IRCTL_DEVICES - 1);
...@@ -210,7 +185,8 @@ int lirc_register_driver(struct lirc_driver *d) ...@@ -210,7 +185,8 @@ int lirc_register_driver(struct lirc_driver *d)
err = -ENOMEM; err = -ENOMEM;
goto out_lock; goto out_lock;
} }
lirc_irctl_init(ir);
mutex_init(&ir->irctl_lock);
irctls[minor] = ir; irctls[minor] = ir;
d->minor = minor; d->minor = minor;
...@@ -238,7 +214,11 @@ int lirc_register_driver(struct lirc_driver *d) ...@@ -238,7 +214,11 @@ int lirc_register_driver(struct lirc_driver *d)
ir->dev.release = lirc_release; ir->dev.release = lirc_release;
dev_set_name(&ir->dev, "lirc%d", ir->d.minor); dev_set_name(&ir->dev, "lirc%d", ir->d.minor);
err = lirc_cdev_add(ir); cdev_init(&ir->cdev, d->fops);
ir->cdev.owner = ir->d.owner;
ir->cdev.kobj.parent = &ir->dev.kobj;
err = cdev_add(&ir->cdev, ir->dev.devt, 1);
if (err) if (err)
goto out_free_dev; goto out_free_dev;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment