V4L/DVB (5750): Remove obsoleted support for PROC_FS on vicam.c
Procfs support on V4L were converted to sysfs support by a pre-2.6 patch: http://www.ussg.iu.edu/hypermail/linux/kernel/0307.1/2356.html There's no sense on keeping the dead code inside vicam.c. Also,it won't work anyway, as part of proc_fs support were previously inside videodev.c. Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
This commit is contained in:
Родитель
890be2bb55
Коммит
018ec5440b
|
@ -42,7 +42,6 @@
|
|||
#include <linux/usb.h>
|
||||
#include <linux/vmalloc.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/proc_fs.h>
|
||||
#include <linux/mutex.h>
|
||||
#include "usbvideo.h"
|
||||
|
||||
|
@ -417,11 +416,6 @@ struct vicam_camera {
|
|||
u8 open_count;
|
||||
u8 bulkEndpoint;
|
||||
int needsDummyRead;
|
||||
|
||||
#if defined(CONFIG_VIDEO_PROC_FS)
|
||||
struct proc_dir_entry *proc_dir;
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
static int vicam_probe( struct usb_interface *intf, const struct usb_device_id *id);
|
||||
|
@ -1065,175 +1059,6 @@ vicam_mmap(struct file *file, struct vm_area_struct *vma)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_VIDEO_PROC_FS)
|
||||
|
||||
static struct proc_dir_entry *vicam_proc_root = NULL;
|
||||
|
||||
static int vicam_read_helper(char *page, char **start, off_t off,
|
||||
int count, int *eof, int value)
|
||||
{
|
||||
char *out = page;
|
||||
int len;
|
||||
|
||||
out += sprintf(out, "%d",value);
|
||||
|
||||
len = out - page;
|
||||
len -= off;
|
||||
if (len < count) {
|
||||
*eof = 1;
|
||||
if (len <= 0)
|
||||
return 0;
|
||||
} else
|
||||
len = count;
|
||||
|
||||
*start = page + off;
|
||||
return len;
|
||||
}
|
||||
|
||||
static int vicam_read_proc_shutter(char *page, char **start, off_t off,
|
||||
int count, int *eof, void *data)
|
||||
{
|
||||
return vicam_read_helper(page,start,off,count,eof,
|
||||
((struct vicam_camera *)data)->shutter_speed);
|
||||
}
|
||||
|
||||
static int vicam_read_proc_gain(char *page, char **start, off_t off,
|
||||
int count, int *eof, void *data)
|
||||
{
|
||||
return vicam_read_helper(page,start,off,count,eof,
|
||||
((struct vicam_camera *)data)->gain);
|
||||
}
|
||||
|
||||
static int
|
||||
vicam_write_proc_shutter(struct file *file, const char *buffer,
|
||||
unsigned long count, void *data)
|
||||
{
|
||||
u16 stmp;
|
||||
char kbuf[8];
|
||||
struct vicam_camera *cam = (struct vicam_camera *) data;
|
||||
|
||||
if (count > 6)
|
||||
return -EINVAL;
|
||||
|
||||
if (copy_from_user(kbuf, buffer, count))
|
||||
return -EFAULT;
|
||||
|
||||
stmp = (u16) simple_strtoul(kbuf, NULL, 10);
|
||||
if (stmp < 4 || stmp > 32000)
|
||||
return -EINVAL;
|
||||
|
||||
cam->shutter_speed = stmp;
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
static int
|
||||
vicam_write_proc_gain(struct file *file, const char *buffer,
|
||||
unsigned long count, void *data)
|
||||
{
|
||||
u16 gtmp;
|
||||
char kbuf[8];
|
||||
|
||||
struct vicam_camera *cam = (struct vicam_camera *) data;
|
||||
|
||||
if (count > 4)
|
||||
return -EINVAL;
|
||||
|
||||
if (copy_from_user(kbuf, buffer, count))
|
||||
return -EFAULT;
|
||||
|
||||
gtmp = (u16) simple_strtoul(kbuf, NULL, 10);
|
||||
if (gtmp > 255)
|
||||
return -EINVAL;
|
||||
cam->gain = gtmp;
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
static void
|
||||
vicam_create_proc_root(void)
|
||||
{
|
||||
vicam_proc_root = proc_mkdir("video/vicam", NULL);
|
||||
|
||||
if (vicam_proc_root)
|
||||
vicam_proc_root->owner = THIS_MODULE;
|
||||
else
|
||||
printk(KERN_ERR
|
||||
"could not create /proc entry for vicam!");
|
||||
}
|
||||
|
||||
static void
|
||||
vicam_destroy_proc_root(void)
|
||||
{
|
||||
if (vicam_proc_root)
|
||||
remove_proc_entry("video/vicam", 0);
|
||||
}
|
||||
|
||||
static void
|
||||
vicam_create_proc_entry(struct vicam_camera *cam)
|
||||
{
|
||||
char name[64];
|
||||
struct proc_dir_entry *ent;
|
||||
|
||||
DBG(KERN_INFO "vicam: creating proc entry\n");
|
||||
|
||||
if (!vicam_proc_root || !cam) {
|
||||
printk(KERN_INFO
|
||||
"vicam: could not create proc entry, %s pointer is null.\n",
|
||||
(!cam ? "camera" : "root"));
|
||||
return;
|
||||
}
|
||||
|
||||
sprintf(name, "video%d", cam->vdev.minor);
|
||||
|
||||
cam->proc_dir = proc_mkdir(name, vicam_proc_root);
|
||||
|
||||
if ( !cam->proc_dir )
|
||||
return; // FIXME: We should probably return an error here
|
||||
|
||||
ent = create_proc_entry("shutter", S_IFREG | S_IRUGO | S_IWUSR,
|
||||
cam->proc_dir);
|
||||
if (ent) {
|
||||
ent->data = cam;
|
||||
ent->read_proc = vicam_read_proc_shutter;
|
||||
ent->write_proc = vicam_write_proc_shutter;
|
||||
ent->size = 64;
|
||||
}
|
||||
|
||||
ent = create_proc_entry("gain", S_IFREG | S_IRUGO | S_IWUSR,
|
||||
cam->proc_dir);
|
||||
if (ent) {
|
||||
ent->data = cam;
|
||||
ent->read_proc = vicam_read_proc_gain;
|
||||
ent->write_proc = vicam_write_proc_gain;
|
||||
ent->size = 64;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
vicam_destroy_proc_entry(void *ptr)
|
||||
{
|
||||
struct vicam_camera *cam = (struct vicam_camera *) ptr;
|
||||
char name[16];
|
||||
|
||||
if ( !cam->proc_dir )
|
||||
return;
|
||||
|
||||
sprintf(name, "video%d", cam->vdev.minor);
|
||||
remove_proc_entry("shutter", cam->proc_dir);
|
||||
remove_proc_entry("gain", cam->proc_dir);
|
||||
remove_proc_entry(name,vicam_proc_root);
|
||||
cam->proc_dir = NULL;
|
||||
|
||||
}
|
||||
|
||||
#else
|
||||
static inline void vicam_create_proc_root(void) { }
|
||||
static inline void vicam_destroy_proc_root(void) { }
|
||||
static inline void vicam_create_proc_entry(struct vicam_camera *cam) { }
|
||||
static inline void vicam_destroy_proc_entry(void *ptr) { }
|
||||
#endif
|
||||
|
||||
static const struct file_operations vicam_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = vicam_open,
|
||||
|
@ -1330,8 +1155,6 @@ vicam_probe( struct usb_interface *intf, const struct usb_device_id *id)
|
|||
return -EIO;
|
||||
}
|
||||
|
||||
vicam_create_proc_entry(cam);
|
||||
|
||||
printk(KERN_INFO "ViCam webcam driver now controlling video device %d\n",cam->vdev.minor);
|
||||
|
||||
usb_set_intfdata (intf, cam);
|
||||
|
@ -1363,8 +1186,6 @@ vicam_disconnect(struct usb_interface *intf)
|
|||
|
||||
cam->udev = NULL;
|
||||
|
||||
vicam_destroy_proc_entry(cam);
|
||||
|
||||
/* the only thing left to do is synchronize with
|
||||
* our close/release function on who should release
|
||||
* the camera memory. if there are any users using the
|
||||
|
@ -1390,7 +1211,6 @@ usb_vicam_init(void)
|
|||
{
|
||||
int retval;
|
||||
DBG(KERN_INFO "ViCam-based WebCam driver startup\n");
|
||||
vicam_create_proc_root();
|
||||
retval = usb_register(&vicam_driver);
|
||||
if (retval)
|
||||
printk(KERN_WARNING "usb_register failed!\n");
|
||||
|
@ -1404,7 +1224,6 @@ usb_vicam_exit(void)
|
|||
"ViCam-based WebCam driver shutdown\n");
|
||||
|
||||
usb_deregister(&vicam_driver);
|
||||
vicam_destroy_proc_root();
|
||||
}
|
||||
|
||||
module_init(usb_vicam_init);
|
||||
|
|
Загрузка…
Ссылка в новой задаче