Commit 8d93d067 authored by Ricardo B. Marliere's avatar Ricardo B. Marliere Committed by Hans Verkuil
Browse files

media: lirc_dev: Make lirc_class constant



Since commit 43a7206b ("driver core: class: make class_register() take
a const *"), the driver core allows for struct class to be in read-only
memory, so move the lirc_class structure to be declared at build time
placing it into read-only memory, instead of having to be dynamically
allocated at boot time.

Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Suggested-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarRicardo B. Marliere <ricardo@marliere.net>
Signed-off-by: default avatarSean Young <sean@mess.org>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
parent 888eefd9
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -27,7 +27,9 @@ static dev_t lirc_base_dev;
static DEFINE_IDA(lirc_ida);

/* Only used for sysfs but defined to void otherwise */
static struct class *lirc_class;
static const struct class lirc_class = {
	.name = "lirc",
};

/**
 * lirc_raw_event() - Send raw IR data to lirc to be relayed to userspace
@@ -724,7 +726,7 @@ int lirc_register(struct rc_dev *dev)
		return minor;

	device_initialize(&dev->lirc_dev);
	dev->lirc_dev.class = lirc_class;
	dev->lirc_dev.class = &lirc_class;
	dev->lirc_dev.parent = &dev->dev;
	dev->lirc_dev.release = lirc_release_device;
	dev->lirc_dev.devt = MKDEV(MAJOR(lirc_base_dev), minor);
@@ -789,15 +791,13 @@ int __init lirc_dev_init(void)
{
	int retval;

	lirc_class = class_create("lirc");
	if (IS_ERR(lirc_class)) {
		pr_err("class_create failed\n");
		return PTR_ERR(lirc_class);
	}
	retval = class_register(&lirc_class);
	if (retval)
		return retval;

	retval = alloc_chrdev_region(&lirc_base_dev, 0, RC_DEV_MAX, "lirc");
	if (retval) {
		class_destroy(lirc_class);
		class_unregister(&lirc_class);
		pr_err("alloc_chrdev_region failed\n");
		return retval;
	}
@@ -810,7 +810,7 @@ int __init lirc_dev_init(void)

void __exit lirc_dev_exit(void)
{
	class_destroy(lirc_class);
	class_unregister(&lirc_class);
	unregister_chrdev_region(lirc_base_dev, RC_DEV_MAX);
}