Переглянути джерело

video: driver: handle zero length, RO last flag buffer

reset data size to zero for last flag buffer.
reset RO flag for last flag buffer.

Change-Id: Idb340217c00ce478d1ec7de338b2ad38da23016d
Signed-off-by: Darshana Patil <[email protected]>
Darshana Patil 4 роки тому
батько
коміт
964c0e2b79
1 змінених файлів з 16 додано та 6 видалено
  1. 16 6
      driver/vidc/src/venus_hfi_response.c

+ 16 - 6
driver/vidc/src/venus_hfi_response.c

@@ -489,13 +489,23 @@ static int handle_output_buffer(struct msm_vidc_inst *inst,
 	buf->attr &= ~MSM_VIDC_ATTR_QUEUED;
 	buf->attr |= MSM_VIDC_ATTR_DEQUEUED;
 	/*
-	 * reset read only flag for a zero length
-	 * buffer (if marked read only)
+	 * reset data size to zero for last flag buffer.
+	 * reset RO flag for last flag buffer.
 	 */
-	if (buffer->flags & HFI_BUF_FW_FLAG_READONLY &&
-			!buffer->data_size)
-		buf->attr &= ~MSM_VIDC_ATTR_READ_ONLY;
-	else if (buffer->flags & HFI_BUF_FW_FLAG_READONLY)
+	if (buffer->flags & HFI_BUF_FW_FLAG_LAST) {
+		if (buffer->data_size) {
+			i_vpr_e(inst, "%s: reset data size to zero for last flag buffer\n",
+				__func__);
+			buffer->data_size = 0;
+		}
+		if (buffer->flags & HFI_BUF_FW_FLAG_READONLY) {
+			i_vpr_e(inst, "%s: reset RO flag for last flag buffer\n",
+				__func__);
+			buffer->flags &= ~HFI_BUF_FW_FLAG_READONLY;
+		}
+	}
+
+	if (buffer->flags & HFI_BUF_FW_FLAG_READONLY)
 		buf->attr |= MSM_VIDC_ATTR_READ_ONLY;
 	else
 		buf->attr &= ~MSM_VIDC_ATTR_READ_ONLY;