diff --git a/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c b/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c
index 74c3857b6d84e85a2087fcf7a627ccc41d4da8f2..8efc5ff8951f273e99b228b78a208723f598ed49 100644
--- a/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c
+++ b/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c
@@ -1258,8 +1258,6 @@ static void wave5_vpu_dec_buf_queue_dst(struct vb2_buffer *vb)
 {
 	struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb);
 	struct vpu_instance *inst = vb2_get_drv_priv(vb->vb2_queue);
-	struct vpu_dst_buffer *vpu_buf = wave5_to_vpu_dst_buf(vbuf);
-	int ret = 0;
 
 	vbuf->sequence = inst->queued_dst_buf_num++;
 
@@ -1325,6 +1323,7 @@ static int wave5_vpu_dec_start_streaming(struct vb2_queue *q, unsigned int count
 {
 	struct vpu_instance *inst = vb2_get_drv_priv(q);
 	struct v4l2_m2m_ctx *m2m_ctx = inst->v4l2_fh.m2m_ctx;
+        struct vb2_v4l2_buffer *buf;
 	int ret = 0;
 
 	dev_dbg(inst->dev->dev, "%s: type: %u\n", __func__, q->type);
@@ -1363,15 +1362,31 @@ static int wave5_vpu_dec_start_streaming(struct vb2_queue *q, unsigned int count
 
 		if (inst->thumbnail_mode)
 			wave5_vpu_dec_give_command(inst, ENABLE_DEC_THUMBNAIL_MODE, NULL);
-	} else if (q->type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE &&
-		   inst->state == VPU_INST_STATE_STOP) {
-		ret = restore_state(inst);
+	} else if (q->type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) {
+		struct dec_initial_info *initial_info =
+			&inst->codec_info->dec_info.initial_info;
+
+		if (inst->state == VPU_INST_STATE_STOP)
+			ret = restore_state(inst);
+
+		if (inst->state == VPU_INST_STATE_INIT_SEQ) {
+			if (initial_info->luma_bitdepth != 8) {
+				dev_info(inst->dev->dev, "%s: no support for %d bit depth",
+						__func__, initial_info->luma_bitdepth);
+				goto cleanup_dst_buffers;
+			}
+		}
+
 	}
 
 	return ret;
+
 free_bitstream_vbuf:
 	wave5_vdi_free_dma_memory(inst->dev, &inst->bitstream_vbuf);
-	return ret;
+cleanup_src_buffers:
+	while ((buf = v4l2_m2m_dst_buf_remove(m2m_ctx)))
+		v4l2_m2m_buf_done(buf, VB2_BUF_STATE_QUEUED);
+	return -EINVAL;
 }
 
 static int streamoff_output(struct vb2_queue *q)
@@ -1573,9 +1588,6 @@ static int initialize_sequence(struct vpu_instance *inst)
 	} else {
 		u32 old_conf_win_width, old_conf_win_height;
 
-		if (initial_info.luma_bitdepth != 8)
-			return -1;
-
 		dev_dbg(inst->dev->dev, "%s: rd_ptr %llu", __func__, initial_info.rd_ptr);
 
 		dev_dbg(inst->dev->dev, "%s: width: %u height: %u profile: %u | minbuffer: %u\n",
@@ -1607,10 +1619,6 @@ static int initialize_sequence(struct vpu_instance *inst)
 			inst->require_sequence_change = true;
 		}
 
-		/* TODO check if the bitdepth has changed, when 10 bit support
-		 * is implemented
-		 */
-
 		handle_dynamic_resolution_change(inst);
 	}