mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 11:26:02 +09:00
UPSTREAM: [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> (cherry picked from commit5df62771c5) Signed-off-by: Ziyuan Xu <xzy.xu@rock-chips.com>
This commit is contained in:
@@ -1785,12 +1785,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) {
|
||||
@@ -1799,7 +1793,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 */
|
||||
@@ -1811,8 +1811,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:
|
||||
|
||||
Reference in New Issue
Block a user