Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+39 −26
Original line number Diff line number Diff line
@@ -1655,7 +1655,21 @@ static const char *pvr2_get_state_name(unsigned int st)

static int pvr2_decoder_enable(struct pvr2_hdw *hdw,int enablefl)
{
	if (!hdw->decoder_ctrl) {
	if (hdw->decoder_ctrl) {
		hdw->decoder_ctrl->enable(hdw->decoder_ctrl->ctxt, enablefl);
		return 0;
	}
	/* Even though we really only care about the video decoder chip at
	   this point, we'll broadcast stream on/off to all sub-devices
	   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");
@@ -1665,10 +1679,6 @@ static int pvr2_decoder_enable(struct pvr2_hdw *hdw,int enablefl)
	}
	return -EIO;
}
	hdw->decoder_ctrl->enable(hdw->decoder_ctrl->ctxt,enablefl);
	// ?????
	return 0;
}


void pvr2_hdw_set_decoder(struct pvr2_hdw *hdw,struct pvr2_decoder_ctrl *ptr)
@@ -4009,23 +4019,26 @@ int pvr2_hdw_cmd_powerdown(struct pvr2_hdw *hdw)

int pvr2_hdw_cmd_decoder_reset(struct pvr2_hdw *hdw)
{
	if (!hdw->decoder_ctrl) {
	pvr2_trace(PVR2_TRACE_INIT,
			   "Unable to reset decoder: nothing attached");
		return -ENOTTY;
	}

		   "Requesting decoder reset");
	if (hdw->decoder_ctrl) {
		if (!hdw->decoder_ctrl->force_reset) {
			pvr2_trace(PVR2_TRACE_INIT,
				   "Unable to reset decoder: not implemented");
			return -ENOTTY;
		}

	pvr2_trace(PVR2_TRACE_INIT,
		   "Requesting decoder reset");
		hdw->decoder_ctrl->force_reset(hdw->decoder_ctrl->ctxt);
	// ?????
		return 0;
	} else {
	}
	if (hdw->decoder_client_id) {
		v4l2_device_call_all(&hdw->v4l2_dev, hdw->decoder_client_id,
				     core, reset, 0);
		return 0;
	}
	pvr2_trace(PVR2_TRACE_INIT,
		   "Unable to reset decoder: nothing attached");
	return -ENOTTY;
}