V4L/DVB (11169): pvrusb2: Note who our video decoder sub-device is, and set it up

Other code may need to treat the video decoder sub-device in a special
manner, so this change implements code to recognize when such a
sub-device is connected to the driver, does any special processing for
it, and notes who the device is for future reference.

Signed-off-by: Mike Isely <isely@pobox.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
Mike Isely 2009-03-07 00:17:11 -03:00 committed by Mauro Carvalho Chehab
parent e3e76cbb4d
commit 00e5f73607
2 changed files with 29 additions and 0 deletions

View file

@ -299,6 +299,7 @@ struct pvr2_hdw {
int flag_tripped; /* Indicates overall failure to start */
struct pvr2_decoder_ctrl *decoder_ctrl;
unsigned int decoder_client_id;
// CPU firmware info (used to help find / save firmware data)
char *fw_buffer;

View file

@ -2041,6 +2041,34 @@ static void pvr2_hdw_load_subdev(struct pvr2_hdw *hdw,
pvr2_trace(PVR2_TRACE_INIT, "Attached sub-driver %s", fname);
/* client-specific setup... */
switch (mid) {
case PVR2_CLIENT_ID_CX25840:
hdw->decoder_client_id = mid;
{
/*
Mike Isely <isely@pobox.com> 19-Nov-2006 - This
bit of nuttiness for cx25840 causes that module
to correctly set up its video scaling. This is
really a problem in the cx25840 module itself,
but we work around it here. The problem has not
been seen in ivtv because there VBI is supported
and set up. We don't do VBI here (at least not
yet) and thus we never attempted to even set it
up.
*/
struct v4l2_format fmt;
memset(&fmt, 0, sizeof(fmt));
fmt.type = V4L2_BUF_TYPE_SLICED_VBI_CAPTURE;
v4l2_device_call_all(&hdw->v4l2_dev, mid,
video, s_fmt, &fmt);
}
break;
case PVR2_CLIENT_ID_SAA7115:
hdw->decoder_client_id = mid;
break;
default: break;
}
}