|
@@ -363,6 +363,30 @@ static int ctrl_freq_set(struct pvr2_ctrl *cptr,int m,int v)
|
|
|
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)
|
|
|
{
|
|
|
return cptr->hdw->enc_stale != 0;
|
|
@@ -721,6 +745,12 @@ static const struct pvr2_ctl_info control_defs[] = {
|
|
|
.default_value = 720,
|
|
|
DEFREF(res_hor),
|
|
|
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",
|
|
|
.name = "resolution_ver",
|