diff options
Diffstat (limited to 'drivers/media/video/ivtv/ivtv-fileops.c')
-rw-r--r-- | drivers/media/video/ivtv/ivtv-fileops.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/media/video/ivtv/ivtv-fileops.c b/drivers/media/video/ivtv/ivtv-fileops.c index abf410943cc9..3c2cc270ccd5 100644 --- a/drivers/media/video/ivtv/ivtv-fileops.c +++ b/drivers/media/video/ivtv/ivtv-fileops.c | |||
@@ -823,6 +823,12 @@ static void ivtv_stop_decoding(struct ivtv_open_id *id, int flags, u64 pts) | |||
823 | 823 | ||
824 | IVTV_DEBUG_FILE("close() of %s\n", s->name); | 824 | IVTV_DEBUG_FILE("close() of %s\n", s->name); |
825 | 825 | ||
826 | if (id->type == IVTV_DEC_STREAM_TYPE_YUV && | ||
827 | test_bit(IVTV_F_I_DECODING_YUV, &itv->i_flags)) { | ||
828 | /* Restore registers we've changed & clean up any mess */ | ||
829 | ivtv_yuv_close(itv); | ||
830 | } | ||
831 | |||
826 | /* Stop decoding */ | 832 | /* Stop decoding */ |
827 | if (test_bit(IVTV_F_S_STREAMING, &s->s_flags)) { | 833 | if (test_bit(IVTV_F_S_STREAMING, &s->s_flags)) { |
828 | IVTV_DEBUG_INFO("close stopping decode\n"); | 834 | IVTV_DEBUG_INFO("close stopping decode\n"); |
@@ -832,10 +838,7 @@ static void ivtv_stop_decoding(struct ivtv_open_id *id, int flags, u64 pts) | |||
832 | } | 838 | } |
833 | clear_bit(IVTV_F_S_APPL_IO, &s->s_flags); | 839 | clear_bit(IVTV_F_S_APPL_IO, &s->s_flags); |
834 | clear_bit(IVTV_F_S_STREAMOFF, &s->s_flags); | 840 | clear_bit(IVTV_F_S_STREAMOFF, &s->s_flags); |
835 | if (id->type == IVTV_DEC_STREAM_TYPE_YUV && test_bit(IVTV_F_I_DECODING_YUV, &itv->i_flags)) { | 841 | |
836 | /* Restore registers we've changed & clean up any mess we've made */ | ||
837 | ivtv_yuv_close(itv); | ||
838 | } | ||
839 | if (itv->output_mode == OUT_UDMA_YUV && id->yuv_frames) | 842 | if (itv->output_mode == OUT_UDMA_YUV && id->yuv_frames) |
840 | itv->output_mode = OUT_NONE; | 843 | itv->output_mode = OUT_NONE; |
841 | 844 | ||