mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-23 04:34:11 +08:00
[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: 7ff2c2b
("[media] rc-main: split setup and unregister functions")
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
This commit is contained in:
parent
413808685d
commit
5df62771c5
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user