aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Isely <isely@pobox.com>2006-11-19 18:50:31 -0500
committerMauro Carvalho Chehab <mchehab@infradead.org>2006-12-10 05:51:35 -0500
commitff67c614e23bf5a3c16968e2c42ab442121c4beb (patch)
tree1abfb816b01ae2f179916e9990854c906418635e
parentfa4cdd0dc4c066a1a4df19005912bf453dc37b6d (diff)
V4L/DVB (4852): Pvrusb2: Fix horizontal resolution setting problem for 24xxx devices
Fix long-standing issue which prevented use of 24xxx devices at any horizontal resolution other an 720. The problem is in the cx25840 module, if no attempt is made to initialize VBI there. Such a thing should not be needed, but the pvrusb2 driver is updated now to deal with this. Signed-off-by: Mike Isely <isely@pobox.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c16
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-hdw.c26
2 files changed, 16 insertions, 26 deletions
diff --git a/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c b/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c
index c80c26be6e4d..848fb233d808 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c
@@ -260,6 +260,22 @@ int pvr2_i2c_cx2584x_v4l_setup(struct pvr2_hdw *hdw,
260 sizeof(decoder_ops[0]))) - 1; 260 sizeof(decoder_ops[0]))) - 1;
261 hdw->decoder_ctrl = &ctxt->ctrl; 261 hdw->decoder_ctrl = &ctxt->ctrl;
262 cp->handler = &ctxt->handler; 262 cp->handler = &ctxt->handler;
263 {
264 /*
265 Mike Isely <isely@pobox.com> 19-Nov-2006 - This bit
266 of nuttiness for cx25840 causes that module to
267 correctly set up its video scaling. This is really
268 a problem in the cx25840 module itself, but we work
269 around it here. The problem has not been seen in
270 ivtv because there VBI is supported and set up. We
271 don't do VBI here (at least not yet) and thus we
272 never attempted to even set it up.
273 */
274 struct v4l2_format fmt;
275 memset(&fmt,0,sizeof(fmt));
276 fmt.type = V4L2_BUF_TYPE_SLICED_VBI_CAPTURE;
277 pvr2_i2c_client_cmd(ctxt->client,VIDIOC_S_FMT,&fmt);
278 }
263 pvr2_trace(PVR2_TRACE_CHIPS,"i2c 0x%x cx2584x V4L2 handler set up", 279 pvr2_trace(PVR2_TRACE_CHIPS,"i2c 0x%x cx2584x V4L2 handler set up",
264 cp->client->addr); 280 cp->client->addr);
265 return !0; 281 return !0;
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
index 1f787333d18c..d2004965187b 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
@@ -356,28 +356,6 @@ static int ctrl_freq_set(struct pvr2_ctrl *cptr,int m,int v)
356 return 0; 356 return 0;
357} 357}
358 358
359static int ctrl_hres_max_get(struct pvr2_ctrl *cptr,int *vp)
360{
361 /* If we're dealing with a 24xxx device, force the horizontal
362 maximum to be 720 no matter what, since we can't get the device
363 to work properly with any other value. Otherwise just return
364 the normal value. */
365 *vp = cptr->info->def.type_int.max_value;
366 if (cptr->hdw->hdw_type == PVR2_HDW_TYPE_24XXX) *vp = 720;
367 return 0;
368}
369
370static int ctrl_hres_min_get(struct pvr2_ctrl *cptr,int *vp)
371{
372 /* If we're dealing with a 24xxx device, force the horizontal
373 minimum to be 720 no matter what, since we can't get the device
374 to work properly with any other value. Otherwise just return
375 the normal value. */
376 *vp = cptr->info->def.type_int.min_value;
377 if (cptr->hdw->hdw_type == PVR2_HDW_TYPE_24XXX) *vp = 720;
378 return 0;
379}
380
381static int ctrl_vres_max_get(struct pvr2_ctrl *cptr,int *vp) 359static int ctrl_vres_max_get(struct pvr2_ctrl *cptr,int *vp)
382{ 360{
383 /* Actual maximum depends on the video standard in effect. */ 361 /* Actual maximum depends on the video standard in effect. */
@@ -758,10 +736,6 @@ static const struct pvr2_ctl_info control_defs[] = {
758 .default_value = 720, 736 .default_value = 720,
759 DEFREF(res_hor), 737 DEFREF(res_hor),
760 DEFINT(19,720), 738 DEFINT(19,720),
761 /* Hook in check for clamp on horizontal resolution in
762 order to avoid unsolved problem involving cx25840. */
763 .get_max_value = ctrl_hres_max_get,
764 .get_min_value = ctrl_hres_min_get,
765 },{ 739 },{
766 .desc = "Vertical capture resolution", 740 .desc = "Vertical capture resolution",
767 .name = "resolution_ver", 741 .name = "resolution_ver",