Commit 7cf654b1 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman

patch by Simon Evans <spse@secret.org.uk> that adds a Konica USB webcam driver

parent 1a3cb06f
...@@ -505,6 +505,21 @@ CONFIG_USB_DABUSB ...@@ -505,6 +505,21 @@ CONFIG_USB_DABUSB
The module will be called dabusb.o. If you want to compile it as a The module will be called dabusb.o. If you want to compile it as a
module, say M here and read <file:Documentation/modules.txt>. module, say M here and read <file:Documentation/modules.txt>.
CONFIG_USB_KONICAWC
Say Y here if you want support for webcams based on a Konica
chipset. This is known to work with the Intel YC76 webcam.
This driver uses the Video For Linux API. You must enable
(Y or M in config) Video For Linux (under Character Devices)
to use this driver. Information on this API and pointers to
"v4l" programs may be found on the WWW at
<http://roadrunner.swansea.uk.linux.org/v4l.shtml>.
This code is also available as a module ( = code which can be
inserted in and removed from the running kernel whenever you want).
The module will be called konicawc.o. If you want to compile it as
a module, say M here and read <file:Documentation/modules.txt>.
CONFIG_USB_USBNET CONFIG_USB_USBNET
This driver supports network links over USB with USB "Network" This driver supports network links over USB with USB "Network"
or "data transfer" cables, often used to network laptops to PCs. or "data transfer" cables, often used to network laptops to PCs.
......
...@@ -80,6 +80,7 @@ else ...@@ -80,6 +80,7 @@ else
dep_tristate ' USB 3com HomeConnect (aka vicam) support (EXPERIMENTAL)' CONFIG_USB_VICAM $CONFIG_USB $CONFIG_VIDEO_DEV $CONFIG_EXPERIMENTAL dep_tristate ' USB 3com HomeConnect (aka vicam) support (EXPERIMENTAL)' CONFIG_USB_VICAM $CONFIG_USB $CONFIG_VIDEO_DEV $CONFIG_EXPERIMENTAL
dep_tristate ' D-Link USB FM radio support (EXPERIMENTAL)' CONFIG_USB_DSBR $CONFIG_USB $CONFIG_VIDEO_DEV $CONFIG_EXPERIMENTAL dep_tristate ' D-Link USB FM radio support (EXPERIMENTAL)' CONFIG_USB_DSBR $CONFIG_USB $CONFIG_VIDEO_DEV $CONFIG_EXPERIMENTAL
dep_tristate ' DABUSB driver' CONFIG_USB_DABUSB $CONFIG_USB dep_tristate ' DABUSB driver' CONFIG_USB_DABUSB $CONFIG_USB
dep_tristate ' USB Konica Webcam support' CONFIG_USB_KONICAWC $CONFIG_USB $CONFIG_VIDEO_DEV
fi fi
comment 'USB Network adaptors' comment 'USB Network adaptors'
......
...@@ -64,6 +64,7 @@ obj-$(CONFIG_USB_ACM) += acm.o ...@@ -64,6 +64,7 @@ obj-$(CONFIG_USB_ACM) += acm.o
obj-$(CONFIG_USB_PRINTER) += printer.o obj-$(CONFIG_USB_PRINTER) += printer.o
obj-$(CONFIG_USB_AUDIO) += audio.o obj-$(CONFIG_USB_AUDIO) += audio.o
obj-$(CONFIG_USB_IBMCAM) += ibmcam.o usbvideo.o ultracam.o obj-$(CONFIG_USB_IBMCAM) += ibmcam.o usbvideo.o ultracam.o
obj-$(CONFIG_USB_KONICAWC) += konicawc.o usbvideo.o
obj-$(CONFIG_USB_PWC) += pwc.o obj-$(CONFIG_USB_PWC) += pwc.o
obj-$(CONFIG_USB_DC2XX) += dc2xx.o obj-$(CONFIG_USB_DC2XX) += dc2xx.o
obj-$(CONFIG_USB_MDC800) += mdc800.o obj-$(CONFIG_USB_MDC800) += mdc800.o
......
This diff is collapsed.
...@@ -791,6 +791,10 @@ int usbvideo_register( ...@@ -791,6 +791,10 @@ int usbvideo_register(
cams->cb.getFrame = usbvideo_GetFrame; cams->cb.getFrame = usbvideo_GetFrame;
if (cams->cb.disconnect == NULL) if (cams->cb.disconnect == NULL)
cams->cb.disconnect = usbvideo_Disconnect; cams->cb.disconnect = usbvideo_Disconnect;
if (cams->cb.startDataPump == NULL)
cams->cb.startDataPump = usbvideo_StartDataPump;
if (cams->cb.stopDataPump == NULL)
cams->cb.stopDataPump = usbvideo_StopDataPump;
#if USES_PROC_FS #if USES_PROC_FS
/* /*
* If both /proc fs callbacks are NULL then we assume that the driver * If both /proc fs callbacks are NULL then we assume that the driver
...@@ -963,7 +967,7 @@ void usbvideo_Disconnect(struct usb_device *dev, void *ptr) ...@@ -963,7 +967,7 @@ void usbvideo_Disconnect(struct usb_device *dev, void *ptr)
uvd->remove_pending = 1; /* Now all ISO data will be ignored */ uvd->remove_pending = 1; /* Now all ISO data will be ignored */
/* At this time we ask to cancel outstanding URBs */ /* At this time we ask to cancel outstanding URBs */
usbvideo_StopDataPump(uvd); GET_CALLBACK(uvd, stopDataPump)(uvd);
for (i=0; i < USBVIDEO_NUMSBUF; i++) for (i=0; i < USBVIDEO_NUMSBUF; i++)
usb_free_urb(uvd->sbuf[i].urb); usb_free_urb(uvd->sbuf[i].urb);
...@@ -1299,7 +1303,7 @@ int usbvideo_v4l_open(struct video_device *dev, int flags) ...@@ -1299,7 +1303,7 @@ int usbvideo_v4l_open(struct video_device *dev, int flags)
if (errCode == 0) { if (errCode == 0) {
/* Start data pump if we have valid endpoint */ /* Start data pump if we have valid endpoint */
if (uvd->video_endp != 0) if (uvd->video_endp != 0)
errCode = usbvideo_StartDataPump(uvd); errCode = GET_CALLBACK(uvd, startDataPump)(uvd);
if (errCode == 0) { if (errCode == 0) {
if (VALID_CALLBACK(uvd, setupOnOpen)) { if (VALID_CALLBACK(uvd, setupOnOpen)) {
if (uvd->debug > 1) if (uvd->debug > 1)
...@@ -1350,7 +1354,7 @@ void usbvideo_v4l_close(struct video_device *dev) ...@@ -1350,7 +1354,7 @@ void usbvideo_v4l_close(struct video_device *dev)
info("%s($%p)", proc, dev); info("%s($%p)", proc, dev);
down(&uvd->lock); down(&uvd->lock);
usbvideo_StopDataPump(uvd); GET_CALLBACK(uvd, stopDataPump)(uvd);
usbvideo_rvfree(uvd->fbuf, uvd->fbuf_size); usbvideo_rvfree(uvd->fbuf, uvd->fbuf_size);
uvd->fbuf = NULL; uvd->fbuf = NULL;
RingQueue_Free(&uvd->dp); RingQueue_Free(&uvd->dp);
......
...@@ -269,6 +269,8 @@ typedef struct { ...@@ -269,6 +269,8 @@ typedef struct {
int (*getFrame)(uvd_t *, int); int (*getFrame)(uvd_t *, int);
int (*procfs_read)(char *page,char **start,off_t off,int count,int *eof,void *data); int (*procfs_read)(char *page,char **start,off_t off,int count,int *eof,void *data);
int (*procfs_write)(struct file *file,const char *buffer,unsigned long count,void *data); int (*procfs_write)(struct file *file,const char *buffer,unsigned long count,void *data);
int (*startDataPump)(uvd_t *uvd);
void (*stopDataPump)(uvd_t *uvd);
} usbvideo_cb_t; } usbvideo_cb_t;
struct s_usbvideo_t { struct s_usbvideo_t {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment