V4L/DVB (12541): v4l: remove video_register_device_index

video_register_device_index is never actually called, instead the
stream index number is always calculated automatically.

This patch removes this function and simplifies the internal get_index
function since that can now always just return the first free index.

Signed-off-by: Hans Verkuil <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
This commit is contained in:
Hans Verkuil 2009-06-19 11:32:56 -03:00 • committed by Mauro Carvalho Chehab
commit 7ae0cd9bc7
3 changed files with 20 additions and 54 deletions

View file

@ -299,32 +299,28 @@ static const struct file_operations v4l2_fops = {
};
/**
* get_index - assign stream number based on parent device
* get_index - assign stream index number based on parent device
* @vdev: video_device to assign index number to, vdev->parent should be assigned
* @num: -1 if auto assign, requested number otherwise
*
* Note that when this is called the new device has not yet been registered
* in the video_device array.
* in the video_device array, but it was able to obtain a minor number.
*
* Returns -ENFILE if num is already in use, a free index number if
* successful.
* This means that we can always obtain a free stream index number since
* the worst case scenario is that there are VIDEO_NUM_DEVICES - 1 slots in
* use of the video_device array.
*
* Returns a free index number.
*/
static int get_index(struct video_device *vdev, int num)
static int get_index(struct video_device *vdev)
{
/* This can be static since this function is called with the global
videodev_lock held. */
static DECLARE_BITMAP(used, VIDEO_NUM_DEVICES);
int i;
if (num >= VIDEO_NUM_DEVICES) {
printk(KERN_ERR "videodev: %s num is too large\n", __func__);
return -EINVAL;
}
/* Some drivers do not set the parent. In that case always return
num or 0. */
/* Some drivers do not set the parent. In that case always return 0. */
if (vdev->parent == NULL)
return num >= 0 ? num : 0;
return 0;
bitmap_zero(used, VIDEO_NUM_DEVICES);
@ -335,30 +331,15 @@ static int get_index(struct video_device *vdev, int num)
}
}
if (num >= 0) {
if (test_bit(num, used))
return -ENFILE;
return num;
}
i = find_first_zero_bit(used, VIDEO_NUM_DEVICES);
return i == VIDEO_NUM_DEVICES ? -ENFILE : i;
return find_first_zero_bit(used, VIDEO_NUM_DEVICES);
}
int video_register_device(struct video_device *vdev, int type, int nr)
{
return video_register_device_index(vdev, type, nr, -1);
}
EXPORT_SYMBOL(video_register_device);
/**
* video_register_device_index - register video4linux devices
* video_register_device - register video4linux devices
* @vdev: video device structure we want to register
* @type: type of device to register
* @nr: which device number (0 == /dev/video0, 1 == /dev/video1, ...
* -1 == first free)
* @index: stream number based on parent device;
* -1 if auto assign, requested number otherwise
*
* The registration code assigns minor numbers based on the type
* requested. -ENFILE is returned in all the device slots for this
@ -377,8 +358,7 @@ EXPORT_SYMBOL(video_register_device);
*
* %VFL_TYPE_RADIO - A radio card
*/
int video_register_device_index(struct video_device *vdev, int type, int nr,
int index)
int video_register_device(struct video_device *vdev, int type, int nr)
{
int i = 0;
int ret;
@ -481,14 +461,9 @@ int video_register_device_index(struct video_device *vdev, int type, int nr,
set_bit(nr, video_nums[type]);
/* Should not happen since we thought this minor was free */
WARN_ON(video_device[vdev->minor] != NULL);
ret = vdev->index = get_index(vdev, index);
vdev->index = get_index(vdev);
mutex_unlock(&videodev_lock);
if (ret < 0) {
printk(KERN_ERR "%s: get_index failed\n", __func__);
goto cleanup;
}
/* Part 3: Initialize the character device */
vdev->cdev = cdev_alloc();
if (vdev->cdev == NULL) {
@ -543,7 +518,7 @@ cleanup:
vdev->minor = -1;
return ret;
}
EXPORT_SYMBOL(video_register_device_index);
EXPORT_SYMBOL(video_register_device);
/**
* video_unregister_device - unregister a video4linux device