Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 113868
b: refs/heads/master
c: bfa8a27
h: refs/heads/master
v: v3
  • Loading branch information
Hans Verkuil authored and Mauro Carvalho Chehab committed Oct 12, 2008
1 parent 685daeb commit e82f35d
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 22 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 601e9444f249d219009ec05674268d90f6f1cdcb
refs/heads/master: bfa8a273bb91078ea193ab94c717889928f3b925
13 changes: 6 additions & 7 deletions trunk/drivers/media/video/v4l2-dev.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,15 @@ static ssize_t show_index(struct device *cd,
struct device_attribute *attr, char *buf)
{
struct video_device *vfd = container_of(cd, struct video_device, dev);

return sprintf(buf, "%i\n", vfd->index);
}

static ssize_t show_name(struct device *cd,
struct device_attribute *attr, char *buf)
{
struct video_device *vfd = container_of(cd, struct video_device, dev);

return sprintf(buf, "%.*s\n", (int)sizeof(vfd->name), vfd->name);
}

Expand All @@ -60,10 +62,7 @@ static struct device_attribute video_device_attrs[] = {

struct video_device *video_device_alloc(void)
{
struct video_device *vfd;

vfd = kzalloc(sizeof(*vfd), GFP_KERNEL);
return vfd;
return kzalloc(sizeof(struct video_device), GFP_KERNEL);
}
EXPORT_SYMBOL(video_device_alloc);

Expand Down Expand Up @@ -263,7 +262,7 @@ int video_register_device_index(struct video_device *vfd, int type, int nr,

/* pick a minor number */
mutex_lock(&videodev_lock);
if (nr >= 0 && nr < end-base) {
if (nr >= 0 && nr < end-base) {
/* use the one the driver asked for */
i = base + nr;
if (NULL != video_device[i]) {
Expand Down Expand Up @@ -295,7 +294,7 @@ int video_register_device_index(struct video_device *vfd, int type, int nr,
}

/* sysfs class */
memset(&vfd->dev, 0x00, sizeof(vfd->dev));
memset(&vfd->dev, 0, sizeof(vfd->dev));
vfd->dev.class = &video_class;
vfd->dev.devt = MKDEV(VIDEO_MAJOR, vfd->minor);
if (vfd->parent)
Expand All @@ -312,8 +311,8 @@ int video_register_device_index(struct video_device *vfd, int type, int nr,
fail_minor:
mutex_lock(&videodev_lock);
video_device[vfd->minor] = NULL;
vfd->minor = -1;
mutex_unlock(&videodev_lock);
vfd->minor = -1;
return ret;
}
EXPORT_SYMBOL(video_register_device_index);
Expand Down
35 changes: 21 additions & 14 deletions trunk/include/media/v4l2-dev.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,14 @@
#ifndef _V4L2_DEV_H
#define _V4L2_DEV_H

#define OBSOLETE_DEVDATA 1 /* to be removed soon */

#include <linux/poll.h>
#include <linux/fs.h>
#include <linux/device.h>
#include <linux/mutex.h>
#include <linux/compiler.h> /* need __user */
#include <linux/videodev2.h>

#define VIDEO_MAJOR 81

/* Minor device allocation */
#define MINOR_VFL_TYPE_GRABBER_MIN 0
#define MINOR_VFL_TYPE_GRABBER_MAX 63
Expand Down Expand Up @@ -71,20 +69,25 @@ struct video_device
const struct v4l2_ioctl_ops *ioctl_ops;
};

/* Class-dev to video-device */
/* dev to video-device */
#define to_video_device(cd) container_of(cd, struct video_device, dev)

/* Version 2 functions */
/* Register and unregister devices. Note that if video_register_device fails,
the release() callback of the video_device structure is *not* called, so
the caller is responsible for freeing any data. Usually that means that
you call video_device_release() on failure. */
int __must_check video_register_device(struct video_device *vfd, int type, int nr);
int __must_check video_register_device_index(struct video_device *vfd, int type, int nr,
int index);
void video_unregister_device(struct video_device *);
int __must_check video_register_device_index(struct video_device *vfd,
int type, int nr, int index);
void video_unregister_device(struct video_device *vfd);

/* helper functions to alloc / release struct video_device, the
later can be used for video_device->release() */
/* helper functions to alloc/release struct video_device, the
latter can also be used for video_device->release(). */
struct video_device * __must_check video_device_alloc(void);

/* this release function frees the vfd pointer */
void video_device_release(struct video_device *vfd);

/* this release function does nothing, use when the video_device is a
static global struct. Note that having a static video_device is
a dubious construction at best. */
Expand All @@ -101,9 +104,13 @@ static inline void video_set_drvdata(struct video_device *dev, void *data)
dev_set_drvdata(&dev->dev, data);
}

#ifdef OBSOLETE_DEVDATA /* to be removed soon */
/* Obsolete stuff - Still needed for radio devices and obsolete drivers */
extern struct video_device* video_devdata(struct file*);
#endif
struct video_device *video_devdata(struct file *file);

/* Combine video_get_drvdata and video_devdata as this is
used very often. */
static inline void *video_drvdata(struct file *file)
{
return video_get_drvdata(video_devdata(file));
}

#endif /* _V4L2_DEV_H */

0 comments on commit e82f35d

Please sign in to comment.