]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/media/video/cpia2/cpia2_core.c
Merge branch 'release' of git://lm-sensors.org/kernel/mhoffman/hwmon-2.6
[linux-2.6-omap-h63xx.git] / drivers / media / video / cpia2 / cpia2_core.c
index 5dfb242d5b8c5ddec41661247f6ade6e28b4f24b..a76bd786cf13474f3f16c5f2282f050f3bb39e4e 100644 (file)
@@ -663,15 +663,13 @@ int cpia2_reset_camera(struct camera_data *cam)
                cpia2_send_command(cam, &cmd);
        }
 
-       current->state = TASK_INTERRUPTIBLE;
-       schedule_timeout(100 * HZ / 1000);      /* wait for 100 msecs */
+       schedule_timeout_interruptible(msecs_to_jiffies(100));
 
        if (cam->params.pnp_id.device_type == DEVICE_STV_672)
                retval = apply_vp_patch(cam);
 
        /* wait for vp to go to sleep */
-       current->state = TASK_INTERRUPTIBLE;
-       schedule_timeout(100 * HZ / 1000);      /* wait for 100 msecs */
+       schedule_timeout_interruptible(msecs_to_jiffies(100));
 
        /***
         * If this is a 676, apply VP5 fixes before we start streaming
@@ -720,8 +718,7 @@ int cpia2_reset_camera(struct camera_data *cam)
        set_default_user_mode(cam);
 
        /* Give VP time to wake up */
-       current->state = TASK_INTERRUPTIBLE;
-       schedule_timeout(100 * HZ / 1000);      /* wait for 100 msecs */
+       schedule_timeout_interruptible(msecs_to_jiffies(100));
 
        set_all_properties(cam);
 
@@ -2227,18 +2224,16 @@ struct camera_data *cpia2_init_camera_struct(void)
 {
        struct camera_data *cam;
 
-       cam = kmalloc(sizeof(*cam), GFP_KERNEL);
+       cam = kzalloc(sizeof(*cam), GFP_KERNEL);
 
        if (!cam) {
                ERR("couldn't kmalloc cpia2 struct\n");
                return NULL;
        }
 
-       /* Default everything to 0 */
-       memset(cam, 0, sizeof(struct camera_data));
 
        cam->present = 1;
-       init_MUTEX(&cam->busy_lock);
+       mutex_init(&cam->busy_lock);
        init_waitqueue_head(&cam->wq_stream);
 
        return cam;
@@ -2371,12 +2366,12 @@ long cpia2_read(struct camera_data *cam,
        }
 
        /* make this _really_ smp and multithread-safe */
-       if (down_interruptible(&cam->busy_lock))
+       if (mutex_lock_interruptible(&cam->busy_lock))
                return -ERESTARTSYS;
 
        if (!cam->present) {
                LOG("%s: camera removed\n",__FUNCTION__);
-               up(&cam->busy_lock);
+               mutex_unlock(&cam->busy_lock);
                return 0;       /* EOF */
        }
 
@@ -2389,34 +2384,34 @@ long cpia2_read(struct camera_data *cam,
        /* Copy cam->curbuff in case it changes while we're processing */
        frame = cam->curbuff;
        if (noblock && frame->status != FRAME_READY) {
-               up(&cam->busy_lock);
+               mutex_unlock(&cam->busy_lock);
                return -EAGAIN;
        }
 
        if(frame->status != FRAME_READY) {
-               up(&cam->busy_lock);
+               mutex_unlock(&cam->busy_lock);
                wait_event_interruptible(cam->wq_stream,
                               !cam->present ||
                               (frame = cam->curbuff)->status == FRAME_READY);
                if (signal_pending(current))
                        return -ERESTARTSYS;
                /* make this _really_ smp and multithread-safe */
-               if (down_interruptible(&cam->busy_lock)) {
+               if (mutex_lock_interruptible(&cam->busy_lock)) {
                        return -ERESTARTSYS;
                }
                if(!cam->present) {
-                       up(&cam->busy_lock);
+                       mutex_unlock(&cam->busy_lock);
                        return 0;
                }
        }
 
        /* copy data to user space */
        if (frame->length > count) {
-               up(&cam->busy_lock);
+               mutex_unlock(&cam->busy_lock);
                return -EFAULT;
        }
        if (copy_to_user(buf, frame->data, frame->length)) {
-               up(&cam->busy_lock);
+               mutex_unlock(&cam->busy_lock);
                return -EFAULT;
        }
 
@@ -2424,7 +2419,7 @@ long cpia2_read(struct camera_data *cam,
 
        frame->status = FRAME_EMPTY;
 
-       up(&cam->busy_lock);
+       mutex_unlock(&cam->busy_lock);
        return count;
 }
 
@@ -2443,10 +2438,10 @@ unsigned int cpia2_poll(struct camera_data *cam, struct file *filp,
                return POLLERR;
        }
 
-       down(&cam->busy_lock);
+       mutex_lock(&cam->busy_lock);
 
        if(!cam->present) {
-               up(&cam->busy_lock);
+               mutex_unlock(&cam->busy_lock);
                return POLLHUP;
        }
 
@@ -2456,16 +2451,16 @@ unsigned int cpia2_poll(struct camera_data *cam, struct file *filp,
                                       cam->params.camera_state.stream_mode);
        }
 
-       up(&cam->busy_lock);
+       mutex_unlock(&cam->busy_lock);
        poll_wait(filp, &cam->wq_stream, wait);
-       down(&cam->busy_lock);
+       mutex_lock(&cam->busy_lock);
 
        if(!cam->present)
                status = POLLHUP;
        else if(cam->curbuff->status == FRAME_READY)
                status = POLLIN | POLLRDNORM;
 
-       up(&cam->busy_lock);
+       mutex_unlock(&cam->busy_lock);
        return status;
 }
 
@@ -2488,18 +2483,18 @@ int cpia2_remap_buffer(struct camera_data *cam, struct vm_area_struct *vma)
        DBG("mmap offset:%ld size:%ld\n", start_offset, size);
 
        /* make this _really_ smp-safe */
-       if (down_interruptible(&cam->busy_lock))
+       if (mutex_lock_interruptible(&cam->busy_lock))
                return -ERESTARTSYS;
 
        if (!cam->present) {
-               up(&cam->busy_lock);
+               mutex_unlock(&cam->busy_lock);
                return -ENODEV;
        }
 
        if (size > cam->frame_size*cam->num_frames  ||
            (start_offset % cam->frame_size) != 0 ||
            (start_offset+size > cam->frame_size*cam->num_frames)) {
-               up(&cam->busy_lock);
+               mutex_unlock(&cam->busy_lock);
                return -EINVAL;
        }
 
@@ -2507,7 +2502,7 @@ int cpia2_remap_buffer(struct camera_data *cam, struct vm_area_struct *vma)
        while (size > 0) {
                page = kvirt_to_pa(pos);
                if (remap_pfn_range(vma, start, page >> PAGE_SHIFT, PAGE_SIZE, PAGE_SHARED)) {
-                       up(&cam->busy_lock);
+                       mutex_unlock(&cam->busy_lock);
                        return -EAGAIN;
                }
                start += PAGE_SIZE;
@@ -2519,7 +2514,7 @@ int cpia2_remap_buffer(struct camera_data *cam, struct vm_area_struct *vma)
        }
 
        cam->mmapped = true;
-       up(&cam->busy_lock);
+       mutex_unlock(&cam->busy_lock);
        return 0;
 }