]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
media: iris: Add handling for no show frames
authorDikshita Agarwal <quic_dikshita@quicinc.com>
Fri, 9 May 2025 08:39:04 +0000 (14:09 +0530)
committerHans Verkuil <hverkuil@xs4all.nl>
Thu, 3 Jul 2025 09:02:44 +0000 (11:02 +0200)
Firmware sends the picture type as NO_SHOW for frames which are not
supposed to be displayed, add handling for the same in driver to drop
them.

Acked-by: Vikash Garodia <quic_vgarodia@quicinc.com>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8550-QRD
Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8550-HDK
Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8650-QRD
Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8650-HDK
Signed-off-by: Dikshita Agarwal <quic_dikshita@quicinc.com>
Tested-by: Vikash Garodia <quic_vgarodia@quicinc.com> # on sa8775p-ride
Signed-off-by: Bryan O'Donoghue <bod@kernel.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
drivers/media/platform/qcom/iris/iris_hfi_gen2_defines.h
drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c

index 806f8bb7f505d25cafcfd5e75a39d0f00eaeac42..666061a612c304698067337f63ac9332c75c5d36 100644 (file)
@@ -113,6 +113,7 @@ enum hfi_picture_type {
        HFI_PICTURE_I                           = 0x00000008,
        HFI_PICTURE_CRA                         = 0x00000010,
        HFI_PICTURE_BLA                         = 0x00000020,
+       HFI_PICTURE_NOSHOW                      = 0x00000040,
 };
 
 enum hfi_buffer_type {
index d2cede2fe1b5a82cbd4dd399860c43ef044d687f..b6d0ff860d7866c85c7768ec263f0d30b42446a6 100644 (file)
@@ -91,7 +91,9 @@ static int iris_hfi_gen2_get_driver_buffer_flags(struct iris_inst *inst, u32 hfi
        struct iris_inst_hfi_gen2 *inst_hfi_gen2 = to_iris_inst_hfi_gen2(inst);
        u32 driver_flags = 0;
 
-       if (inst_hfi_gen2->hfi_frame_info.picture_type & keyframe)
+       if (inst_hfi_gen2->hfi_frame_info.picture_type & HFI_PICTURE_NOSHOW)
+               driver_flags |= V4L2_BUF_FLAG_ERROR;
+       else if (inst_hfi_gen2->hfi_frame_info.picture_type & keyframe)
                driver_flags |= V4L2_BUF_FLAG_KEYFRAME;
        else if (inst_hfi_gen2->hfi_frame_info.picture_type & HFI_PICTURE_P)
                driver_flags |= V4L2_BUF_FLAG_PFRAME;