#include <linux/video_decoder.h>
 #include <linux/video_encoder.h>
+#include <linux/mutex.h>
 #include "zoran.h"
 #include "zoran_device.h"
 #include "zoran_card.h"
 
        /* see fs/device.c - the kernel already locks during open(),
         * so locking ourselves only causes deadlocks */
-       /*down(&zr->resource_lock);*/
+       /*mutex_lock(&zr->resource_lock);*/
 
        if (!zr->decoder) {
                dprintk(1,
        if (zr->user++ == 0)
                first_open = 1;
 
-       /*up(&zr->resource_lock);*/
+       /*mutex_unlock(&zr->resource_lock);*/
 
        /* default setup - TODO: look at flags */
        if (first_open) {       /* First device open */
 
        /* if there's no device found, we didn't obtain the lock either */
        if (zr) {
-               /*up(&zr->resource_lock);*/
+               /*mutex_unlock(&zr->resource_lock);*/
        }
 
        return res;
 
        /* kernel locks (fs/device.c), so don't do that ourselves
         * (prevents deadlocks) */
-       /*down(&zr->resource_lock);*/
+       /*mutex_lock(&zr->resource_lock);*/
 
        zoran_close_end_session(file);
 
        }
        module_put(THIS_MODULE);
 
-       /*up(&zr->resource_lock);*/
+       /*mutex_unlock(&zr->resource_lock);*/
 
        dprintk(4, KERN_INFO "%s: zoran_close() done\n", ZR_DEVNAME(zr));
 
         * but moving the free code outside the munmap() handler fixes
         * all this... If someone knows why, please explain me (Ronald)
         */
-       if (!down_trylock(&zr->resource_lock)) {
+       if (!!mutex_trylock(&zr->resource_lock)) {
                /* we obtained it! Let's try to free some things */
                if (fh->jpg_buffers.ready_to_be_freed)
                        jpg_fbuffer_free(file);
                if (fh->v4l_buffers.ready_to_be_freed)
                        v4l_fbuffer_free(file);
 
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
        }
 
        switch (cmd) {
 
                vcap->channels = zr->card.inputs;
                vcap->audios = 0;
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
                vcap->maxwidth = BUZ_MAX_WIDTH;
                vcap->maxheight = BUZ_MAX_HEIGHT;
                vcap->minwidth = BUZ_MIN_WIDTH;
                vcap->minheight = BUZ_MIN_HEIGHT;
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                return 0;
        }
                vchan->tuners = 0;
                vchan->flags = 0;
                vchan->type = VIDEO_TYPE_CAMERA;
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
                vchan->norm = zr->norm;
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
                vchan->channel = channel;
 
                return 0;
                        "%s: VIDIOCSCHAN - channel=%d, norm=%d\n",
                        ZR_DEVNAME(zr), vchan->channel, vchan->norm);
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
                if ((res = zoran_set_input(zr, vchan->channel)))
                        goto schan_unlock_and_return;
                if ((res = zoran_set_norm(zr, vchan->norm)))
                /* Make sure the changes come into effect */
                res = wait_grab_pending(zr);
        schan_unlock_and_return:
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
                return res;
        }
                break;
                dprintk(3, KERN_DEBUG "%s: VIDIOCGPICT\n", ZR_DEVNAME(zr));
 
                memset(vpict, 0, sizeof(struct video_picture));
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
                vpict->hue = zr->hue;
                vpict->brightness = zr->brightness;
                vpict->contrast = zr->contrast;
                } else {
                        vpict->depth = 0;
                }
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                return 0;
        }
                        return -EINVAL;
                }
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
 
                decoder_command(zr, DECODER_SET_PICTURE, vpict);
 
 
                fh->overlay_settings.format = &zoran_formats[i];
 
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                return 0;
        }
                dprintk(3, KERN_DEBUG "%s: VIDIOCCAPTURE - on=%d\n",
                        ZR_DEVNAME(zr), *on);
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
                res = setup_overlay(file, *on);
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                return res;
        }
                dprintk(3, KERN_DEBUG "%s: VIDIOCGWIN\n", ZR_DEVNAME(zr));
 
                memset(vwin, 0, sizeof(struct video_window));
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
                vwin->x = fh->overlay_settings.x;
                vwin->y = fh->overlay_settings.y;
                vwin->width = fh->overlay_settings.width;
                vwin->height = fh->overlay_settings.height;
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
                vwin->clipcount = 0;
                return 0;
        }
                        ZR_DEVNAME(zr), vwin->x, vwin->y, vwin->width,
                        vwin->height, vwin->clipcount);
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
                res =
                    setup_window(file, vwin->x, vwin->y, vwin->width,
                                 vwin->height, vwin->clips,
                                 vwin->clipcount, NULL);
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                return res;
        }
 
                dprintk(3, KERN_DEBUG "%s: VIDIOCGFBUF\n", ZR_DEVNAME(zr));
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
                *vbuf = zr->buffer;
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
                return 0;
        }
                break;
                        return -EINVAL;
                }
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
                res =
                    setup_fbuffer(file, vbuf->base, &zoran_formats[i],
                                  vbuf->width, vbuf->height,
                                  vbuf->bytesperline);
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                return res;
        }
                dprintk(3, KERN_DEBUG "%s: VIDIOCSYNC - frame=%d\n",
                        ZR_DEVNAME(zr), *frame);
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
                res = v4l_sync(file, *frame);
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
                if (!res)
                        zr->v4l_sync_tail++;
                return res;
                        ZR_DEVNAME(zr), vmap->frame, vmap->width, vmap->height,
                        vmap->format);
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
                res = v4l_grab(file, vmap);
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
                return res;
        }
                break;
                            i * fh->v4l_buffers.buffer_size;
                }
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
 
                if (fh->jpg_buffers.allocated || fh->v4l_buffers.allocated) {
                        dprintk(1,
                /* The next mmap will map the V4L buffers */
                fh->map_mode = ZORAN_MAP_MODE_RAW;
        v4l1reqbuf_unlock_and_return:
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                return res;
        }
                bparams->major_version = MAJOR_VERSION;
                bparams->minor_version = MINOR_VERSION;
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
 
                bparams->norm = zr->norm;
                bparams->input = zr->input;
                bparams->jpeg_markers =
                    fh->jpg_settings.jpg_comp.jpeg_markers;
 
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                bparams->VFIFO_FB = 0;
 
                       sizeof(bparams->COM_data));
                settings.jpg_comp.jpeg_markers = bparams->jpeg_markers;
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
 
                if (zr->codec_mode != BUZ_MODE_IDLE) {
                        dprintk(1,
 
                fh->jpg_settings = settings;
        sparams_unlock_and_return:
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                return res;
        }
                    breq->size > MAX_KMALLOC_MEM)
                        breq->size = MAX_KMALLOC_MEM;
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
 
                if (fh->jpg_buffers.allocated || fh->v4l_buffers.allocated) {
                        dprintk(1,
                 * also be *_PLAY, but it doesn't matter here */
                fh->map_mode = ZORAN_MAP_MODE_JPG_REC;
        jpgreqbuf_unlock_and_return:
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                return res;
        }
                dprintk(3, KERN_DEBUG "%s: BUZIOC_QBUF_CAPT - frame=%d\n",
                        ZR_DEVNAME(zr), *frame);
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
                res = jpg_qbuf(file, *frame, BUZ_MODE_MOTION_COMPRESS);
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                return res;
        }
                dprintk(3, KERN_DEBUG "%s: BUZIOC_QBUF_PLAY - frame=%d\n",
                        ZR_DEVNAME(zr), *frame);
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
                res = jpg_qbuf(file, *frame, BUZ_MODE_MOTION_DECOMPRESS);
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                return res;
        }
 
                dprintk(3, KERN_DEBUG "%s: BUZIOC_SYNC\n", ZR_DEVNAME(zr));
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
                res = jpg_sync(file, bsync);
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                return res;
        }
                input = zr->card.input[bstat->input].muxsel;
                norm = VIDEO_MODE_AUTO;
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
 
                if (zr->codec_mode != BUZ_MODE_IDLE) {
                        dprintk(1,
                decoder_command(zr, DECODER_SET_INPUT, &input);
                decoder_command(zr, DECODER_SET_NORM, &zr->norm);
        gstat_unlock_and_return:
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                if (!res) {
                        bstat->signal =
                switch (fmt->type) {
                case V4L2_BUF_TYPE_VIDEO_OVERLAY:
 
-                       down(&zr->resource_lock);
+                       mutex_lock(&zr->resource_lock);
 
                        fmt->fmt.win.w.left = fh->overlay_settings.x;
                        fmt->fmt.win.w.top = fh->overlay_settings.y;
                        else
                                fmt->fmt.win.field = V4L2_FIELD_TOP;
 
-                       up(&zr->resource_lock);
+                       mutex_unlock(&zr->resource_lock);
 
                        break;
 
                case V4L2_BUF_TYPE_VIDEO_CAPTURE:
                case V4L2_BUF_TYPE_VIDEO_OUTPUT:
 
-                       down(&zr->resource_lock);
+                       mutex_lock(&zr->resource_lock);
 
                        if (fmt->type == V4L2_BUF_TYPE_VIDEO_CAPTURE &&
                            fh->map_mode == ZORAN_MAP_MODE_RAW) {
                                    V4L2_COLORSPACE_SMPTE170M;
                        }
 
-                       up(&zr->resource_lock);
+                       mutex_unlock(&zr->resource_lock);
 
                        break;
 
                                fmt->fmt.win.w.height,
                                fmt->fmt.win.clipcount,
                                fmt->fmt.win.bitmap);
-                       down(&zr->resource_lock);
+                       mutex_lock(&zr->resource_lock);
                        res =
                            setup_window(file, fmt->fmt.win.w.left,
                                         fmt->fmt.win.w.top,
                                           fmt->fmt.win.clips,
                                         fmt->fmt.win.clipcount,
                                         fmt->fmt.win.bitmap);
-                       up(&zr->resource_lock);
+                       mutex_unlock(&zr->resource_lock);
                        return res;
                        break;
 
                        }
 
                        if (fmt->fmt.pix.pixelformat == V4L2_PIX_FMT_MJPEG) {
-                               down(&zr->resource_lock);
+                               mutex_lock(&zr->resource_lock);
 
                                settings = fh->jpg_settings;
 
                                    ZORAN_MAP_MODE_JPG_REC :
                                    ZORAN_MAP_MODE_JPG_PLAY;
                        sfmtjpg_unlock_and_return:
-                               up(&zr->resource_lock);
+                               mutex_unlock(&zr->resource_lock);
                        } else {
                                for (i = 0; i < zoran_num_formats; i++)
                                        if (fmt->fmt.pix.pixelformat ==
                                                (char *) &printformat);
                                        return -EINVAL;
                                }
-                               down(&zr->resource_lock);
+                               mutex_lock(&zr->resource_lock);
                                if (fh->jpg_buffers.allocated ||
                                    (fh->v4l_buffers.allocated &&
                                     fh->v4l_buffers.active !=
 
                                fh->map_mode = ZORAN_MAP_MODE_RAW;
                        sfmtv4l_unlock_and_return:
-                               up(&zr->resource_lock);
+                               mutex_unlock(&zr->resource_lock);
                        }
 
                        break;
                dprintk(3, KERN_DEBUG "%s: VIDIOC_G_FBUF\n", ZR_DEVNAME(zr));
 
                memset(fb, 0, sizeof(*fb));
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
                fb->base = zr->buffer.base;
                fb->fmt.width = zr->buffer.width;
                fb->fmt.height = zr->buffer.height;
                                fh->overlay_settings.format->fourcc;
                }
                fb->fmt.bytesperline = zr->buffer.bytesperline;
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
                fb->fmt.colorspace = V4L2_COLORSPACE_SRGB;
                fb->fmt.field = V4L2_FIELD_INTERLACED;
                fb->flags = V4L2_FBUF_FLAG_OVERLAY;
                        return -EINVAL;
                }
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
                res =
                    setup_fbuffer(file, fb->base, &zoran_formats[i],
                                  fb->fmt.width, fb->fmt.height,
                                  fb->fmt.bytesperline);
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                return res;
        }
                dprintk(3, KERN_DEBUG "%s: VIDIOC_PREVIEW - on=%d\n",
                        ZR_DEVNAME(zr), *on);
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
                res = setup_overlay(file, *on);
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                return res;
        }
                        return -EINVAL;
                }
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
 
                if (fh->v4l_buffers.allocated || fh->jpg_buffers.allocated) {
                        dprintk(1,
                        goto v4l2reqbuf_unlock_and_return;
                }
        v4l2reqbuf_unlock_and_return:
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                return 0;
        }
                buf->type = type;
                buf->index = index;
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
                res = zoran_v4l2_buffer_status(file, buf, buf->index);
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                return res;
        }
                        KERN_DEBUG "%s: VIDIOC_QBUF - type=%d, index=%d\n",
                        ZR_DEVNAME(zr), buf->type, buf->index);
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
 
                switch (fh->map_mode) {
                case ZORAN_MAP_MODE_RAW:
                        goto qbuf_unlock_and_return;
                }
        qbuf_unlock_and_return:
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                return res;
        }
                dprintk(3, KERN_DEBUG "%s: VIDIOC_DQBUF - type=%d\n",
                        ZR_DEVNAME(zr), buf->type);
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
 
                switch (fh->map_mode) {
                case ZORAN_MAP_MODE_RAW:
                        goto dqbuf_unlock_and_return;
                }
        dqbuf_unlock_and_return:
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                return res;
        }
 
                dprintk(3, KERN_DEBUG "%s: VIDIOC_STREAMON\n", ZR_DEVNAME(zr));
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
 
                switch (fh->map_mode) {
                case ZORAN_MAP_MODE_RAW:        /* raw capture */
                        goto strmon_unlock_and_return;
                }
        strmon_unlock_and_return:
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                return res;
        }
 
                dprintk(3, KERN_DEBUG "%s: VIDIOC_STREAMOFF\n", ZR_DEVNAME(zr));
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
 
                switch (fh->map_mode) {
                case ZORAN_MAP_MODE_RAW:        /* raw capture */
                        goto strmoff_unlock_and_return;
                }
        strmoff_unlock_and_return:
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                return res;
        }
                    ctrl->id > V4L2_CID_HUE)
                        return -EINVAL;
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
                switch (ctrl->id) {
                case V4L2_CID_BRIGHTNESS:
                        ctrl->value = zr->brightness;
                        ctrl->value = zr->hue;
                        break;
                }
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                return 0;
        }
                        return -EINVAL;
                }
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
                switch (ctrl->id) {
                case V4L2_CID_BRIGHTNESS:
                        zr->brightness = ctrl->value;
 
                decoder_command(zr, DECODER_SET_PICTURE, &pict);
 
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                return 0;
        }
 
                dprintk(3, KERN_DEBUG "%s: VIDIOC_G_STD\n", ZR_DEVNAME(zr));
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
                norm = zr->norm;
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                switch (norm) {
                case VIDEO_MODE_PAL:
                        return -EINVAL;
                }
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
                if ((res = zoran_set_norm(zr, norm)))
                        goto sstd_unlock_and_return;
 
                res = wait_grab_pending(zr);
        sstd_unlock_and_return:
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
                return res;
        }
                break;
                inp->std = V4L2_STD_ALL;
 
                /* Get status of video decoder */
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
                decoder_command(zr, DECODER_GET_STATUS, &status);
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                if (!(status & DECODER_STATUS_GOOD)) {
                        inp->status |= V4L2_IN_ST_NO_POWER;
 
                dprintk(3, KERN_DEBUG "%s: VIDIOC_G_INPUT\n", ZR_DEVNAME(zr));
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
                *input = zr->input;
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                return 0;
        }
                dprintk(3, KERN_DEBUG "%s: VIDIOC_S_INPUT - input=%d\n",
                        ZR_DEVNAME(zr), *input);
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
                if ((res = zoran_set_input(zr, *input)))
                        goto sinput_unlock_and_return;
 
                /* Make sure the changes come into effect */
                res = wait_grab_pending(zr);
        sinput_unlock_and_return:
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
                return res;
        }
                break;
                memset(cropcap, 0, sizeof(*cropcap));
                cropcap->type = type;
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
 
                if (cropcap->type != V4L2_BUF_TYPE_VIDEO_OUTPUT &&
                    (cropcap->type != V4L2_BUF_TYPE_VIDEO_CAPTURE ||
                cropcap->defrect.width = BUZ_MIN_WIDTH;
                cropcap->defrect.height = BUZ_MIN_HEIGHT;
        cropcap_unlock_and_return:
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
                return res;
        }
                break;
                memset(crop, 0, sizeof(*crop));
                crop->type = type;
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
 
                if (crop->type != V4L2_BUF_TYPE_VIDEO_OUTPUT &&
                    (crop->type != V4L2_BUF_TYPE_VIDEO_CAPTURE ||
                crop->c.height = fh->jpg_settings.img_height;
 
        gcrop_unlock_and_return:
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                return res;
        }
                        ZR_DEVNAME(zr), crop->type, crop->c.left, crop->c.top,
                        crop->c.width, crop->c.height);
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
 
                if (fh->jpg_buffers.allocated || fh->v4l_buffers.allocated) {
                        dprintk(1,
                fh->jpg_settings = settings;
 
        scrop_unlock_and_return:
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
                return res;
        }
                break;
 
                memset(params, 0, sizeof(*params));
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
 
                params->quality = fh->jpg_settings.jpg_comp.quality;
                params->APPn = fh->jpg_settings.jpg_comp.APPn;
                params->jpeg_markers =
                    fh->jpg_settings.jpg_comp.jpeg_markers;
 
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                return 0;
        }
 
                settings.jpg_comp = *params;
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
 
                if (fh->v4l_buffers.active != ZORAN_FREE ||
                    fh->jpg_buffers.active != ZORAN_FREE) {
                            zoran_v4l2_calc_bufsize(&fh->jpg_settings);
                fh->jpg_settings.jpg_comp = *params = settings.jpg_comp;
        sjpegc_unlock_and_return:
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                return 0;
        }
 
                switch (fmt->type) {
                case V4L2_BUF_TYPE_VIDEO_OVERLAY:
-                       down(&zr->resource_lock);
+                       mutex_lock(&zr->resource_lock);
 
                        if (fmt->fmt.win.w.width > BUZ_MAX_WIDTH)
                                fmt->fmt.win.w.width = BUZ_MAX_WIDTH;
                        if (fmt->fmt.win.w.height < BUZ_MIN_HEIGHT)
                                fmt->fmt.win.w.height = BUZ_MIN_HEIGHT;
 
-                       up(&zr->resource_lock);
+                       mutex_unlock(&zr->resource_lock);
                        break;
 
                case V4L2_BUF_TYPE_VIDEO_CAPTURE:
                        if (fmt->fmt.pix.bytesperline > 0)
                                return -EINVAL;
 
-                       down(&zr->resource_lock);
+                       mutex_lock(&zr->resource_lock);
 
                        if (fmt->fmt.pix.pixelformat == V4L2_PIX_FMT_MJPEG) {
                                settings = fh->jpg_settings;
                                goto tryfmt_unlock_and_return;
                        }
                tryfmt_unlock_and_return:
-                       up(&zr->resource_lock);
+                       mutex_unlock(&zr->resource_lock);
 
                        return res;
                        break;
         * if no buffers queued or so, return POLLNVAL
         */
 
-       down(&zr->resource_lock);
+       mutex_lock(&zr->resource_lock);
 
        switch (fh->map_mode) {
        case ZORAN_MAP_MODE_RAW:
        }
 
 poll_unlock_and_return:
-       up(&zr->resource_lock);
+       mutex_unlock(&zr->resource_lock);
 
        return res;
 }
                                if (fh->jpg_buffers.buffer[i].map)
                                        break;
                        if (i == fh->jpg_buffers.num_buffers) {
-                               down(&zr->resource_lock);
+                               mutex_lock(&zr->resource_lock);
 
                                if (fh->jpg_buffers.active != ZORAN_FREE) {
                                        jpg_qbuf(file, -1, zr->codec_mode);
                                fh->jpg_buffers.allocated = 0;
                                fh->jpg_buffers.ready_to_be_freed = 1;
 
-                               up(&zr->resource_lock);
+                               mutex_unlock(&zr->resource_lock);
                        }
 
                        break;
                                if (fh->v4l_buffers.buffer[i].map)
                                        break;
                        if (i == fh->v4l_buffers.num_buffers) {
-                               down(&zr->resource_lock);
+                               mutex_lock(&zr->resource_lock);
 
                                if (fh->v4l_buffers.active != ZORAN_FREE) {
                                        zr36057_set_memgrab(zr, 0);
                                fh->v4l_buffers.allocated = 0;
                                fh->v4l_buffers.ready_to_be_freed = 1;
 
-                               up(&zr->resource_lock);
+                               mutex_unlock(&zr->resource_lock);
                        }
 
                        break;
        case ZORAN_MAP_MODE_JPG_PLAY:
 
                /* lock */
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
 
                /* Map the MJPEG buffers */
                if (!fh->jpg_buffers.allocated) {
 
                }
        jpg_mmap_unlock_and_return:
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                break;
 
        case ZORAN_MAP_MODE_RAW:
 
-               down(&zr->resource_lock);
+               mutex_lock(&zr->resource_lock);
 
                /* Map the V4L buffers */
                if (!fh->v4l_buffers.allocated) {
                                break;
                }
        v4l_mmap_unlock_and_return:
-               up(&zr->resource_lock);
+               mutex_unlock(&zr->resource_lock);
 
                break;