bw-qcam: adds parameter aggressive to skip passive detection and directly attempt initialization
PATCH 1/1 bw-qcam: adds parameter aggressive to skip passive detection and directly attempt initialization
---
drivers/media/video/bw-qcam.c +9 -1
@@ -82,11 +82,16 @@ OTHER DEALINGS IN THE SOFTWARE.static unsigned int maxpoll=250 ;/* Maximum busy-loop count for qcam I/O */ static unsigned int yieldlines=4 ;/* Yield after this many during capture */ static int video_nr =-1 ; +static unsigned int aggressive;/* Whether to probe aggressively */ module_param (maxpoll, int,0 );module_param (yieldlines, int,0 );module_param (video_nr, int,0 ); +/* Set aggressive=1 to avoid detection by polling status register and +* immediately attempt to initialize qcam */ +module_param (aggressive, int,0 ); +static inline int read_lpstatus (struct qcam_device *q) {return parport_read_status (q->pport);
@@ -331,6 +336,9 @@ static int qc_detect(struct qcam_device *q)int count =0 ;int i; +if (aggressive) +return 1 ; + lastreg = reg =read_lpstatus (q) &0xf0 ;for (i =0 ; i <500 ; i++)
@@ -354,12 +362,12 @@ static int qc_detect(struct qcam_device *q)/* Be (even more) liberal in what you accept... */ -/* if (count > 30 && count < 200) */ if (count >20 && count <400 ) {return 1 ;/* found */ }else {printk (KERN_ERR "No Quickcam found on port %s\n" , q->pport->name); +printk (KERN_DEBUG "Quickcam detection counter: %u\n" , count);return 0 ;/* not found */ } }
PATCH 1/1 bw-qcam: Adds module parameter 'aggressive' to skip polite auto-detection prior to direct initialization.
Setting aggressive=1 bypasses the friendly auto-detection by polling the status register, and instead attempts to initialize the qcam directly. Not friendly to other parallel devices, but much more reliable than the auto-detection.
--- drivers/media/video/bw-qcam.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-)
drivers/media/video/bw-qcam.c +9 -1
@@ -82,11 +82,16 @@ OTHER DEALINGS IN THE SOFTWARE.static unsigned int maxpoll=250 ;/* Maximum busy-loop count for qcam I/O */ static unsigned int yieldlines=4 ;/* Yield after this many during capture */ static int video_nr =-1 ; +static unsigned int aggressive;/* Whether to probe aggressively */ module_param (maxpoll, int,0 );module_param (yieldlines, int,0 );module_param (video_nr, int,0 ); +/* Set aggressive=1 to avoid detection by polling status register and +* immediately attempt to initialize qcam */ +module_param (aggressive, int,0 ); +static inline int read_lpstatus (struct qcam_device *q) {return parport_read_status (q->pport);
@@ -331,6 +336,9 @@ static int qc_detect(struct qcam_device *q)int count =0 ;int i; +if (aggressive) +return 1 ; + lastreg = reg =read_lpstatus (q) &0xf0 ;for (i =0 ; i <500 ; i++)
@@ -354,12 +362,12 @@ static int qc_detect(struct qcam_device *q)/* Be (even more) liberal in what you accept... */ -/* if (count > 30 && count < 200) */ if (count >20 && count <400 ) {return 1 ;/* found */ }else {printk (KERN_ERR "No Quickcam found on port %s\n" , q->pport->name); +printk (KERN_DEBUG "Quickcam detection counter: %u\n" , count);return 0 ;/* not found */ } }
Signature · 1 line
1.5.2.5
Re: [PATCH] bw-qcam: Adds module parameter 'aggressive' to skip polite auto-detection prior to direct initialization.
Quoted 1 line · On Tue, 4 Dec 2007 16:44:41 -0800 "Brett T. Warden" <[email protected]>…
Setting aggressive=1 bypasses the friendly auto-detection by polling the status register, and instead attempts to initialize the qcam directly. Not friendly to other parallel devices, but much more reliable than the auto-detection.
Someone still has a bw-qcam device ?
The status polling ought to be rock solid - what values do you see ?
A message that is not in the archive (sent off-list or not yet received): [email protected]
Re: [PATCH] bw-qcam: Adds module parameter 'aggressive' to skip polite auto-detection prior to direct initialization.
Sorry, forgot to copy back to the lists.
Quoted 20 lines · Brett Warden
Quoted 2 lines · Alan Cox
Someone still has a bw-qcam device ?
Yes. I haven't found a better option for very-low-light, although I admit I haven't looked in a long while. The last one I tried was an OV518+, but of course that driver seems to have been abandoned.
Quoted 1 line
The status polling ought to be rock solid - what values do you see ?
It has been as high as 94-96, but after being connected, powered, and used for a while, it drops sometimes into the 40s, but has even been as low as 8-14. When it's that low, it never comes back up until either I disconnect/reconnect the power, or I force the driver to initialize it through this hack. Even after trying that again just now, it's ranging from 24-33.
--
Brett Warden
Signature · 1 line
Brett Warden
drivers/media/video/bw-qcam.c OTHER DEALINGS IN THE SOFTWARE. · line 85
Quoted 11 lines · On Tue, 4 Dec 2007 16:14:13 -0800 "Brett T. Warden" <[email protected]>…
---
drivers/media/video/bw-qcam.c +1
-0@@ -82,11 +82,16 @@ OTHER DEALINGS IN THE SOFTWARE.static unsigned int maxpoll=250 ;/* Maximum busy-loop count for qcam I/O */ static unsigned int yieldlines=4 ;/* Yield after this many during capture */ static int video_nr =-1 ; +static unsigned int aggressive;
Although I would suggest that "aggressive" may not be the best term - I'm not such of a good one however - skip_passive ?
Quoted 2 lines · Alan Cox
Although I would suggest that "aggressive" may not be the best term - I'm not such of a good one however -
skip_passive?
How about force_init?
Signature · 1 line
Brett Warden
Quoted 7 lines · Brett Warden
Quoted 2 lines · Alan Cox
Although I would suggest that "aggressive" may not be the best term - I'm not such of a good one however -
skip_passive?How about
force_init?
Much more descriptive.
Signature · 3 lines
Bill Davidsen <[email protected]> "We have more to fear from the bungling of the incompetent than from the machinations of the wicked." - from Slashdot
PATCH 1/1 bw-qcam: Adds module parameter 'aggressive' to skip polite auto-detection prior to direct initialization.
In reply to Brett WardenSetting aggressive=1 bypasses the friendly auto-detection by polling the status register, and instead attempts to initialize the qcam directly. Not friendly to other parallel devices, but much more reliable than the auto-detection.
--- drivers/media/video/bw-qcam.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-)
drivers/media/video/bw-qcam.c +9 -1
@@ -82,11 +82,16 @@ OTHER DEALINGS IN THE SOFTWARE.static unsigned int maxpoll=250 ;/* Maximum busy-loop count for qcam I/O */ static unsigned int yieldlines=4 ;/* Yield after this many during capture */ static int video_nr =-1 ; +static unsigned int aggressive;/* Whether to probe aggressively */ module_param (maxpoll, int,0 );module_param (yieldlines, int,0 );module_param (video_nr, int,0 ); +/* Set aggressive=1 to avoid detection by polling status register and +* immediately attempt to initialize qcam */ +module_param (aggressive, int,0 ); +static inline int read_lpstatus (struct qcam_device *q) {return parport_read_status (q->pport);
@@ -331,6 +336,9 @@ static int qc_detect(struct qcam_device *q)int count =0 ;int i; +if (aggressive) +return 1 ; + lastreg = reg =read_lpstatus (q) &0xf0 ;for (i =0 ; i <500 ; i++)
@@ -354,12 +362,12 @@ static int qc_detect(struct qcam_device *q)/* Be (even more) liberal in what you accept... */ -/* if (count > 30 && count < 200) */ if (count >20 && count <400 ) {return 1 ;/* found */ }else {printk (KERN_ERR "No Quickcam found on port %s\n" , q->pport->name); +printk (KERN_DEBUG "Quickcam detection counter: %u\n" , count);return 0 ;/* not found */ } }
Signature · 1 line
1.5.3.7
PATCH 1/1 bw-qcam: Rename parameter 'aggressive' to 'force_init'
Changed new parameter name to 'force_init' for clarity, as per feedback.
--- drivers/media/video/bw-qcam.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-)
drivers/media/video/bw-qcam.c +4 -4
@@ -82,15 +82,15 @@ OTHER DEALINGS IN THE SOFTWARE.static unsigned int maxpoll=250 ;/* Maximum busy-loop count for qcam I/O */ static unsigned int yieldlines=4 ;/* Yield after this many during capture */ static int video_nr =-1 ; -static unsigned int aggressive;/* Whether to probe aggressively */ +static unsigned int force_init;/* Whether to probe aggressively */ module_param (maxpoll, int,0 );module_param (yieldlines, int,0 );module_param (video_nr, int,0 ); -/* Set aggressive=1 to avoid detection by polling status register and +/* Set force_init=1 to avoid detection by polling status register and * immediately attempt to initialize qcam */ -module_param (aggressive, int,0 ); +module_param (force_init, int,0 );static inline int read_lpstatus (struct qcam_device *q) {
@@ -336,7 +336,7 @@ static int qc_detect(struct qcam_device *q)int count =0 ;int i; -if (aggressive) +if (force_init)return 1 ; lastreg = reg =read_lpstatus (q) &0xf0 ;
Signature · 1 line
1.5.3.7
Re: [PATCH] bw-qcam: Rename parameter 'aggressive' to 'force_init'
Quoted 3 lines · On Wed, 2 Jan 2008 15:51:25 -0800 "Brett T. Warden" <[email protected]>…
Changed new parameter name to '
force_init' for clarity, as per feedback.Signed-off-by Brett T. Warden <[email protected]>