On Tue Nov 25 11:04:19 2025 +0530, Dikshita Agarwal wrote:
> On SM8250 (IRIS2) with firmware older than 1.0.087, the firmware could
> not handle a dummy device address for EOS buffers, so a NULL device
> address is sent instead. The existing check used IS_V6() alongside a
> firmware version gate:
> 
>     if (IS_V6(core) && is_fw_rev_or_older(core, 1, 0, 87))
>         fdata.device_addr = 0;
>     else
>         fdata.device_addr = 0xdeadb000;
> 
> However, SC7280 which is also V6, uses a firmware string of the form
> "1.0.<commit-hash>", which the version parser translates to 1.0.0. This
> unintentionally satisfies the `is_fw_rev_or_older(..., 1, 0, 87)`
> condition on SC7280. Combined with IS_V6() matching there as well, the
> quirk is incorrectly applied to SC7280, causing VP9 decode failures.
> 
> Constrain the check to IRIS2 (SM8250) only, which is the only platform
> that needed this quirk, by replacing IS_V6() with IS_IRIS2(). This
> restores correct behavior on SC7280 (no forced NULL EOS buffer address).
> 
> Fixes: 47f867cb1b63 ("media: venus: fix EOS handling in decoder stop command")
> Cc: [email protected]
> Reported-by: Mecid <[email protected]>
> Closes: https://github.com/qualcomm-linux/kernel-topics/issues/222
> Co-developed-by: Renjiang Han <[email protected]>
> Signed-off-by: Renjiang Han <[email protected]>
> Signed-off-by: Dikshita Agarwal <[email protected]>
> Tested-by: Renjiang Han <[email protected]>
> Signed-off-by: Bryan O'Donoghue <[email protected]>
> Signed-off-by: Hans Verkuil <[email protected]>

Patch committed.

Thanks,
Hans Verkuil

 drivers/media/platform/qcom/venus/vdec.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

---

diff --git a/drivers/media/platform/qcom/venus/vdec.c 
b/drivers/media/platform/qcom/venus/vdec.c
index d0bd2d86a31f..4cd69440e875 100644
--- a/drivers/media/platform/qcom/venus/vdec.c
+++ b/drivers/media/platform/qcom/venus/vdec.c
@@ -565,7 +565,13 @@ vdec_decoder_cmd(struct file *file, void *fh, struct 
v4l2_decoder_cmd *cmd)
 
                fdata.buffer_type = HFI_BUFFER_INPUT;
                fdata.flags |= HFI_BUFFERFLAG_EOS;
-               if (IS_V6(inst->core) && is_fw_rev_or_older(inst->core, 1, 0, 
87))
+
+               /* Send NULL EOS addr for only IRIS2 (SM8250),for firmware <= 
1.0.87.
+                * SC7280 also reports "1.0.<hash>" parsed as 1.0.0; 
restricting to IRIS2
+                * avoids misapplying this quirk and breaking VP9 decode on 
SC7280.
+                */
+
+               if (IS_IRIS2(inst->core) && is_fw_rev_or_older(inst->core, 1, 
0, 87))
                        fdata.device_addr = 0;
                else
                        fdata.device_addr = 0xdeadb000;
_______________________________________________
linuxtv-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to