Merge tag 'v4.11-rc5' into patchwork
Linux 4.11-rc5 * tag 'v4.11-rc5': (1168 commits) Linux 4.11-rc5 tty: pl011: fix earlycon work-around for QDF2400 erratum 44 kasan: do not sanitize kexec purgatory drivers/rapidio/devices/tsi721.c: make module parameter variable name unique mm/hugetlb.c: don't call region_abort if region_chg fails kasan: report only the first error by default hugetlbfs: initialize shared policy as part of inode allocation mm: fix section name for .data..ro_after_init mm, hugetlb: use pte_present() instead of pmd_present() in follow_huge_pmd() mm: workingset: fix premature shadow node shrinking with cgroups mm: rmap: fix huge file mmap accounting in the memcg stats mm: move mm_percpu_wq initialization earlier mm: migrate: fix remove_migration_pte() for ksm pages nfs: flexfiles: fix kernel OOPS if MDS returns unsupported DS type NFSv4.1 fix infinite loop on IO BAD_STATEID error serial: 8250_EXAR: fix duplicate Kconfig text and add missing help text tty/serial: atmel: fix TX path in atmel_console_write() tty/serial: atmel: fix race condition (TX+DMA) serial: mxs-auart: Fix baudrate calculation irqchip/mips-gic: Fix Local compare interrupt ...
This commit is contained in:
@@ -1667,6 +1667,7 @@ static int rc_setup_rx_device(struct rc_dev *dev)
|
||||
{
|
||||
int rc;
|
||||
struct rc_map *rc_map;
|
||||
u64 rc_type;
|
||||
|
||||
if (!dev->map_name)
|
||||
return -EINVAL;
|
||||
@@ -1681,15 +1682,18 @@ static int rc_setup_rx_device(struct rc_dev *dev)
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
if (dev->change_protocol) {
|
||||
u64 rc_type = (1ll << rc_map->rc_type);
|
||||
rc_type = BIT_ULL(rc_map->rc_type);
|
||||
|
||||
if (dev->change_protocol) {
|
||||
rc = dev->change_protocol(dev, &rc_type);
|
||||
if (rc < 0)
|
||||
goto out_table;
|
||||
dev->enabled_protocols = rc_type;
|
||||
}
|
||||
|
||||
if (dev->driver_type == RC_DRIVER_IR_RAW)
|
||||
ir_raw_load_modules(&rc_type);
|
||||
|
||||
set_bit(EV_KEY, dev->input_dev->evbit);
|
||||
set_bit(EV_REP, dev->input_dev->evbit);
|
||||
set_bit(EV_MSC, dev->input_dev->evbit);
|
||||
@@ -1781,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) {
|
||||
@@ -1795,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 */
|
||||
@@ -1807,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