]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
media: chips-media: wave5: Add Support for Packed YUV422 Formats
authorJackson Lee <jackson.lee@chipsnmedia.com>
Tue, 24 Mar 2026 05:04:00 +0000 (14:04 +0900)
committerHans Verkuil <hverkuil+cisco@kernel.org>
Mon, 4 May 2026 06:35:14 +0000 (08:35 +0200)
Wave5 encoder is capable of reading in numerous raw pixel formats.
Expose these formats and properly configure encoder if selected.

Signed-off-by: Jackson Lee <jackson.lee@chipsnmedia.com>
Signed-off-by: Nas Chung <nas.chung@chipsnmedia.com>
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Tested-by: Brandon Brnich <b-brnich@ti.com>
Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
drivers/media/platform/chips-media/wave5/wave5-helper.h
drivers/media/platform/chips-media/wave5/wave5-vpu-enc.c

index d61fdbda359d6f84ec0a56d5f84f4cc9d61708f5..e6f241012c3bc83b3cea98506ace8e188d4ea1d3 100644 (file)
@@ -11,7 +11,7 @@
 #include "wave5-vpu.h"
 
 #define FMT_TYPES      2
-#define MAX_FMTS       12
+#define MAX_FMTS       16
 
 const char *state_to_str(enum vpu_instance_state state);
 void wave5_cleanup_instance(struct vpu_instance *inst, struct file *filp);
index e6ac7663517802f3081b37005d01395580e5444e..e6c94b6f26711ac16cf35a5fdd3d6abaecbe7b01 100644 (file)
@@ -90,6 +90,22 @@ static const struct vpu_format enc_fmt_list[FMT_TYPES][MAX_FMTS] = {
                        .v4l2_pix_fmt = V4L2_PIX_FMT_NV61M,
                        .v4l2_frmsize = &enc_frmsize[VPU_FMT_TYPE_RAW],
                },
+               {
+                       .v4l2_pix_fmt = V4L2_PIX_FMT_YUYV,
+                       .v4l2_frmsize = &enc_frmsize[VPU_FMT_TYPE_RAW],
+               },
+               {
+                       .v4l2_pix_fmt = V4L2_PIX_FMT_YVYU,
+                       .v4l2_frmsize = &enc_frmsize[VPU_FMT_TYPE_RAW],
+               },
+               {
+                       .v4l2_pix_fmt = V4L2_PIX_FMT_UYVY,
+                       .v4l2_frmsize = &enc_frmsize[VPU_FMT_TYPE_RAW],
+               },
+               {
+                       .v4l2_pix_fmt = V4L2_PIX_FMT_VYUY,
+                       .v4l2_frmsize = &enc_frmsize[VPU_FMT_TYPE_RAW],
+               },
        }
 };
 
@@ -1140,6 +1156,22 @@ static int wave5_set_enc_openparam(struct enc_open_param *open_param,
        else
                open_param->src_format = FORMAT_420;
 
+       switch (info->format) {
+       case V4L2_PIX_FMT_YUYV:
+               open_param->packed_format = PACKED_YUYV;
+               break;
+       case V4L2_PIX_FMT_YVYU:
+               open_param->packed_format = PACKED_YVYU;
+               break;
+       case V4L2_PIX_FMT_UYVY:
+               open_param->packed_format = PACKED_UYVY;
+               break;
+       case V4L2_PIX_FMT_VYUY:
+               open_param->packed_format = PACKED_VYUY;
+               break;
+       default:
+               break;
+       }
        open_param->wave_param.gop_preset_idx = PRESET_IDX_IPP_SINGLE;
        open_param->wave_param.hvs_qp_scale = 2;
        open_param->wave_param.hvs_max_delta_qp = 10;