media: venus: vdec: Fix decoder cmd STOP issue
authorStanimir Varbanov <stanimir.varbanov@linaro.org>
Fri, 2 Apr 2021 10:06:48 +0000 (12:06 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Tue, 6 Apr 2021 14:01:18 +0000 (16:01 +0200)
Fixes an issue when issuing a stop command to the controller, negating the
following firmware error.

"SFR message from FW: Exception: TID = Unknown IP = 0x3b7dc FA = 0x0
 cause = 0x6"

Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/platform/qcom/venus/hfi_cmds.c
drivers/media/platform/qcom/venus/vdec.c

index fc0a01f..11a8347 100644 (file)
@@ -254,7 +254,7 @@ int pkt_session_unset_buffers(struct hfi_session_release_buffer_pkt *pkt,
 int pkt_session_etb_decoder(struct hfi_session_empty_buffer_compressed_pkt *pkt,
                            void *cookie, struct hfi_frame_data *in_frame)
 {
-       if (!cookie || !in_frame->device_addr)
+       if (!cookie)
                return -EINVAL;
 
        pkt->shdr.hdr.size = sizeof(*pkt);
index 61c9069..ddb7cd3 100644 (file)
@@ -515,7 +515,10 @@ vdec_decoder_cmd(struct file *file, void *fh, struct v4l2_decoder_cmd *cmd)
 
                fdata.buffer_type = HFI_BUFFER_INPUT;
                fdata.flags |= HFI_BUFFERFLAG_EOS;
-               fdata.device_addr = 0xdeadb000;
+               if (IS_V6(inst->core))
+                       fdata.device_addr = 0;
+               else
+                       fdata.device_addr = 0xdeadb000;
 
                ret = hfi_session_process_buf(inst, &fdata);