Merge remote-tracking branch 'regulator/for-next'
[deliverable/linux.git] / drivers / media / usb / gspca / sonixj.c
index fd1c8706d86a8ca03d617ae0c0e94704258a7373..d49d76ec142126c84868dcfd348aaf835ecaaee8 100644 (file)
@@ -54,7 +54,6 @@ struct sd {
        u32 exposure;
 
        struct work_struct work;
-       struct workqueue_struct *work_thread;
 
        u32 pktsz;                      /* (used by pkt_scan) */
        u16 npkt;
@@ -2485,7 +2484,6 @@ static int sd_start(struct gspca_dev *gspca_dev)
 
        sd->pktsz = sd->npkt = 0;
        sd->nchg = sd->short_mark = 0;
-       sd->work_thread = create_singlethread_workqueue(MODULE_NAME);
 
        return gspca_dev->usb_err;
 }
@@ -2569,12 +2567,9 @@ static void sd_stop0(struct gspca_dev *gspca_dev)
 {
        struct sd *sd = (struct sd *) gspca_dev;
 
-       if (sd->work_thread != NULL) {
-               mutex_unlock(&gspca_dev->usb_lock);
-               destroy_workqueue(sd->work_thread);
-               mutex_lock(&gspca_dev->usb_lock);
-               sd->work_thread = NULL;
-       }
+       mutex_unlock(&gspca_dev->usb_lock);
+       flush_work(&sd->work);
+       mutex_lock(&gspca_dev->usb_lock);
 }
 
 static void do_autogain(struct gspca_dev *gspca_dev)
@@ -2785,7 +2780,7 @@ marker_found:
                                new_qual = QUALITY_MAX;
                        if (new_qual != sd->quality) {
                                sd->quality = new_qual;
-                               queue_work(sd->work_thread, &sd->work);
+                               schedule_work(&sd->work);
                        }
                }
        } else {
This page took 0.026195 seconds and 5 git commands to generate.