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

V4L/DVB (11171): pvrusb2: Tie in sub-device decoder start/stop

Implement code to send appropriate streaming start/stop commands to
attached sub-devices
Signed-off-by: default avatarMike Isely <isely@pobox.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 6907205b
...@@ -1655,19 +1655,29 @@ static const char *pvr2_get_state_name(unsigned int st) ...@@ -1655,19 +1655,29 @@ static const char *pvr2_get_state_name(unsigned int st)
static int pvr2_decoder_enable(struct pvr2_hdw *hdw,int enablefl) static int pvr2_decoder_enable(struct pvr2_hdw *hdw,int enablefl)
{ {
if (!hdw->decoder_ctrl) { if (hdw->decoder_ctrl) {
if (!hdw->flag_decoder_missed) { hdw->decoder_ctrl->enable(hdw->decoder_ctrl->ctxt, enablefl);
pvr2_trace(PVR2_TRACE_ERROR_LEGS, return 0;
"WARNING: No decoder present");
hdw->flag_decoder_missed = !0;
trace_stbit("flag_decoder_missed",
hdw->flag_decoder_missed);
}
return -EIO;
} }
hdw->decoder_ctrl->enable(hdw->decoder_ctrl->ctxt,enablefl); /* Even though we really only care about the video decoder chip at
// ????? this point, we'll broadcast stream on/off to all sub-devices
return 0; anyway, just in case somebody else wants to hear the
command... */
v4l2_device_call_all(&hdw->v4l2_dev, 0, video, s_stream, enablefl);
if (hdw->decoder_client_id) {
/* We get here if the encoder has been noticed. Otherwise
we'll issue a warning to the user (which should
normally never happen). */
return 0;
}
if (!hdw->flag_decoder_missed) {
pvr2_trace(PVR2_TRACE_ERROR_LEGS,
"WARNING: No decoder present");
hdw->flag_decoder_missed = !0;
trace_stbit("flag_decoder_missed",
hdw->flag_decoder_missed);
}
return -EIO;
} }
...@@ -4009,23 +4019,26 @@ int pvr2_hdw_cmd_powerdown(struct pvr2_hdw *hdw) ...@@ -4009,23 +4019,26 @@ int pvr2_hdw_cmd_powerdown(struct pvr2_hdw *hdw)
int pvr2_hdw_cmd_decoder_reset(struct pvr2_hdw *hdw) int pvr2_hdw_cmd_decoder_reset(struct pvr2_hdw *hdw)
{ {
if (!hdw->decoder_ctrl) { pvr2_trace(PVR2_TRACE_INIT,
pvr2_trace(PVR2_TRACE_INIT, "Requesting decoder reset");
"Unable to reset decoder: nothing attached"); if (hdw->decoder_ctrl) {
return -ENOTTY; if (!hdw->decoder_ctrl->force_reset) {
pvr2_trace(PVR2_TRACE_INIT,
"Unable to reset decoder: not implemented");
return -ENOTTY;
}
hdw->decoder_ctrl->force_reset(hdw->decoder_ctrl->ctxt);
return 0;
} else {
} }
if (hdw->decoder_client_id) {
if (!hdw->decoder_ctrl->force_reset) { v4l2_device_call_all(&hdw->v4l2_dev, hdw->decoder_client_id,
pvr2_trace(PVR2_TRACE_INIT, core, reset, 0);
"Unable to reset decoder: not implemented"); return 0;
return -ENOTTY;
} }
pvr2_trace(PVR2_TRACE_INIT, pvr2_trace(PVR2_TRACE_INIT,
"Requesting decoder reset"); "Unable to reset decoder: nothing attached");
hdw->decoder_ctrl->force_reset(hdw->decoder_ctrl->ctxt); return -ENOTTY;
// ?????
return 0;
} }
......
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