lkml.org 
[lkml]   [2007]   [Sep]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH] 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.

    Signed-off-by: Brett T. Warden <brett.warden@gmail.com>

    ---

    Thanks Ray and Randy for your comments, and for pointing out that I
    needed to reset the port to forward mode!

    diff --git a/drivers/media/video/bw-qcam.c b/drivers/media/video/bw-qcam.c
    index 7d47cbe..961e377 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 */
    + }
    }




    --
    Brett Warden
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-09-27 21:31    [W:2.919 / U:1.404 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site