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

V4L/DVB (7311): pvrusb2: Allow digital streaming without encoder firmware

The encoder is not a part of the pipeline when in digital mode, so
streaming is OK in this case even when the encoder's firmware is not
loaded.  Modify the driver core handling of this scenario to permit
streaming.
Signed-off-by: default avatarMike Isely <isely@pobox.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent e9db1ff2
...@@ -3352,6 +3352,7 @@ static void pvr2_hdw_cmd_modeswitch(struct pvr2_hdw *hdw,int digitalFl) ...@@ -3352,6 +3352,7 @@ static void pvr2_hdw_cmd_modeswitch(struct pvr2_hdw *hdw,int digitalFl)
default: break; default: break;
} }
pvr2_hdw_untrip_unlocked(hdw);
hdw->pathway_state = cmode; hdw->pathway_state = cmode;
} }
...@@ -3814,6 +3815,7 @@ static int pvr2_hdw_state_eval(struct pvr2_hdw *hdw) ...@@ -3814,6 +3815,7 @@ static int pvr2_hdw_state_eval(struct pvr2_hdw *hdw)
unsigned int st; unsigned int st;
int state_updated = 0; int state_updated = 0;
int callback_flag = 0; int callback_flag = 0;
int analog_mode;
pvr2_trace(PVR2_TRACE_STBITS, pvr2_trace(PVR2_TRACE_STBITS,
"Drive state check START"); "Drive state check START");
...@@ -3824,17 +3826,20 @@ static int pvr2_hdw_state_eval(struct pvr2_hdw *hdw) ...@@ -3824,17 +3826,20 @@ static int pvr2_hdw_state_eval(struct pvr2_hdw *hdw)
/* Process all state and get back over disposition */ /* Process all state and get back over disposition */
state_updated = pvr2_hdw_state_update(hdw); state_updated = pvr2_hdw_state_update(hdw);
analog_mode = (hdw->pathway_state != PVR2_PATHWAY_DIGITAL);
/* Update master state based upon all other states. */ /* Update master state based upon all other states. */
if (!hdw->flag_ok) { if (!hdw->flag_ok) {
st = PVR2_STATE_DEAD; st = PVR2_STATE_DEAD;
} else if (hdw->fw1_state != FW1_STATE_OK) { } else if (hdw->fw1_state != FW1_STATE_OK) {
st = PVR2_STATE_COLD; st = PVR2_STATE_COLD;
} else if (!hdw->state_encoder_ok) { } else if (analog_mode && !hdw->state_encoder_ok) {
st = PVR2_STATE_WARM; st = PVR2_STATE_WARM;
} else if (hdw->flag_tripped || hdw->flag_decoder_missed) { } else if (hdw->flag_tripped ||
(analog_mode && hdw->flag_decoder_missed)) {
st = PVR2_STATE_ERROR; st = PVR2_STATE_ERROR;
} else if (hdw->state_usbstream_run && } else if (hdw->state_usbstream_run &&
((hdw->pathway_state != PVR2_PATHWAY_ANALOG) || (!analog_mode ||
(hdw->state_encoder_run && hdw->state_decoder_run))) { (hdw->state_encoder_run && hdw->state_decoder_run))) {
st = PVR2_STATE_RUN; st = PVR2_STATE_RUN;
} else { } else {
......
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