Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b9378fdb authored by Matthias Kaehlcke's avatar Matthias Kaehlcke Committed by Mauro Carvalho Chehab
Browse files

V4L/DVB (5809): Use mutex instead of semaphore in Philips webcam driver



The Philips webcam driver uses a semaphore as mutex. Use the mutex API
instead of the (binary) semaphore.
--

Signed-off-by: default avatarMatthias Kaehlcke <matthias.kaehlcke@gmail.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent 55c0d100
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -1099,7 +1099,7 @@ static int pwc_video_open(struct inode *inode, struct file *file)
		return -EBUSY;
	}

	down(&pdev->modlock);
	mutex_lock(&pdev->modlock);
	if (!pdev->usb_init) {
		PWC_DEBUG_OPEN("Doing first time initialization.\n");
		pdev->usb_init = 1;
@@ -1131,7 +1131,7 @@ static int pwc_video_open(struct inode *inode, struct file *file)
	if (i < 0) {
		PWC_DEBUG_OPEN("Failed to allocate buffers memory.\n");
		pwc_free_buffers(pdev);
		up(&pdev->modlock);
		mutex_unlock(&pdev->modlock);
		return i;
	}

@@ -1172,7 +1172,7 @@ static int pwc_video_open(struct inode *inode, struct file *file)
	if (i) {
		PWC_DEBUG_OPEN("Second attempt at set_video_mode failed.\n");
		pwc_free_buffers(pdev);
		up(&pdev->modlock);
		mutex_unlock(&pdev->modlock);
		return i;
	}

@@ -1181,7 +1181,7 @@ static int pwc_video_open(struct inode *inode, struct file *file)
		PWC_DEBUG_OPEN("Failed to init ISOC stuff = %d.\n", i);
		pwc_isoc_cleanup(pdev);
		pwc_free_buffers(pdev);
		up(&pdev->modlock);
		mutex_unlock(&pdev->modlock);
		return i;
	}

@@ -1191,7 +1191,7 @@ static int pwc_video_open(struct inode *inode, struct file *file)

	pdev->vopen++;
	file->private_data = vdev;
	up(&pdev->modlock);
	mutex_unlock(&pdev->modlock);
	PWC_DEBUG_OPEN("<< video_open() returns 0.\n");
	return 0;
}
@@ -1685,7 +1685,7 @@ static int usb_pwc_probe(struct usb_interface *intf, const struct usb_device_id
		pdev->angle_range.tilt_max =  2500;
	}

	init_MUTEX(&pdev->modlock);
	mutex_init(&pdev->modlock);
	spin_lock_init(&pdev->ptrlock);

	pdev->udev = udev;
+2 −2
Original line number Diff line number Diff line
@@ -31,7 +31,7 @@
#include <linux/wait.h>
#include <linux/smp_lock.h>
#include <linux/version.h>
#include <asm/semaphore.h>
#include <linux/mutex.h>
#include <asm/errno.h>
#include <linux/videodev.h>
#include <media/v4l2-common.h>
@@ -244,7 +244,7 @@ struct pwc_device
   int image_read_pos;			/* In case we read data in pieces, keep track of were we are in the imagebuffer */
   int image_used[MAX_IMAGES];		/* For MCAPTURE and SYNC */

   struct semaphore modlock;		/* to prevent races in video_open(), etc */
   struct mutex modlock;		/* to prevent races in video_open(), etc */
   spinlock_t ptrlock;			/* for manipulating the buffer pointers */

   /*** motorized pan/tilt feature */