Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5df62771 authored by Sean Young's avatar Sean Young Committed by Mauro Carvalho Chehab
Browse files

[media] rc: protocol is not set on register for raw IR devices



ir_raw_event_register() sets up change_protocol(), and without that set,
rc_setup_rx_device() does not set the protocol for the device on register.

The standard udev rules run ir-keytable, which writes to the protocols
file again, which hides this problem.

Fixes: 7ff2c2bc ("[media] rc-main: split setup and unregister functions")

Signed-off-by: default avatarSean Young <sean@mess.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent 41380868
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -1781,12 +1781,6 @@ int rc_register_device(struct rc_dev *dev)
		dev->input_name ?: "Unspecified device", path ?: "N/A");
	kfree(path);

	if (dev->driver_type != RC_DRIVER_IR_RAW_TX) {
		rc = rc_setup_rx_device(dev);
		if (rc)
			goto out_dev;
	}

	if (dev->driver_type == RC_DRIVER_IR_RAW ||
	    dev->driver_type == RC_DRIVER_IR_RAW_TX) {
		if (!raw_init) {
@@ -1795,7 +1789,13 @@ int rc_register_device(struct rc_dev *dev)
		}
		rc = ir_raw_event_register(dev);
		if (rc < 0)
			goto out_rx;
			goto out_dev;
	}

	if (dev->driver_type != RC_DRIVER_IR_RAW_TX) {
		rc = rc_setup_rx_device(dev);
		if (rc)
			goto out_raw;
	}

	/* Allow the RC sysfs nodes to be accessible */
@@ -1807,8 +1807,8 @@ int rc_register_device(struct rc_dev *dev)

	return 0;

out_rx:
	rc_free_rx_device(dev);
out_raw:
	ir_raw_event_unregister(dev);
out_dev:
	device_del(&dev->dev);
out_unlock: