Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=9e19db5b6dda251b8d76c3a0069e63faca6be3f0
Commit:     9e19db5b6dda251b8d76c3a0069e63faca6be3f0
Parent:     0b67f5c568c545cb36f88e9f418af2df1cc58589
Author:     Brett Warden <[EMAIL PROTECTED]>
AuthorDate: Fri Sep 28 03:19:04 2007 -0300
Committer:  Mauro Carvalho Chehab <[EMAIL PROTECTED]>
CommitDate: Tue Oct 9 22:14:50 2007 -0300

    V4L/DVB (6238): bw-qcam: use data_reverse instead of manually poking the 
control register
    
    Fixes use of parport_write_control() to match the newer interface that
    requires explicit parport_data_reverse() and parport_data_forward() calls.
    This eliminates the following error message and restores the original
    intended behavior:
    
    parport0 (bw-qcam): use data_reverse for this!
    
    Also increases threshold in qc_detect() from 300 to 400, as my camera often
    results in a count of approx 330.  Added a kernel error message to indicate
    detection failure.
    
    Thanks Ray and Randy for your comments, and for pointing out that I
    needed to reset the port to forward mode!
    
    Signed-off-by: Brett T. Warden <[EMAIL PROTECTED]>
    Acked-by: Alan Cox <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Mauro Carvalho Chehab <[EMAIL PROTECTED]>
---
 drivers/media/video/bw-qcam.c |   18 ++++++++++++++++--
 1 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/drivers/media/video/bw-qcam.c b/drivers/media/video/bw-qcam.c
index 7d47cbe..0edd05e 100644
--- a/drivers/media/video/bw-qcam.c
+++ b/drivers/media/video/bw-qcam.c
@@ -104,6 +104,17 @@ static inline void write_lpdata(struct qcam_device *q, int 
d)
 
 static inline void write_lpcontrol(struct qcam_device *q, int d)
 {
+       if(0x20 & d) {
+               /* Set bidirectional mode to reverse (data in) */
+               parport_data_reverse(q->pport);
+       } else {
+               /* Set bidirectional mode to forward (data out) */
+               parport_data_forward(q->pport);
+       }
+
+       /* Now issue the regular port command, but strip out the
+        * direction flag */
+       d &= ~0x20;
        parport_write_control(q->pport, d);
 }
 
@@ -344,10 +355,13 @@ 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 < 300)
+       if (count > 20 && count < 400)
+       {
                return 1;       /* found */
-       else
+       } else {
+               printk(KERN_ERR "No Quickcam found on port %s\n", 
q->pport->name);
                return 0;       /* not found */
+       }
 }
 
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to