V4L/DVB (4949a): Fix INIT_WORK
[safe/jmp/linux-2.6] / drivers / media / video / usbvision / usbvision-core.c
index 9163b60..9ff93e7 100644 (file)
@@ -1708,7 +1708,6 @@ int usbvision_power_off(struct usb_usbvision *usbvision)
        return errCode;
 }
 
-
 /*
  * usbvision_set_video_format()
  *
@@ -2217,14 +2216,15 @@ int usbvision_power_on(struct usb_usbvision *usbvision)
  */
 
 // to call usbvision_power_off from task queue
-static void call_usbvision_power_off(void *_usbvision)
+static void call_usbvision_power_off(struct work_struct *work)
 {
-       struct usb_usbvision *usbvision = _usbvision;
+       struct usb_usbvision *usbvision = container_of(work, struct usb_usbvision, work);
 
        PDEBUG(DBG_FUNC, "");
        down_interruptible(&usbvision->lock);
        if(usbvision->user == 0) {
                usbvision_i2c_usb_del_bus(&usbvision->i2c_adap);
+
                usbvision_power_off(usbvision);
                usbvision->initialized = 0;
        }
@@ -2237,7 +2237,7 @@ static void usbvision_powerOffTimer(unsigned long data)
 
        PDEBUG(DBG_FUNC, "");
        del_timer(&usbvision->powerOffTimer);
-       INIT_WORK(&usbvision->powerOffWork, call_usbvision_power_off, usbvision);
+       INIT_WORK(&usbvision->powerOffWork, call_usbvision_power_off);
        (void) schedule_work(&usbvision->powerOffWork);
 
 }