Commit ce36ceda authored by Mike Thomas's avatar Mike Thomas Committed by Greg Kroah-Hartman

staging/easycap: Remove obsolete routines

The so-called bridger routine has proved unnecessary following general
improvements elsewhere.  The explain_() functions were a convenience
during early development, but are unnecessary and inappropriate now.
Signed-off-by: default avatarMike Thomas <rmthomas@sciolus.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 050afc92
...@@ -42,12 +42,6 @@ ...@@ -42,12 +42,6 @@
#if (!defined(EASYCAP_H)) #if (!defined(EASYCAP_H))
#define EASYCAP_H #define EASYCAP_H
#if defined(EASYCAP_DEBUG)
#if (9 < EASYCAP_DEBUG)
#error Debug levels 0 to 9 are okay.\
To achieve higher levels, remove this trap manually from easycap.h
#endif
#endif /*EASYCAP_DEBUG*/
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
/* /*
* THESE ARE FOR MAINTENANCE ONLY - NORMALLY UNDEFINED: * THESE ARE FOR MAINTENANCE ONLY - NORMALLY UNDEFINED:
...@@ -56,21 +50,9 @@ ...@@ -56,21 +50,9 @@
#undef PREFER_NTSC #undef PREFER_NTSC
#undef EASYCAP_TESTCARD #undef EASYCAP_TESTCARD
#undef EASYCAP_TESTTONE #undef EASYCAP_TESTTONE
#undef LOCKFRAME
#undef NOREADBACK #undef NOREADBACK
#undef AUDIOTIME #undef AUDIOTIME
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
/*
*
* DEFINE BRIDGER TO ACTIVATE THE ROUTINE FOR BRIDGING VIDEOTAPE DROPOUTS.
*
* *** UNDER DEVELOPMENT/TESTING - NOT READY YET!***
*
*/
/*---------------------------------------------------------------------------*/
#undef BRIDGER
/*---------------------------------------------------------------------------*/
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/init.h> #include <linux/init.h>
...@@ -135,7 +117,7 @@ ...@@ -135,7 +117,7 @@
#define USB_EASYCAP_VENDOR_ID 0x05e1 #define USB_EASYCAP_VENDOR_ID 0x05e1
#define USB_EASYCAP_PRODUCT_ID 0x0408 #define USB_EASYCAP_PRODUCT_ID 0x0408
#define EASYCAP_DRIVER_VERSION "0.8.21" #define EASYCAP_DRIVER_VERSION "0.8.41"
#define EASYCAP_DRIVER_DESCRIPTION "easycapdc60" #define EASYCAP_DRIVER_DESCRIPTION "easycapdc60"
#define USB_SKEL_MINOR_BASE 192 #define USB_SKEL_MINOR_BASE 192
...@@ -291,8 +273,6 @@ unsigned int audio_buffer_page_many; ...@@ -291,8 +273,6 @@ unsigned int audio_buffer_page_many;
__s16 oldaudio; __s16 oldaudio;
#endif /*UPSAMPLE*/ #endif /*UPSAMPLE*/
struct easycap_format easycap_format[1 + SETTINGS_MANY];
int ilk; int ilk;
bool microphone; bool microphone;
...@@ -307,10 +287,6 @@ struct usb_interface *pusb_interface; ...@@ -307,10 +287,6 @@ struct usb_interface *pusb_interface;
struct kref kref; struct kref kref;
struct mutex mutex_mmap_video[FRAME_BUFFER_MANY];
struct mutex mutex_timeval0;
struct mutex mutex_timeval1;
int queued[FRAME_BUFFER_MANY]; int queued[FRAME_BUFFER_MANY];
int done[FRAME_BUFFER_MANY]; int done[FRAME_BUFFER_MANY];
...@@ -347,8 +323,6 @@ int video_idle; ...@@ -347,8 +323,6 @@ int video_idle;
int video_eof; int video_eof;
int video_junk; int video_junk;
int fudge;
struct data_buffer video_isoc_buffer[VIDEO_ISOC_BUFFER_MANY]; struct data_buffer video_isoc_buffer[VIDEO_ISOC_BUFFER_MANY];
struct data_buffer \ struct data_buffer \
field_buffer[FIELD_BUFFER_MANY][(FIELD_BUFFER_SIZE/PAGE_SIZE)]; field_buffer[FIELD_BUFFER_MANY][(FIELD_BUFFER_SIZE/PAGE_SIZE)];
...@@ -489,11 +463,7 @@ int kill_video_urbs(struct easycap *); ...@@ -489,11 +463,7 @@ int kill_video_urbs(struct easycap *);
int field2frame(struct easycap *); int field2frame(struct easycap *);
int redaub(struct easycap *, void *, void *, \ int redaub(struct easycap *, void *, void *, \
int, int, __u8, __u8, bool); int, int, __u8, __u8, bool);
void debrief(struct easycap *);
void sayreadonly(struct easycap *);
void easycap_testcard(struct easycap *, int); void easycap_testcard(struct easycap *, int);
int explain_ioctl(__u32);
int explain_cid(__u32);
int fillin_formats(void); int fillin_formats(void);
int adjust_standard(struct easycap *, v4l2_std_id); int adjust_standard(struct easycap *, v4l2_std_id);
int adjust_format(struct easycap *, __u32, __u32, __u32, \ int adjust_format(struct easycap *, __u32, __u32, __u32, \
...@@ -595,7 +565,7 @@ unsigned long long int remainder; ...@@ -595,7 +565,7 @@ unsigned long long int remainder;
#if defined(EASYCAP_DEBUG) #if defined(EASYCAP_DEBUG)
#define JOT(n, format, args...) do { \ #define JOT(n, format, args...) do { \
if (n <= easycap_debug) { \ if (n <= debug) { \
printk(KERN_DEBUG "easycap: %s: " format, __func__, ##args); \ printk(KERN_DEBUG "easycap: %s: " format, __func__, ##args); \
} \ } \
} while (0) } while (0)
...@@ -603,8 +573,6 @@ unsigned long long int remainder; ...@@ -603,8 +573,6 @@ unsigned long long int remainder;
#define JOT(n, format, args...) do {} while (0) #define JOT(n, format, args...) do {} while (0)
#endif /*EASYCAP_DEBUG*/ #endif /*EASYCAP_DEBUG*/
#define POUT JOT(8, ":-(in file %s line %4i\n", __FILE__, __LINE__)
#define MICROSECONDS(X, Y) \ #define MICROSECONDS(X, Y) \
((1000000*((long long int)(X.tv_sec - Y.tv_sec))) + \ ((1000000*((long long int)(X.tv_sec - Y.tv_sec))) + \
(long long int)(X.tv_usec - Y.tv_usec)) (long long int)(X.tv_usec - Y.tv_usec))
......
/***************************************************************************** /*****************************************************************************
* * * *
* easycap_debug.h * * debug.h *
* * * *
*****************************************************************************/ *****************************************************************************/
/* /*
...@@ -24,4 +24,4 @@ ...@@ -24,4 +24,4 @@
* *
*/ */
/*****************************************************************************/ /*****************************************************************************/
extern int easycap_debug; extern int debug;
This diff is collapsed.
...@@ -64,45 +64,22 @@ const struct stk1160config { int reg; int set; } stk1160config[256] = { ...@@ -64,45 +64,22 @@ const struct stk1160config { int reg; int set; } stk1160config[256] = {
#if defined(PREFER_NTSC) #if defined(PREFER_NTSC)
#undef OLDMARGIN
#if defined(OLDMARGIN)
{0x110, 0x0008},
#else
{0x110, 0x0014}, {0x110, 0x0014},
#endif /*OLDMARGIN*/
{0x111, 0x0000}, {0x111, 0x0000},
{0x112, 0x0003}, {0x112, 0x0003},
{0x113, 0x0000}, {0x113, 0x0000},
#if defined(OLDMARGIN)
{0x114, 0x0508},
#else
{0x114, 0x0514}, {0x114, 0x0514},
#endif /*OLDMARGIN*/
{0x115, 0x0005}, {0x115, 0x0005},
{0x116, 0x00F3}, {0x116, 0x00F3},
{0x117, 0x0000}, {0x117, 0x0000},
#else /* ! PREFER_NTSC*/ #else /* ! PREFER_NTSC*/
#if defined(OLDMARGIN)
{0x110, 0x0008},
#else
{0x110, 0x0014}, {0x110, 0x0014},
#endif /*OLDMARGIN*/
{0x111, 0x0000}, {0x111, 0x0000},
{0x112, 0x0020}, {0x112, 0x0020},
{0x113, 0x0000}, {0x113, 0x0000},
#if defined(OLDMARGIN)
{0x114, 0x0508},
#else
{0x114, 0x0514}, {0x114, 0x0514},
#endif /*OLDMARGIN*/
{0x115, 0x0005}, {0x115, 0x0005},
{0x116, 0x0110}, {0x116, 0x0110},
{0x117, 0x0001}, {0x117, 0x0001},
......
...@@ -31,8 +31,8 @@ ...@@ -31,8 +31,8 @@
#include "easycap.h" #include "easycap.h"
#include "easycap_standard.h" #include "easycap_standard.h"
int easycap_debug; int debug;
module_param(easycap_debug, int, S_IRUGO | S_IWUSR); module_param(debug, int, S_IRUGO | S_IWUSR);
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
/* /*
...@@ -314,8 +314,6 @@ peasycap->audio_eof = 0; ...@@ -314,8 +314,6 @@ peasycap->audio_eof = 0;
do_gettimeofday(&peasycap->timeval7); do_gettimeofday(&peasycap->timeval7);
peasycap->fudge = 0;
JOT(4, "finished initialization\n"); JOT(4, "finished initialization\n");
return 0; return 0;
} }
...@@ -855,15 +853,11 @@ if (NULL == peasycap) { ...@@ -855,15 +853,11 @@ if (NULL == peasycap) {
*/ */
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
miss = 0; miss = 0;
if (mutex_lock_interruptible(&(peasycap->mutex_mmap_video[0])))
return -ERESTARTSYS;
while ((peasycap->field_read == peasycap->field_fill) || \ while ((peasycap->field_read == peasycap->field_fill) || \
(0 != (0xFF00 & peasycap->field_buffer\ (0 != (0xFF00 & peasycap->field_buffer\
[peasycap->field_read][0].kount)) || \ [peasycap->field_read][0].kount)) || \
(0 != (0x00FF & peasycap->field_buffer\ (0 != (0x00FF & peasycap->field_buffer\
[peasycap->field_read][0].kount))) { [peasycap->field_read][0].kount))) {
mutex_unlock(&(peasycap->mutex_mmap_video[0]));
if (mode) if (mode)
return -EAGAIN; return -EAGAIN;
...@@ -888,15 +882,11 @@ while ((peasycap->field_read == peasycap->field_fill) || \ ...@@ -888,15 +882,11 @@ while ((peasycap->field_read == peasycap->field_fill) || \
} }
if (peasycap->video_eof) { if (peasycap->video_eof) {
JOT(8, "%i=peasycap->video_eof\n", peasycap->video_eof); JOT(8, "%i=peasycap->video_eof\n", peasycap->video_eof);
debrief(peasycap);
kill_video_urbs(peasycap); kill_video_urbs(peasycap);
return -EIO; return -EIO;
} }
miss++; miss++;
if (mutex_lock_interruptible(&(peasycap->mutex_mmap_video[0])))
return -ERESTARTSYS;
} }
mutex_unlock(&(peasycap->mutex_mmap_video[0]));
JOT(8, "first awakening on wq_video after %i waits\n", miss); JOT(8, "first awakening on wq_video after %i waits\n", miss);
rc = field2frame(peasycap); rc = field2frame(peasycap);
...@@ -925,15 +915,11 @@ JOT(8, "bumped to: %i=peasycap->frame_fill\n", peasycap->frame_fill); ...@@ -925,15 +915,11 @@ JOT(8, "bumped to: %i=peasycap->frame_fill\n", peasycap->frame_fill);
*/ */
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
miss = 0; miss = 0;
if (mutex_lock_interruptible(&(peasycap->mutex_mmap_video[0])))
return -ERESTARTSYS;
while ((peasycap->field_read == peasycap->field_fill) || \ while ((peasycap->field_read == peasycap->field_fill) || \
(0 != (0xFF00 & peasycap->field_buffer\ (0 != (0xFF00 & peasycap->field_buffer\
[peasycap->field_read][0].kount)) || \ [peasycap->field_read][0].kount)) || \
(0 == (0x00FF & peasycap->field_buffer\ (0 == (0x00FF & peasycap->field_buffer\
[peasycap->field_read][0].kount))) { [peasycap->field_read][0].kount))) {
mutex_unlock(&(peasycap->mutex_mmap_video[0]));
if (mode) if (mode)
return -EAGAIN; return -EAGAIN;
...@@ -957,15 +943,11 @@ while ((peasycap->field_read == peasycap->field_fill) || \ ...@@ -957,15 +943,11 @@ while ((peasycap->field_read == peasycap->field_fill) || \
} }
if (peasycap->video_eof) { if (peasycap->video_eof) {
JOT(8, "%i=peasycap->video_eof\n", peasycap->video_eof); JOT(8, "%i=peasycap->video_eof\n", peasycap->video_eof);
debrief(peasycap);
kill_video_urbs(peasycap); kill_video_urbs(peasycap);
return -EIO; return -EIO;
} }
miss++; miss++;
if (mutex_lock_interruptible(&(peasycap->mutex_mmap_video[0])))
return -ERESTARTSYS;
} }
mutex_unlock(&(peasycap->mutex_mmap_video[0]));
JOT(8, "second awakening on wq_video after %i waits\n", miss); JOT(8, "second awakening on wq_video after %i waits\n", miss);
rc = field2frame(peasycap); rc = field2frame(peasycap);
...@@ -2233,41 +2215,6 @@ default: { ...@@ -2233,41 +2215,6 @@ default: {
return 0; return 0;
} }
/*****************************************************************************/ /*****************************************************************************/
void
debrief(struct easycap *peasycap)
{
if ((struct usb_device *)NULL != peasycap->pusb_device) {
check_stk(peasycap->pusb_device);
check_saa(peasycap->pusb_device);
sayreadonly(peasycap);
SAY("%i=peasycap->field_fill\n", peasycap->field_fill);
SAY("%i=peasycap->field_read\n", peasycap->field_read);
SAY("%i=peasycap->frame_fill\n", peasycap->frame_fill);
SAY("%i=peasycap->frame_read\n", peasycap->frame_read);
}
return;
}
/*****************************************************************************/
void
sayreadonly(struct easycap *peasycap)
{
static int done;
int got00, got1F, got60, got61, got62;
if ((!done) && ((struct usb_device *)NULL != peasycap->pusb_device)) {
done = 1;
got00 = read_saa(peasycap->pusb_device, 0x00);
got1F = read_saa(peasycap->pusb_device, 0x1F);
got60 = read_saa(peasycap->pusb_device, 0x60);
got61 = read_saa(peasycap->pusb_device, 0x61);
got62 = read_saa(peasycap->pusb_device, 0x62);
SAY("0x%02X=reg0x00 0x%02X=reg0x1F\n", got00, got1F);
SAY("0x%02X=reg0x60 0x%02X=reg0x61 0x%02X=reg0x62\n", \
got60, got61, got62);
}
return;
}
/*****************************************************************************/
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
/* /*
* SEE CORBET ET AL. "LINUX DEVICE DRIVERS", 3rd EDITION, PAGES 430-434 * SEE CORBET ET AL. "LINUX DEVICE DRIVERS", 3rd EDITION, PAGES 430-434
...@@ -2355,7 +2302,6 @@ if (NULL == peasycap) { ...@@ -2355,7 +2302,6 @@ if (NULL == peasycap) {
SAY("ERROR: peasycap is NULL\n"); SAY("ERROR: peasycap is NULL\n");
return retcode; return retcode;
} }
mutex_lock(&(peasycap->mutex_mmap_video[0]));
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
pbuf = peasycap->frame_buffer[k][m].pgo; pbuf = peasycap->frame_buffer[k][m].pgo;
if (NULL == pbuf) { if (NULL == pbuf) {
...@@ -2370,7 +2316,6 @@ if (NULL == page) { ...@@ -2370,7 +2316,6 @@ if (NULL == page) {
get_page(page); get_page(page);
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
finish: finish:
mutex_unlock(&(peasycap->mutex_mmap_video[0]));
if (NULL == page) { if (NULL == page) {
SAY("ERROR: page is NULL after get_page(page)\n"); SAY("ERROR: page is NULL after get_page(page)\n");
} else { } else {
...@@ -2383,7 +2328,7 @@ return retcode; ...@@ -2383,7 +2328,7 @@ return retcode;
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
/* /*
* ON COMPLETION OF A VIDEO URB ITS DATA IS COPIED TO THE FIELD BUFFERS * ON COMPLETION OF A VIDEO URB ITS DATA IS COPIED TO THE FIELD BUFFERS
* PROVIDED peasycap->video_idle IS ZER0. REGARDLESS OF THIS BEING TRUE, * PROVIDED peasycap->video_idle IS ZERO. REGARDLESS OF THIS BEING TRUE,
* IT IS RESUBMITTED PROVIDED peasycap->video_isoc_streaming IS NOT ZERO. * IT IS RESUBMITTED PROVIDED peasycap->video_isoc_streaming IS NOT ZERO.
* *
* THIS FUNCTION IS AN INTERRUPT SERVICE ROUTINE AND MUST NOT SLEEP. * THIS FUNCTION IS AN INTERRUPT SERVICE ROUTINE AND MUST NOT SLEEP.
...@@ -2400,7 +2345,7 @@ return retcode; ...@@ -2400,7 +2345,7 @@ return retcode;
* 0 != (kount & 0x8000) => AT LEAST ONE URB COMPLETED WITH ERRORS * 0 != (kount & 0x8000) => AT LEAST ONE URB COMPLETED WITH ERRORS
* 0 != (kount & 0x4000) => BUFFER HAS TOO MUCH DATA * 0 != (kount & 0x4000) => BUFFER HAS TOO MUCH DATA
* 0 != (kount & 0x2000) => BUFFER HAS NOT ENOUGH DATA * 0 != (kount & 0x2000) => BUFFER HAS NOT ENOUGH DATA
* 0 != (kount & 0x0400) => FIELD WAS SUBMITTED BY BRIDGER ROUTINE * 0 != (kount & 0x0400) => RESERVED
* 0 != (kount & 0x0200) => FIELD BUFFER NOT YET CHECKED * 0 != (kount & 0x0200) => FIELD BUFFER NOT YET CHECKED
* 0 != (kount & 0x0100) => BUFFER HAS TWO EXTRA BYTES - WHY? * 0 != (kount & 0x0100) => BUFFER HAS TWO EXTRA BYTES - WHY?
*/ */
...@@ -2417,10 +2362,6 @@ int videofieldamount; ...@@ -2417,10 +2362,6 @@ int videofieldamount;
unsigned int override; unsigned int override;
int framestatus, framelength, frameactual, frameoffset; int framestatus, framelength, frameactual, frameoffset;
__u8 *pu; __u8 *pu;
#if defined(BRIDGER)
struct timeval timeval;
long long usec;
#endif /*BRIDGER*/
if (NULL == purb) { if (NULL == purb) {
SAY("ERROR: easycap_complete(): purb is NULL\n"); SAY("ERROR: easycap_complete(): purb is NULL\n");
...@@ -2864,55 +2805,6 @@ if (purb->status) { ...@@ -2864,55 +2805,6 @@ if (purb->status) {
} }
} }
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
/*
*
*
* *** UNDER DEVELOPMENT/TESTING - NOT READY YET! ***
*
*
*
* VIDEOTAPES MAY HAVE BEEN MANUALLY PAUSED AND RESTARTED DURING RECORDING.
* THIS CAUSES LOSS OF SYNC, CONFUSING DOWNSTREAM USERSPACE PROGRAMS WHICH
* MAY INTERPRET THE INTERRUPTION AS A SYMPTOM OF LATENCY. TO OVERCOME THIS
* THE DRIVER BRIDGES THE HIATUS BY SENDING DUMMY VIDEO FRAMES AT ROUGHLY
* THE RIGHT TIME INTERVALS IN THE HOPE OF PERSUADING THE DOWNSTREAM USERSPACE
* PROGRAM TO RESUME NORMAL SERVICE WHEN THE INTERRUPTION IS OVER.
*/
/*---------------------------------------------------------------------------*/
#if defined(BRIDGER)
do_gettimeofday(&timeval);
if (peasycap->timeval7.tv_sec) {
usec = 1000000*(timeval.tv_sec - peasycap->timeval7.tv_sec) + \
(timeval.tv_usec - peasycap->timeval7.tv_usec);
if (usec > (peasycap->usec + peasycap->tolerate)) {
JOT(8, "bridging hiatus\n");
peasycap->video_junk = 0;
peasycap->field_buffer[peasycap->field_fill][0].kount |= 0x0400;
peasycap->field_read = (peasycap->field_fill)++;
if (FIELD_BUFFER_MANY <= peasycap->field_fill) \
peasycap->field_fill = 0;
peasycap->field_page = 0;
pfield_buffer = &peasycap->field_buffer\
[peasycap->field_fill][peasycap->field_page];
pfield_buffer->pto = pfield_buffer->pgo;
JOT(8, "bumped to: %i=peasycap->field_fill %i=parity\n", \
peasycap->field_fill, 0x00FF & pfield_buffer->kount);
JOT(8, "field buffer %i has %i bytes to be overwritten\n", \
peasycap->field_read, videofieldamount);
JOT(8, "wakeup call to wq_video, " \
"%i=field_read %i=field_fill %i=parity\n", \
peasycap->field_read, peasycap->field_fill, \
0x00FF & \
peasycap->field_buffer[peasycap->field_read][0].kount);
wake_up_interruptible(&(peasycap->wq_video));
do_gettimeofday(&peasycap->timeval7);
}
}
#endif /*BRIDGER*/
/*---------------------------------------------------------------------------*/
/* /*
* RESUBMIT THIS URB, UNLESS A SEVERE PERSISTENT ERROR CONDITION EXISTS. * RESUBMIT THIS URB, UNLESS A SEVERE PERSISTENT ERROR CONDITION EXISTS.
* *
...@@ -3152,12 +3044,6 @@ if (0 == bInterfaceNumber) { ...@@ -3152,12 +3044,6 @@ if (0 == bInterfaceNumber) {
init_waitqueue_head(&(peasycap->wq_video)); init_waitqueue_head(&(peasycap->wq_video));
init_waitqueue_head(&(peasycap->wq_audio)); init_waitqueue_head(&(peasycap->wq_audio));
mutex_init(&(peasycap->mutex_timeval0));
mutex_init(&(peasycap->mutex_timeval1));
for (k = 0; k < FRAME_BUFFER_MANY; k++)
mutex_init(&(peasycap->mutex_mmap_video[k]));
peasycap->ilk = 0; peasycap->ilk = 0;
peasycap->microphone = false; peasycap->microphone = false;
...@@ -3176,11 +3062,6 @@ if (0 == bInterfaceNumber) { ...@@ -3176,11 +3062,6 @@ if (0 == bInterfaceNumber) {
peasycap->audio_isoc_buffer_size = -1; peasycap->audio_isoc_buffer_size = -1;
peasycap->frame_buffer_many = FRAME_BUFFER_MANY; peasycap->frame_buffer_many = FRAME_BUFFER_MANY;
if ((struct mutex *)NULL == &(peasycap->mutex_mmap_video[0])) {
SAY("ERROR: &(peasycap->mutex_mmap_video[%i]) is NULL\n", 0);
return -EFAULT;
}
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
/* /*
* DYNAMICALLY FILL IN THE AVAILABLE FORMATS. * DYNAMICALLY FILL IN THE AVAILABLE FORMATS.
...@@ -4308,7 +4189,7 @@ easycap_module_init(void) ...@@ -4308,7 +4189,7 @@ easycap_module_init(void)
int result; int result;
SAY("========easycap=======\n"); SAY("========easycap=======\n");
JOT(4, "begins. %i=debug\n", easycap_debug); JOT(4, "begins. %i=debug\n", debug);
SAY("version: " EASYCAP_DRIVER_VERSION "\n"); SAY("version: " EASYCAP_DRIVER_VERSION "\n");
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
/* /*
...@@ -4349,6 +4230,6 @@ MODULE_AUTHOR("R.M. Thomas <rmthomas@sciolus.org>"); ...@@ -4349,6 +4230,6 @@ MODULE_AUTHOR("R.M. Thomas <rmthomas@sciolus.org>");
MODULE_DESCRIPTION(EASYCAP_DRIVER_DESCRIPTION); MODULE_DESCRIPTION(EASYCAP_DRIVER_DESCRIPTION);
MODULE_VERSION(EASYCAP_DRIVER_VERSION); MODULE_VERSION(EASYCAP_DRIVER_VERSION);
#if defined(EASYCAP_DEBUG) #if defined(EASYCAP_DEBUG)
MODULE_PARM_DESC(easycap_debug, "debug: 0 (default), 1, 2,..."); MODULE_PARM_DESC(debug, "debug: 0 (default), 1, 2,...");
#endif /*EASYCAP_DEBUG*/ #endif /*EASYCAP_DEBUG*/
/*****************************************************************************/ /*****************************************************************************/
...@@ -413,7 +413,7 @@ return n; ...@@ -413,7 +413,7 @@ return n;
} }
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
struct v4l2_queryctrl easycap_control[] = \ struct v4l2_queryctrl easycap_control[] = \
{{ {{
.id = V4L2_CID_BRIGHTNESS, .id = V4L2_CID_BRIGHTNESS,
.type = V4L2_CTRL_TYPE_INTEGER, .type = V4L2_CTRL_TYPE_INTEGER,
.name = "Brightness", .name = "Brightness",
...@@ -485,5 +485,5 @@ struct v4l2_queryctrl easycap_control[] = \ ...@@ -485,5 +485,5 @@ struct v4l2_queryctrl easycap_control[] = \
{ {
.id = 0xFFFFFFFF .id = 0xFFFFFFFF
} }
}; };
/*****************************************************************************/ /*****************************************************************************/
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
/* /*
* ON COMPLETION OF AN AUDIO URB ITS DATA IS COPIED TO THE AUDIO BUFFERS * ON COMPLETION OF AN AUDIO URB ITS DATA IS COPIED TO THE AUDIO BUFFERS
* PROVIDED peasycap->audio_idle IS ZER0. REGARDLESS OF THIS BEING TRUE, * PROVIDED peasycap->audio_idle IS ZERO. REGARDLESS OF THIS BEING TRUE,
* IT IS RESUBMITTED PROVIDED peasycap->audio_isoc_streaming IS NOT ZERO. * IT IS RESUBMITTED PROVIDED peasycap->audio_isoc_streaming IS NOT ZERO.
*/ */
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
...@@ -842,11 +842,7 @@ do_gettimeofday(&timeval); ...@@ -842,11 +842,7 @@ do_gettimeofday(&timeval);
if (!peasycap->timeval1.tv_sec) { if (!peasycap->timeval1.tv_sec) {
audio_bytes = 0; audio_bytes = 0;
timeval1 = timeval; timeval1 = timeval;
if (mutex_lock_interruptible(&(peasycap->mutex_timeval1)))
return -ERESTARTSYS;
peasycap->timeval1 = timeval1; peasycap->timeval1 = timeval1;
mutex_unlock(&(peasycap->mutex_timeval1));
sdr.quotient = 192000; sdr.quotient = 192000;
} else { } else {
audio_bytes += (long long int) szret; audio_bytes += (long long int) szret;
...@@ -861,10 +857,7 @@ if (!peasycap->timeval1.tv_sec) { ...@@ -861,10 +857,7 @@ if (!peasycap->timeval1.tv_sec) {
sdr.quotient = 192000; sdr.quotient = 192000;
} }
JOT(8, "audio streaming at %lli bytes/second\n", sdr.quotient); JOT(8, "audio streaming at %lli bytes/second\n", sdr.quotient);
if (mutex_lock_interruptible(&(peasycap->mutex_timeval1)))
return -ERESTARTSYS;
peasycap->dnbydt = sdr.quotient; peasycap->dnbydt = sdr.quotient;
mutex_unlock(&(peasycap->mutex_timeval1));
JOT(8, "returning %li\n", (long int)szret); JOT(8, "returning %li\n", (long int)szret);
return szret; return szret;
......
This diff is collapsed.
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