aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/cx18/cx18-driver.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/cx18/cx18-driver.c')
-rw-r--r--drivers/media/video/cx18/cx18-driver.c28
1 files changed, 15 insertions, 13 deletions
diff --git a/drivers/media/video/cx18/cx18-driver.c b/drivers/media/video/cx18/cx18-driver.c
index 49b1c3d7b1a8..79750208e042 100644
--- a/drivers/media/video/cx18/cx18-driver.c
+++ b/drivers/media/video/cx18/cx18-driver.c
@@ -562,16 +562,18 @@ static int __devinit cx18_init_struct1(struct cx18 *cx)
562 mutex_init(&cx->epu2apu_mb_lock); 562 mutex_init(&cx->epu2apu_mb_lock);
563 mutex_init(&cx->epu2cpu_mb_lock); 563 mutex_init(&cx->epu2cpu_mb_lock);
564 564
565 cx->work_queue = create_singlethread_workqueue(cx->v4l2_dev.name); 565 snprintf(cx->in_workq_name, sizeof(cx->in_workq_name), "%s-in",
566 if (cx->work_queue == NULL) { 566 cx->v4l2_dev.name);
567 CX18_ERR("Unable to create work hander thread\n"); 567 cx->in_work_queue = create_singlethread_workqueue(cx->in_workq_name);
568 if (cx->in_work_queue == NULL) {
569 CX18_ERR("Unable to create incoming mailbox handler thread\n");
568 return -ENOMEM; 570 return -ENOMEM;
569 } 571 }
570 572
571 for (i = 0; i < CX18_MAX_EPU_WORK_ORDERS; i++) { 573 for (i = 0; i < CX18_MAX_IN_WORK_ORDERS; i++) {
572 cx->epu_work_order[i].cx = cx; 574 cx->in_work_order[i].cx = cx;
573 cx->epu_work_order[i].str = cx->epu_debug_str; 575 cx->in_work_order[i].str = cx->epu_debug_str;
574 INIT_WORK(&cx->epu_work_order[i].work, cx18_epu_work_handler); 576 INIT_WORK(&cx->in_work_order[i].work, cx18_in_work_handler);
575 } 577 }
576 578
577 /* start counting open_id at 1 */ 579 /* start counting open_id at 1 */
@@ -944,7 +946,7 @@ free_map:
944free_mem: 946free_mem:
945 release_mem_region(cx->base_addr, CX18_MEM_SIZE); 947 release_mem_region(cx->base_addr, CX18_MEM_SIZE);
946free_workqueue: 948free_workqueue:
947 destroy_workqueue(cx->work_queue); 949 destroy_workqueue(cx->in_work_queue);
948err: 950err:
949 if (retval == 0) 951 if (retval == 0)
950 retval = -ENODEV; 952 retval = -ENODEV;
@@ -1053,11 +1055,11 @@ int cx18_init_on_first_open(struct cx18 *cx)
1053 return 0; 1055 return 0;
1054} 1056}
1055 1057
1056static void cx18_cancel_epu_work_orders(struct cx18 *cx) 1058static void cx18_cancel_in_work_orders(struct cx18 *cx)
1057{ 1059{
1058 int i; 1060 int i;
1059 for (i = 0; i < CX18_MAX_EPU_WORK_ORDERS; i++) 1061 for (i = 0; i < CX18_MAX_IN_WORK_ORDERS; i++)
1060 cancel_work_sync(&cx->epu_work_order[i].work); 1062 cancel_work_sync(&cx->in_work_order[i].work);
1061} 1063}
1062 1064
1063static void cx18_remove(struct pci_dev *pci_dev) 1065static void cx18_remove(struct pci_dev *pci_dev)
@@ -1079,9 +1081,9 @@ static void cx18_remove(struct pci_dev *pci_dev)
1079 1081
1080 cx18_halt_firmware(cx); 1082 cx18_halt_firmware(cx);
1081 1083
1082 cx18_cancel_epu_work_orders(cx); 1084 cx18_cancel_in_work_orders(cx);
1083 1085
1084 destroy_workqueue(cx->work_queue); 1086 destroy_workqueue(cx->in_work_queue);
1085 1087
1086 cx18_streams_cleanup(cx, 1); 1088 cx18_streams_cleanup(cx, 1);
1087 1089