diff options
author | Mauro Carvalho Chehab <mchehab@infradead.org> | 2007-09-27 23:19:04 -0700 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2007-09-27 23:19:04 -0700 |
commit | 7ffda86bc612f5670c3461d8342ccb24d2ebc547 (patch) | |
tree | b919085c270f95ce1642c6cfd3311f3f85eda668 /linux/drivers | |
parent | 5eed050abfb57eeb862a3e56b0ee35ae9e37cdaf (diff) | |
download | mediapointer-dvb-s2-7ffda86bc612f5670c3461d8342ccb24d2ebc547.tar.gz mediapointer-dvb-s2-7ffda86bc612f5670c3461d8342ccb24d2ebc547.tar.bz2 |
bw-qcam: use data_reverse instead of manually poking the control register
From: Brett Warden <brett.warden@gmail.com>
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 <brett.warden@gmail.com>
Acked-by: Alan Cox <alan@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'linux/drivers')
-rw-r--r-- | linux/drivers/media/video/bw-qcam.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/linux/drivers/media/video/bw-qcam.c b/linux/drivers/media/video/bw-qcam.c index a175d7810..f6d5197da 100644 --- a/linux/drivers/media/video/bw-qcam.c +++ b/linux/drivers/media/video/bw-qcam.c @@ -107,6 +107,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); } @@ -347,10 +358,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 */ + } } |