Commit 094ddbe9 authored by Mike Isely's avatar Mike Isely Committed by Mauro Carvalho Chehab

V4L/DVB (4377): Force horizontal resolution limits in the pvrusb2 driver

This change causes the pvrusb2 driver to limit horizontal resolution
to be only 720 if 24xxx device hardware is being used.  This is a
workaround for an unsolved problem in the driver where if the
resolution is set to something other than 720 the video quality will
be _seriously_ degraded.  It only happens on 24xxx devices (29xxx are
unaffected by the problem and unaffected by this change).  Once the
problem is finally solved, this small change can be removed.
Signed-off-by: default avatarMike Isely <isely@pobox.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent 89ebd63f
...@@ -363,6 +363,30 @@ static int ctrl_freq_set(struct pvr2_ctrl *cptr,int m,int v) ...@@ -363,6 +363,30 @@ static int ctrl_freq_set(struct pvr2_ctrl *cptr,int m,int v)
return 0; return 0;
} }
#ifdef CONFIG_VIDEO_PVRUSB2_24XXX
static int ctrl_hres_max_get(struct pvr2_ctrl *cptr,int *vp)
{
/* If we're dealing with a 24xxx device, force the horizontal
maximum to be 720 no matter what, since we can't get the device
to work properly with any other value. Otherwise just return
the normal value. */
*vp = cptr->info->def.type_int.max_value;
if (cptr->hdw->hdw_type == PVR2_HDW_TYPE_24XXX) *vp = 720;
return 0;
}
static int ctrl_hres_min_get(struct pvr2_ctrl *cptr,int *vp)
{
/* If we're dealing with a 24xxx device, force the horizontal
minimum to be 720 no matter what, since we can't get the device
to work properly with any other value. Otherwise just return
the normal value. */
*vp = cptr->info->def.type_int.min_value;
if (cptr->hdw->hdw_type == PVR2_HDW_TYPE_24XXX) *vp = 720;
return 0;
}
#endif
static int ctrl_cx2341x_is_dirty(struct pvr2_ctrl *cptr) static int ctrl_cx2341x_is_dirty(struct pvr2_ctrl *cptr)
{ {
return cptr->hdw->enc_stale != 0; return cptr->hdw->enc_stale != 0;
...@@ -721,6 +745,12 @@ static const struct pvr2_ctl_info control_defs[] = { ...@@ -721,6 +745,12 @@ static const struct pvr2_ctl_info control_defs[] = {
.default_value = 720, .default_value = 720,
DEFREF(res_hor), DEFREF(res_hor),
DEFINT(320,720), DEFINT(320,720),
#ifdef CONFIG_VIDEO_PVRUSB2_24XXX
/* Hook in check for clamp on horizontal resolution in
order to avoid unsolved problem involving cx25840. */
.get_max_value = ctrl_hres_max_get,
.get_min_value = ctrl_hres_min_get,
#endif
},{ },{
.desc = "Vertical capture resolution", .desc = "Vertical capture resolution",
.name = "resolution_ver", .name = "resolution_ver",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment