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 коммит произвёл Mauro Carvalho Chehab
Родитель e3e76cbb4d
Коммит 00e5f73607
2 изменённых файлов: 29 добавлений и 0 удалений

Просмотреть файл

@ -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;

Просмотреть файл

@ -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;
}
}