|
@@ -265,8 +265,6 @@ static struct device_type rc_dev_type = {
|
|
|
*/
|
|
|
int ir_register_class(struct input_dev *input_dev)
|
|
|
{
|
|
|
- int rc;
|
|
|
- const char *path;
|
|
|
struct ir_input_dev *ir_dev = input_get_drvdata(input_dev);
|
|
|
int devno = find_first_zero_bit(&ir_core_dev_number,
|
|
|
IRRCV_NUM_DEVICES);
|
|
@@ -275,17 +273,28 @@ int ir_register_class(struct input_dev *input_dev)
|
|
|
return devno;
|
|
|
|
|
|
ir_dev->dev.type = &rc_dev_type;
|
|
|
+ ir_dev->devno = devno;
|
|
|
|
|
|
ir_dev->dev.class = &ir_input_class;
|
|
|
ir_dev->dev.parent = input_dev->dev.parent;
|
|
|
+ input_dev->dev.parent = &ir_dev->dev;
|
|
|
dev_set_name(&ir_dev->dev, "rc%d", devno);
|
|
|
dev_set_drvdata(&ir_dev->dev, ir_dev);
|
|
|
- rc = device_register(&ir_dev->dev);
|
|
|
- if (rc)
|
|
|
- return rc;
|
|
|
+ return device_register(&ir_dev->dev);
|
|
|
+};
|
|
|
+
|
|
|
+/**
|
|
|
+ * ir_register_input - registers ir input device with input subsystem
|
|
|
+ * @input_dev: the struct input_dev descriptor of the device
|
|
|
+ */
|
|
|
+
|
|
|
+int ir_register_input(struct input_dev *input_dev)
|
|
|
+{
|
|
|
+ struct ir_input_dev *ir_dev = input_get_drvdata(input_dev);
|
|
|
+ int rc;
|
|
|
+ const char *path;
|
|
|
|
|
|
|
|
|
- input_dev->dev.parent = &ir_dev->dev;
|
|
|
rc = input_register_device(input_dev);
|
|
|
if (rc < 0) {
|
|
|
device_del(&ir_dev->dev);
|
|
@@ -301,11 +310,9 @@ int ir_register_class(struct input_dev *input_dev)
|
|
|
path ? path : "N/A");
|
|
|
kfree(path);
|
|
|
|
|
|
- ir_dev->devno = devno;
|
|
|
- set_bit(devno, &ir_core_dev_number);
|
|
|
-
|
|
|
+ set_bit(ir_dev->devno, &ir_core_dev_number);
|
|
|
return 0;
|
|
|
-};
|
|
|
+}
|
|
|
|
|
|
/**
|
|
|
* ir_unregister_class() - removes the sysfs for sysfs for
|