summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--linux/drivers/media/video/cx18/cx18-driver.c11
-rw-r--r--v4l/versions.txt2
2 files changed, 11 insertions, 2 deletions
diff --git a/linux/drivers/media/video/cx18/cx18-driver.c b/linux/drivers/media/video/cx18/cx18-driver.c
index 198fdf9a6..57fcce84b 100644
--- a/linux/drivers/media/video/cx18/cx18-driver.c
+++ b/linux/drivers/media/video/cx18/cx18-driver.c
@@ -918,6 +918,7 @@ int cx18_init_on_first_open(struct cx18 *cx)
return 0;
}
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 22)
static void cx18_cancel_epu_work_orders(struct cx18 *cx)
{
int i;
@@ -925,6 +926,7 @@ static void cx18_cancel_epu_work_orders(struct cx18 *cx)
cancel_work_sync(&cx->epu_work_order[i].work);
}
+#endif
static void cx18_remove(struct pci_dev *pci_dev)
{
struct cx18 *cx = pci_get_drvdata(pci_dev);
@@ -938,11 +940,20 @@ static void cx18_remove(struct pci_dev *pci_dev)
/* Interrupts */
cx18_sw1_irq_disable(cx, IRQ_CPU_TO_EPU | IRQ_APU_TO_EPU);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 22)
cx18_sw2_irq_disable(cx, IRQ_CPU_TO_EPU_ACK | IRQ_APU_TO_EPU_ACK);
cx18_halt_firmware(cx);
cx18_cancel_epu_work_orders(cx);
+#else
+
+ flush_workqueue(cx->work_queue);
+
+ cx18_sw2_irq_disable(cx, IRQ_CPU_TO_EPU_ACK | IRQ_APU_TO_EPU_ACK);
+
+ cx18_halt_firmware(cx);
+#endif
destroy_workqueue(cx->work_queue);
diff --git a/v4l/versions.txt b/v4l/versions.txt
index c09b5d69a..3ef9af5d8 100644
--- a/v4l/versions.txt
+++ b/v4l/versions.txt
@@ -20,8 +20,6 @@ USB_STKWEBCAM
DVB_DRX397XD
# Assumes struct input_dev has a dev field
DVB_DM1105
-# Need cancel_work_sync
-VIDEO_CX18
[2.6.20]
#This driver requires HID_REQ_GET_REPORT