[PATCH v1 04/10] media: platform: mediatek: add isp_7x cam-raw unit

CK Hu (胡俊光) ck.hu at mediatek.com
Sun Oct 27 23:48:40 PDT 2024


Hi, Shu-hsiang:

On Wed, 2024-10-09 at 19:15 +0800, Shu-hsiang Yang wrote:
> Introduces the ISP pipeline driver for the MediaTek ISP raw and yuv
> modules. Key functionalities include data processing, V4L2 integration,
> resource management, debug support, and various control operations.
> Additionally, IRQ handling, platform device management, and MediaTek
> ISP DMA format support are also included.
> 
> Signed-off-by: Shu-hsiang Yang <Shu-hsiang.Yang at mediatek.com>
> ---

[snip]

> +
> +static const struct mtk_cam_format_desc yuv_out_group2_fmts[] = {
> +	{
> +		.vfmt.fmt.pix_mp = {
> +			.width = YUV_GROUP2_MAX_WIDTH,
> +			.height = YUV_GROUP2_MAX_HEIGHT,

I don't know why you define width and height here.
All width/height of yuv_out_group2_fmts are the same.
And the max width/height is define in capture_queues[].frmsizes.
So the width/height could be dropped here.

Regards,
CK

> +			.pixelformat = V4L2_PIX_FMT_NV12,
> +		},
> +	},
> +	{
> +		.vfmt.fmt.pix_mp = {
> +			.width = YUV_GROUP2_MAX_WIDTH,
> +			.height = YUV_GROUP2_MAX_HEIGHT,
> +			.pixelformat = V4L2_PIX_FMT_NV21,
> +		},
> +	},
> +	{
> +		.vfmt.fmt.pix_mp = {
> +			.width = YUV_GROUP2_MAX_WIDTH,
> +			.height = YUV_GROUP2_MAX_HEIGHT,
> +			.pixelformat = V4L2_PIX_FMT_NV12_10,
> +		},
> +	},
> +	{
> +		.vfmt.fmt.pix_mp = {
> +			.width = YUV_GROUP2_MAX_WIDTH,
> +			.height = YUV_GROUP2_MAX_HEIGHT,
> +			.pixelformat = V4L2_PIX_FMT_NV21_10,
> +		},
> +	},
> +	{
> +		.vfmt.fmt.pix_mp = {
> +			.width = YUV_GROUP2_MAX_WIDTH,
> +			.height = YUV_GROUP2_MAX_HEIGHT,
> +			.pixelformat = V4L2_PIX_FMT_MTISP_NV12_10P,
> +		},
> +	},
> +	{
> +		.vfmt.fmt.pix_mp = {
> +			.width = YUV_GROUP2_MAX_WIDTH,
> +			.height = YUV_GROUP2_MAX_HEIGHT,
> +			.pixelformat = V4L2_PIX_FMT_MTISP_NV21_10P,
> +		},
> +	},
> +	{
> +		.vfmt.fmt.pix_mp = {
> +			.width = YUV_GROUP2_MAX_WIDTH,
> +			.height = YUV_GROUP2_MAX_HEIGHT,
> +			.pixelformat = V4L2_PIX_FMT_NV12_12,
> +		},
> +	},
> +	{
> +		.vfmt.fmt.pix_mp = {
> +			.width = YUV_GROUP2_MAX_WIDTH,
> +			.height = YUV_GROUP2_MAX_HEIGHT,
> +			.pixelformat = V4L2_PIX_FMT_NV21_12,
> +		},
> +	},
> +	{
> +		.vfmt.fmt.pix_mp = {
> +			.width = YUV_GROUP2_MAX_WIDTH,
> +			.height = YUV_GROUP2_MAX_HEIGHT,
> +			.pixelformat = V4L2_PIX_FMT_MTISP_NV12_12P,
> +		},
> +	},
> +	{
> +		.vfmt.fmt.pix_mp = {
> +			.width = YUV_GROUP2_MAX_WIDTH,
> +			.height = YUV_GROUP2_MAX_HEIGHT,
> +			.pixelformat = V4L2_PIX_FMT_MTISP_NV21_12P,
> +		},
> +	}
> +};
> +

[snip]

> +#define MTK_RAW_TOTAL_CAPTURE_QUEUES 15
> +static const struct
> +mtk_cam_dev_node_desc capture_queues[] = {
> 

[snip]

> +	{
> +		.id = MTK_RAW_YUVO_2_OUT,
> +		.name = "yuvo 2",
> +		.cap = V4L2_CAP_VIDEO_CAPTURE_MPLANE,
> +		.buf_type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE,
> +		.link_flags = MEDIA_LNK_FL_ENABLED |  MEDIA_LNK_FL_IMMUTABLE,
> +		.image = true,
> +		.smem_alloc = false,
> +		.dma_port = MTKCAM_IPI_RAW_YUVO_2,
> +		.fmts = yuv_out_group2_fmts,
> +		.num_fmts = ARRAY_SIZE(yuv_out_group2_fmts),
> +		.default_fmt_idx = 0,
> +		.pad_ops = &source_pad_ops_yuv,
> +		.ioctl_ops = &mtk_cam_v4l2_vcap_ioctl_ops,
> +		.frmsizes = &(struct v4l2_frmsizeenum) {
> +			.index = 0,
> +			.type = V4L2_FRMSIZE_TYPE_CONTINUOUS,
> +			.stepwise = {
> +				.max_width = YUV_GROUP2_MAX_WIDTH,
> +				.min_width = IMG_MIN_WIDTH,
> +				.max_height = YUV_GROUP2_MAX_HEIGHT,
> +				.min_height = IMG_MIN_HEIGHT,
> +				.step_height = 1,
> +				.step_width = 1,
> +			},
> +		},
> +	},
> +};
> +


More information about the Linux-mediatek mailing list