mirror of
https://github.com/LibreELEC/LibreELEC.tv
synced 2025-09-24 19:46:01 +07:00
175 lines
4.9 KiB
Diff
175 lines
4.9 KiB
Diff
diff -Naur linux-3.6.11/drivers/media/rc/ene_ir.c linux-3.6.11.patch/drivers/media/rc/ene_ir.c
|
|
--- linux-3.6.11/drivers/media/rc/ene_ir.c 2012-12-28 23:03:21.859277264 +0100
|
|
+++ linux-3.6.11.patch/drivers/media/rc/ene_ir.c 2012-12-28 23:03:33.651196525 +0100
|
|
@@ -1072,10 +1072,14 @@
|
|
device_set_wakeup_capable(&pnp_dev->dev, true);
|
|
device_set_wakeup_enable(&pnp_dev->dev, true);
|
|
|
|
+ error = rc_register_device(rdev);
|
|
+ if (error < 0)
|
|
+ goto exit_free_dev_rdev;
|
|
+
|
|
/* claim the resources */
|
|
error = -EBUSY;
|
|
if (!request_region(dev->hw_io, ENE_IO_SIZE, ENE_DRIVER_NAME)) {
|
|
- goto exit_free_dev_rdev;
|
|
+ goto exit_unregister_device;
|
|
}
|
|
|
|
dev->irq = pnp_irq(pnp_dev, 0);
|
|
@@ -1084,17 +1088,13 @@
|
|
goto exit_release_hw_io;
|
|
}
|
|
|
|
- error = rc_register_device(rdev);
|
|
- if (error < 0)
|
|
- goto exit_free_irq;
|
|
-
|
|
pr_notice("driver has been successfully loaded\n");
|
|
return 0;
|
|
|
|
-exit_free_irq:
|
|
- free_irq(dev->irq, dev);
|
|
exit_release_hw_io:
|
|
release_region(dev->hw_io, ENE_IO_SIZE);
|
|
+exit_unregister_device:
|
|
+ rc_unregister_device(rdev);
|
|
exit_free_dev_rdev:
|
|
rc_free_device(rdev);
|
|
kfree(dev);
|
|
diff -Naur linux-3.6.11/drivers/media/rc/ite-cir.c linux-3.6.11.patch/drivers/media/rc/ite-cir.c
|
|
--- linux-3.6.11/drivers/media/rc/ite-cir.c 2012-12-28 23:03:21.858277269 +0100
|
|
+++ linux-3.6.11.patch/drivers/media/rc/ite-cir.c 2012-12-28 23:06:45.772856073 +0100
|
|
@@ -1593,29 +1593,29 @@
|
|
|
|
itdev->rdev = rdev;
|
|
|
|
+ ret = rc_register_device(rdev);
|
|
+ if (ret)
|
|
+ goto exit_free_dev_rdev;
|
|
+
|
|
ret = -EBUSY;
|
|
/* now claim resources */
|
|
if (!request_region(itdev->cir_addr,
|
|
dev_desc->io_region_size, ITE_DRIVER_NAME))
|
|
- goto exit_free_dev_rdev;
|
|
+ goto exit_unregister_device;
|
|
|
|
|
|
if (request_irq(itdev->cir_irq, ite_cir_isr, IRQF_SHARED,
|
|
ITE_DRIVER_NAME, (void *)itdev))
|
|
goto exit_release_cir_addr;
|
|
|
|
- ret = rc_register_device(rdev);
|
|
- if (ret)
|
|
- goto exit_free_irq;
|
|
-
|
|
ite_pr(KERN_NOTICE, "driver has been successfully loaded\n");
|
|
|
|
return 0;
|
|
|
|
-exit_free_irq:
|
|
- free_irq(itdev->cir_irq, itdev);
|
|
exit_release_cir_addr:
|
|
release_region(itdev->cir_addr, itdev->params.io_region_size);
|
|
+exit_unregister_device:
|
|
+ rc_unregister_device(rdev);
|
|
exit_free_dev_rdev:
|
|
rc_free_device(rdev);
|
|
kfree(itdev);
|
|
diff -Naur linux-3.6.11/drivers/media/rc/nuvoton-cir.c linux-3.6.11.patch/drivers/media/rc/nuvoton-cir.c
|
|
--- linux-3.6.11/drivers/media/rc/nuvoton-cir.c 2012-12-28 23:03:21.858277269 +0100
|
|
+++ linux-3.6.11.patch/drivers/media/rc/nuvoton-cir.c 2012-12-28 23:03:33.653196511 +0100
|
|
@@ -1067,11 +1067,15 @@
|
|
#endif
|
|
nvt->rdev = rdev;
|
|
|
|
+ ret = rc_register_device(rdev);
|
|
+ if (ret)
|
|
+ goto exit_free_dev_rdev;
|
|
+
|
|
ret = -EBUSY;
|
|
/* now claim resources */
|
|
if (!request_region(nvt->cir_addr,
|
|
CIR_IOREG_LENGTH, NVT_DRIVER_NAME))
|
|
- goto exit_free_dev_rdev;
|
|
+ goto exit_unregister_device;
|
|
|
|
if (request_irq(nvt->cir_irq, nvt_cir_isr, IRQF_SHARED,
|
|
NVT_DRIVER_NAME, (void *)nvt))
|
|
@@ -1085,10 +1089,6 @@
|
|
NVT_DRIVER_NAME, (void *)nvt))
|
|
goto exit_release_cir_wake_addr;
|
|
|
|
- ret = rc_register_device(rdev);
|
|
- if (ret)
|
|
- goto exit_free_wake_irq;
|
|
-
|
|
device_init_wakeup(&pdev->dev, true);
|
|
|
|
nvt_pr(KERN_NOTICE, "driver has been successfully loaded\n");
|
|
@@ -1099,14 +1099,14 @@
|
|
|
|
return 0;
|
|
|
|
-exit_free_wake_irq:
|
|
- free_irq(nvt->cir_wake_irq, nvt);
|
|
exit_release_cir_wake_addr:
|
|
release_region(nvt->cir_wake_addr, CIR_IOREG_LENGTH);
|
|
exit_free_irq:
|
|
free_irq(nvt->cir_irq, nvt);
|
|
exit_release_cir_addr:
|
|
release_region(nvt->cir_addr, CIR_IOREG_LENGTH);
|
|
+exit_unregister_device:
|
|
+ rc_unregister_device(rdev);
|
|
exit_free_dev_rdev:
|
|
rc_free_device(rdev);
|
|
kfree(nvt);
|
|
diff -Naur linux-3.6.11/drivers/media/rc/winbond-cir.c linux-3.6.11.patch/drivers/media/rc/winbond-cir.c
|
|
--- linux-3.6.11/drivers/media/rc/winbond-cir.c 2012-12-28 23:03:21.858277269 +0100
|
|
+++ linux-3.6.11.patch/drivers/media/rc/winbond-cir.c 2012-12-28 23:03:33.653196511 +0100
|
|
@@ -1035,11 +1035,15 @@
|
|
data->dev->timeout = MS_TO_NS(100);
|
|
data->dev->allowed_protos = RC_TYPE_ALL;
|
|
|
|
+ err = rc_register_device(data->dev);
|
|
+ if (err)
|
|
+ goto exit_free_rc;
|
|
+
|
|
if (!request_region(data->wbase, WAKEUP_IOMEM_LEN, DRVNAME)) {
|
|
dev_err(dev, "Region 0x%lx-0x%lx already in use!\n",
|
|
data->wbase, data->wbase + WAKEUP_IOMEM_LEN - 1);
|
|
err = -EBUSY;
|
|
- goto exit_free_rc;
|
|
+ goto exit_unregister_device;
|
|
}
|
|
|
|
if (!request_region(data->ebase, EHFUNC_IOMEM_LEN, DRVNAME)) {
|
|
@@ -1064,24 +1068,20 @@
|
|
goto exit_release_sbase;
|
|
}
|
|
|
|
- err = rc_register_device(data->dev);
|
|
- if (err)
|
|
- goto exit_free_irq;
|
|
-
|
|
device_init_wakeup(&device->dev, 1);
|
|
|
|
wbcir_init_hw(data);
|
|
|
|
return 0;
|
|
|
|
-exit_free_irq:
|
|
- free_irq(data->irq, device);
|
|
exit_release_sbase:
|
|
release_region(data->sbase, SP_IOMEM_LEN);
|
|
exit_release_ebase:
|
|
release_region(data->ebase, EHFUNC_IOMEM_LEN);
|
|
exit_release_wbase:
|
|
release_region(data->wbase, WAKEUP_IOMEM_LEN);
|
|
+exit_unregister_device:
|
|
+ rc_unregister_device(data->dev);
|
|
exit_free_rc:
|
|
rc_free_device(data->dev);
|
|
exit_unregister_led:
|