brintos

brintos / linux-shallow public Read only

0
0
Text · 14.0 KiB · b0c8f9f Raw
379 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * Copyright (c) 2022 MediaTek Inc.4 * Author: Ping-Hsun Wu <ping-hsun.wu@mediatek.com>5 */6 7#ifndef __MTK_MDP3_REGS_H__8#define __MTK_MDP3_REGS_H__9 10#include <linux/videodev2.h>11#include <media/videobuf2-core.h>12#include "mtk-img-ipi.h"13 14/*15 * MDP native color code16 * Plane count: 1, 2, 317 * H-subsample: 0, 1, 218 * V-subsample: 0, 119 * Color group: 0-RGB, 1-YUV, 2-raw20 */21#define MDP_COLOR(COMPRESS, PACKED, LOOSE, VIDEO, PLANE, HF, VF, BITS, GROUP, SWAP, ID)\22	(((COMPRESS) << 29) | ((PACKED) << 27) | ((LOOSE) << 26) | ((VIDEO) << 23) |\23	 ((PLANE) << 21) | ((HF) << 19) | ((VF) << 18) | ((BITS) << 8) |\24	 ((GROUP) << 6) | ((SWAP) << 5) | ((ID) << 0))25 26#define MDP_COLOR_IS_COMPRESS(c)        ((0x20000000 & (c)) >> 29)27#define MDP_COLOR_IS_10BIT_PACKED(c)	((0x08000000 & (c)) >> 27)28#define MDP_COLOR_IS_10BIT_LOOSE(c)	(((0x0c000000 & (c)) >> 26) == 1)29#define MDP_COLOR_IS_10BIT_TILE(c)	(((0x0c000000 & (c)) >> 26) == 3)30#define MDP_COLOR_IS_UFP(c)		((0x02000000 & (c)) >> 25)31#define MDP_COLOR_IS_INTERLACED(c)	((0x01000000 & (c)) >> 24)32#define MDP_COLOR_IS_BLOCK_MODE(c)	((0x00800000 & (c)) >> 23)33#define MDP_COLOR_GET_PLANE_COUNT(c)	((0x00600000 & (c)) >> 21)34#define MDP_COLOR_GET_H_SUBSAMPLE(c)	((0x00180000 & (c)) >> 19)35#define MDP_COLOR_GET_V_SUBSAMPLE(c)	((0x00040000 & (c)) >> 18)36#define MDP_COLOR_BITS_PER_PIXEL(c)	((0x0003ff00 & (c)) >>  8)37#define MDP_COLOR_GET_GROUP(c)		((0x000000c0 & (c)) >>  6)38#define MDP_COLOR_IS_SWAPPED(c)		((0x00000020 & (c)) >>  5)39#define MDP_COLOR_GET_UNIQUE_ID(c)	((0x0000001f & (c)) >>  0)40#define MDP_COLOR_GET_HW_FORMAT(c)	((0x0000001f & (c)) >>  0)41 42#define MDP_COLOR_IS_RGB(c)		(MDP_COLOR_GET_GROUP(c) == 0)43#define MDP_COLOR_IS_YUV(c)		(MDP_COLOR_GET_GROUP(c) == 1)44 45enum mdp_color {46	MDP_COLOR_UNKNOWN	= 0,47 48	/* MDP_COLOR_FULLG8 */49	MDP_COLOR_FULLG8_RGGB	= MDP_COLOR(0, 0, 0, 0, 1, 0, 0,  8, 2,  0, 21),50	MDP_COLOR_FULLG8_GRBG	= MDP_COLOR(0, 0, 0, 0, 1, 0, 1,  8, 2,  0, 21),51	MDP_COLOR_FULLG8_GBRG	= MDP_COLOR(0, 0, 0, 0, 1, 1, 0,  8, 2,  0, 21),52	MDP_COLOR_FULLG8_BGGR	= MDP_COLOR(0, 0, 0, 0, 1, 1, 1,  8, 2,  0, 21),53	MDP_COLOR_FULLG8	= MDP_COLOR_FULLG8_BGGR,54 55	/* MDP_COLOR_FULLG10 */56	MDP_COLOR_FULLG10_RGGB	= MDP_COLOR(0, 0, 0, 0, 1, 0, 0, 10, 2,  0, 21),57	MDP_COLOR_FULLG10_GRBG	= MDP_COLOR(0, 0, 0, 0, 1, 0, 1, 10, 2,  0, 21),58	MDP_COLOR_FULLG10_GBRG	= MDP_COLOR(0, 0, 0, 0, 1, 1, 0, 10, 2,  0, 21),59	MDP_COLOR_FULLG10_BGGR	= MDP_COLOR(0, 0, 0, 0, 1, 1, 1, 10, 2,  0, 21),60	MDP_COLOR_FULLG10	= MDP_COLOR_FULLG10_BGGR,61 62	/* MDP_COLOR_FULLG12 */63	MDP_COLOR_FULLG12_RGGB	= MDP_COLOR(0, 0, 0, 0, 1, 0, 0, 12, 2,  0, 21),64	MDP_COLOR_FULLG12_GRBG	= MDP_COLOR(0, 0, 0, 0, 1, 0, 1, 12, 2,  0, 21),65	MDP_COLOR_FULLG12_GBRG	= MDP_COLOR(0, 0, 0, 0, 1, 1, 0, 12, 2,  0, 21),66	MDP_COLOR_FULLG12_BGGR	= MDP_COLOR(0, 0, 0, 0, 1, 1, 1, 12, 2,  0, 21),67	MDP_COLOR_FULLG12	= MDP_COLOR_FULLG12_BGGR,68 69	/* MDP_COLOR_FULLG14 */70	MDP_COLOR_FULLG14_RGGB	= MDP_COLOR(0, 0, 0, 0, 1, 0, 0, 14, 2,  0, 21),71	MDP_COLOR_FULLG14_GRBG	= MDP_COLOR(0, 0, 0, 0, 1, 0, 1, 14, 2,  0, 21),72	MDP_COLOR_FULLG14_GBRG	= MDP_COLOR(0, 0, 0, 0, 1, 1, 0, 14, 2,  0, 21),73	MDP_COLOR_FULLG14_BGGR	= MDP_COLOR(0, 0, 0, 0, 1, 1, 1, 14, 2,  0, 21),74	MDP_COLOR_FULLG14	= MDP_COLOR_FULLG14_BGGR,75 76	MDP_COLOR_UFO10		= MDP_COLOR(0, 0, 0, 0, 1, 0, 0, 10, 2,  0, 24),77 78	/* MDP_COLOR_BAYER8 */79	MDP_COLOR_BAYER8_RGGB	= MDP_COLOR(0, 0, 0, 0, 1, 0, 0,  8, 2,  0, 20),80	MDP_COLOR_BAYER8_GRBG	= MDP_COLOR(0, 0, 0, 0, 1, 0, 1,  8, 2,  0, 20),81	MDP_COLOR_BAYER8_GBRG	= MDP_COLOR(0, 0, 0, 0, 1, 1, 0,  8, 2,  0, 20),82	MDP_COLOR_BAYER8_BGGR	= MDP_COLOR(0, 0, 0, 0, 1, 1, 1,  8, 2,  0, 20),83	MDP_COLOR_BAYER8	= MDP_COLOR_BAYER8_BGGR,84 85	/* MDP_COLOR_BAYER10 */86	MDP_COLOR_BAYER10_RGGB	= MDP_COLOR(0, 0, 0, 0, 1, 0, 0, 10, 2,  0, 20),87	MDP_COLOR_BAYER10_GRBG	= MDP_COLOR(0, 0, 0, 0, 1, 0, 1, 10, 2,  0, 20),88	MDP_COLOR_BAYER10_GBRG	= MDP_COLOR(0, 0, 0, 0, 1, 1, 0, 10, 2,  0, 20),89	MDP_COLOR_BAYER10_BGGR	= MDP_COLOR(0, 0, 0, 0, 1, 1, 1, 10, 2,  0, 20),90	MDP_COLOR_BAYER10	= MDP_COLOR_BAYER10_BGGR,91 92	/* MDP_COLOR_BAYER12 */93	MDP_COLOR_BAYER12_RGGB	= MDP_COLOR(0, 0, 0, 0, 1, 0, 0, 12, 2,  0, 20),94	MDP_COLOR_BAYER12_GRBG	= MDP_COLOR(0, 0, 0, 0, 1, 0, 1, 12, 2,  0, 20),95	MDP_COLOR_BAYER12_GBRG	= MDP_COLOR(0, 0, 0, 0, 1, 1, 0, 12, 2,  0, 20),96	MDP_COLOR_BAYER12_BGGR	= MDP_COLOR(0, 0, 0, 0, 1, 1, 1, 12, 2,  0, 20),97	MDP_COLOR_BAYER12	= MDP_COLOR_BAYER12_BGGR,98 99	/* MDP_COLOR_BAYER14 */100	MDP_COLOR_BAYER14_RGGB	= MDP_COLOR(0, 0, 0, 0, 1, 0, 0, 14, 2,  0, 20),101	MDP_COLOR_BAYER14_GRBG	= MDP_COLOR(0, 0, 0, 0, 1, 0, 1, 14, 2,  0, 20),102	MDP_COLOR_BAYER14_GBRG	= MDP_COLOR(0, 0, 0, 0, 1, 1, 0, 14, 2,  0, 20),103	MDP_COLOR_BAYER14_BGGR	= MDP_COLOR(0, 0, 0, 0, 1, 1, 1, 14, 2,  0, 20),104	MDP_COLOR_BAYER14	= MDP_COLOR_BAYER14_BGGR,105 106	MDP_COLOR_RGB48		= MDP_COLOR(0, 0, 0, 0, 1, 0, 0, 48, 0,  0, 23),107	/* For bayer+mono raw-16 */108	MDP_COLOR_RGB565_RAW	= MDP_COLOR(0, 0, 0, 0, 1, 0, 0, 16, 2,  0, 0),109 110	MDP_COLOR_BAYER8_UNPAK	= MDP_COLOR(0, 0, 0, 0, 1, 0, 0,  8, 2,  0, 22),111	MDP_COLOR_BAYER10_UNPAK	= MDP_COLOR(0, 0, 0, 0, 1, 0, 0, 10, 2,  0, 22),112	MDP_COLOR_BAYER12_UNPAK	= MDP_COLOR(0, 0, 0, 0, 1, 0, 0, 12, 2,  0, 22),113	MDP_COLOR_BAYER14_UNPAK	= MDP_COLOR(0, 0, 0, 0, 1, 0, 0, 14, 2,  0, 22),114 115	/* Unified formats */116	MDP_COLOR_GREY		= MDP_COLOR(0, 0, 0, 0, 1, 0, 0,  8, 1,  0, 7),117 118	MDP_COLOR_RGB565	= MDP_COLOR(0, 0, 0, 0, 1, 0, 0, 16, 0,  0, 0),119	MDP_COLOR_BGR565	= MDP_COLOR(0, 0, 0, 0, 1, 0, 0, 16, 0,  1, 0),120	MDP_COLOR_RGB888	= MDP_COLOR(0, 0, 0, 0, 1, 0, 0, 24, 0,  1, 1),121	MDP_COLOR_BGR888	= MDP_COLOR(0, 0, 0, 0, 1, 0, 0, 24, 0,  0, 1),122	MDP_COLOR_RGBA8888	= MDP_COLOR(0, 0, 0, 0, 1, 0, 0, 32, 0,  1, 2),123	MDP_COLOR_BGRA8888	= MDP_COLOR(0, 0, 0, 0, 1, 0, 0, 32, 0,  0, 2),124	MDP_COLOR_ARGB8888	= MDP_COLOR(0, 0, 0, 0, 1, 0, 0, 32, 0,  1, 3),125	MDP_COLOR_ABGR8888	= MDP_COLOR(0, 0, 0, 0, 1, 0, 0, 32, 0,  0, 3),126 127	MDP_COLOR_UYVY		= MDP_COLOR(0, 0, 0, 0, 1, 1, 0, 16, 1,  0, 4),128	MDP_COLOR_VYUY		= MDP_COLOR(0, 0, 0, 0, 1, 1, 0, 16, 1,  1, 4),129	MDP_COLOR_YUYV		= MDP_COLOR(0, 0, 0, 0, 1, 1, 0, 16, 1,  0, 5),130	MDP_COLOR_YVYU		= MDP_COLOR(0, 0, 0, 0, 1, 1, 0, 16, 1,  1, 5),131 132	MDP_COLOR_I420		= MDP_COLOR(0, 0, 0, 0, 3, 1, 1,  8, 1,  0, 8),133	MDP_COLOR_YV12		= MDP_COLOR(0, 0, 0, 0, 3, 1, 1,  8, 1,  1, 8),134	MDP_COLOR_I422		= MDP_COLOR(0, 0, 0, 0, 3, 1, 0,  8, 1,  0, 9),135	MDP_COLOR_YV16		= MDP_COLOR(0, 0, 0, 0, 3, 1, 0,  8, 1,  1, 9),136	MDP_COLOR_I444		= MDP_COLOR(0, 0, 0, 0, 3, 0, 0,  8, 1,  0, 10),137	MDP_COLOR_YV24		= MDP_COLOR(0, 0, 0, 0, 3, 0, 0,  8, 1,  1, 10),138 139	MDP_COLOR_NV12		= MDP_COLOR(0, 0, 0, 0, 2, 1, 1,  8, 1,  0, 12),140	MDP_COLOR_NV21		= MDP_COLOR(0, 0, 0, 0, 2, 1, 1,  8, 1,  1, 12),141	MDP_COLOR_NV16		= MDP_COLOR(0, 0, 0, 0, 2, 1, 0,  8, 1,  0, 13),142	MDP_COLOR_NV61		= MDP_COLOR(0, 0, 0, 0, 2, 1, 0,  8, 1,  1, 13),143	MDP_COLOR_NV24		= MDP_COLOR(0, 0, 0, 0, 2, 0, 0,  8, 1,  0, 14),144	MDP_COLOR_NV42		= MDP_COLOR(0, 0, 0, 0, 2, 0, 0,  8, 1,  1, 14),145 146	/* MediaTek proprietary formats */147	/* UFO encoded block mode */148	MDP_COLOR_420_BLK_UFO	= MDP_COLOR(0, 0, 0, 5, 2, 1, 1, 256, 1, 0, 12),149	/* Block mode */150	MDP_COLOR_420_BLK	= MDP_COLOR(0, 0, 0, 1, 2, 1, 1, 256, 1, 0, 12),151	/* Block mode + field mode */152	MDP_COLOR_420_BLKI	= MDP_COLOR(0, 0, 0, 3, 2, 1, 1, 256, 1, 0, 12),153	/* Block mode */154	MDP_COLOR_422_BLK	= MDP_COLOR(0, 0, 0, 1, 1, 1, 0, 512, 1, 0, 4),155 156	MDP_COLOR_IYU2		= MDP_COLOR(0, 0, 0, 0, 1, 0, 0, 24,  1, 0, 25),157	MDP_COLOR_YUV444	= MDP_COLOR(0, 0, 0, 0, 1, 0, 0, 24,  1, 0, 30),158 159	/* Packed 10-bit formats */160	MDP_COLOR_RGBA1010102	= MDP_COLOR(0, 1, 0, 0, 1, 0, 0, 32,  0, 1, 2),161	MDP_COLOR_BGRA1010102	= MDP_COLOR(0, 1, 0, 0, 1, 0, 0, 32,  0, 0, 2),162	/* Packed 10-bit UYVY */163	MDP_COLOR_UYVY_10P	= MDP_COLOR(0, 1, 0, 0, 1, 1, 0, 20,  1, 0, 4),164	/* Packed 10-bit NV21 */165	MDP_COLOR_NV21_10P	= MDP_COLOR(0, 1, 0, 0, 2, 1, 1, 10,  1, 1, 12),166	/* 10-bit block mode */167	MDP_COLOR_420_BLK_10_H	= MDP_COLOR(0, 1, 0, 1, 2, 1, 1, 320, 1, 0, 12),168	/* 10-bit HEVC tile mode */169	MDP_COLOR_420_BLK_10_V	= MDP_COLOR(0, 1, 1, 1, 2, 1, 1, 320, 1, 0, 12),170	/* UFO encoded 10-bit block mode */171	MDP_COLOR_420_BLK_U10_H	= MDP_COLOR(0, 1, 0, 5, 2, 1, 1, 320, 1, 0, 12),172	/* UFO encoded 10-bit HEVC tile mode */173	MDP_COLOR_420_BLK_U10_V	= MDP_COLOR(0, 1, 1, 5, 2, 1, 1, 320, 1, 0, 12),174 175	/* Loose 10-bit formats */176	MDP_COLOR_UYVY_10L	= MDP_COLOR(0, 0, 1, 0, 1, 1, 0, 20,  1, 0, 4),177	MDP_COLOR_VYUY_10L	= MDP_COLOR(0, 0, 1, 0, 1, 1, 0, 20,  1, 1, 4),178	MDP_COLOR_YUYV_10L	= MDP_COLOR(0, 0, 1, 0, 1, 1, 0, 20,  1, 0, 5),179	MDP_COLOR_YVYU_10L	= MDP_COLOR(0, 0, 1, 0, 1, 1, 0, 20,  1, 1, 5),180	MDP_COLOR_NV12_10L	= MDP_COLOR(0, 0, 1, 0, 2, 1, 1, 10,  1, 0, 12),181	MDP_COLOR_NV21_10L	= MDP_COLOR(0, 0, 1, 0, 2, 1, 1, 10,  1, 1, 12),182	MDP_COLOR_NV16_10L	= MDP_COLOR(0, 0, 1, 0, 2, 1, 0, 10,  1, 0, 13),183	MDP_COLOR_NV61_10L	= MDP_COLOR(0, 0, 1, 0, 2, 1, 0, 10,  1, 1, 13),184	MDP_COLOR_YV12_10L	= MDP_COLOR(0, 0, 1, 0, 3, 1, 1, 10,  1, 1, 8),185	MDP_COLOR_I420_10L	= MDP_COLOR(0, 0, 1, 0, 3, 1, 1, 10,  1, 0, 8),186};187 188static inline bool MDP_COLOR_IS_UV_COPLANE(enum mdp_color c)189{190	return (MDP_COLOR_GET_PLANE_COUNT(c) == 2 && MDP_COLOR_IS_YUV(c));191}192 193/* Minimum Y stride that is accepted by MDP HW */194static inline u32 mdp_color_get_min_y_stride(enum mdp_color c, u32 width)195{196	return ((MDP_COLOR_BITS_PER_PIXEL(c) * width) + 4) >> 3;197}198 199/* Minimum UV stride that is accepted by MDP HW */200static inline u32 mdp_color_get_min_uv_stride(enum mdp_color c, u32 width)201{202	u32 min_stride;203 204	if (MDP_COLOR_GET_PLANE_COUNT(c) == 1)205		return 0;206	min_stride = mdp_color_get_min_y_stride(c, width)207		>> MDP_COLOR_GET_H_SUBSAMPLE(c);208	if (MDP_COLOR_IS_UV_COPLANE(c) && !MDP_COLOR_IS_BLOCK_MODE(c))209		min_stride = min_stride * 2;210	return min_stride;211}212 213/* Minimum Y plane size that is necessary in buffer */214static inline u32 mdp_color_get_min_y_size(enum mdp_color c,215					   u32 width, u32 height)216{217	if (MDP_COLOR_IS_BLOCK_MODE(c))218		return ((MDP_COLOR_BITS_PER_PIXEL(c) * width) >> 8) * height;219	return mdp_color_get_min_y_stride(c, width) * height;220}221 222/* Minimum UV plane size that is necessary in buffer */223static inline u32 mdp_color_get_min_uv_size(enum mdp_color c,224					    u32 width, u32 height)225{226	height = height >> MDP_COLOR_GET_V_SUBSAMPLE(c);227	if (MDP_COLOR_IS_BLOCK_MODE(c) && (MDP_COLOR_GET_PLANE_COUNT(c) > 1))228		return ((MDP_COLOR_BITS_PER_PIXEL(c) * width) >> 8) * height;229	return mdp_color_get_min_uv_stride(c, width) * height;230}231 232/* Combine colorspace, xfer_func, ycbcr_encoding, and quantization */233enum mdp_ycbcr_profile {234	/* V4L2_YCBCR_ENC_601 and V4L2_QUANTIZATION_LIM_RANGE */235	MDP_YCBCR_PROFILE_BT601,236	/* V4L2_YCBCR_ENC_709 and V4L2_QUANTIZATION_LIM_RANGE */237	MDP_YCBCR_PROFILE_BT709,238	/* V4L2_YCBCR_ENC_601 and V4L2_QUANTIZATION_FULL_RANGE */239	MDP_YCBCR_PROFILE_JPEG,240	MDP_YCBCR_PROFILE_FULL_BT601 = MDP_YCBCR_PROFILE_JPEG,241 242	/* Colorspaces not support for capture */243	/* V4L2_YCBCR_ENC_BT2020 and V4L2_QUANTIZATION_LIM_RANGE */244	MDP_YCBCR_PROFILE_BT2020,245	/* V4L2_YCBCR_ENC_709 and V4L2_QUANTIZATION_FULL_RANGE */246	MDP_YCBCR_PROFILE_FULL_BT709,247	/* V4L2_YCBCR_ENC_BT2020 and V4L2_QUANTIZATION_FULL_RANGE */248	MDP_YCBCR_PROFILE_FULL_BT2020,249};250 251#define MDP_FMT_FLAG_OUTPUT	BIT(0)252#define MDP_FMT_FLAG_CAPTURE	BIT(1)253 254struct mdp_format {255	u32	pixelformat;256	u32	mdp_color;257	u8	depth[VIDEO_MAX_PLANES];258	u8	row_depth[VIDEO_MAX_PLANES];259	u8	num_planes;260	u8	walign;261	u8	halign;262	u8	salign;263	u32	flags;264};265 266struct mdp_pix_limit {267	u32	wmin;268	u32	hmin;269	u32	wmax;270	u32	hmax;271};272 273struct mdp_limit {274	struct mdp_pix_limit	out_limit;275	struct mdp_pix_limit	cap_limit;276	u32			h_scale_up_max;277	u32			v_scale_up_max;278	u32			h_scale_down_max;279	u32			v_scale_down_max;280};281 282enum mdp_stream_type {283	MDP_STREAM_TYPE_UNKNOWN,284	MDP_STREAM_TYPE_BITBLT,285	MDP_STREAM_TYPE_GPU_BITBLT,286	MDP_STREAM_TYPE_DUAL_BITBLT,287	MDP_STREAM_TYPE_2ND_BITBLT,288	MDP_STREAM_TYPE_ISP_IC,289	MDP_STREAM_TYPE_ISP_VR,290	MDP_STREAM_TYPE_ISP_ZSD,291	MDP_STREAM_TYPE_ISP_IP,292	MDP_STREAM_TYPE_ISP_VSS,293	MDP_STREAM_TYPE_ISP_ZSD_SLOW,294	MDP_STREAM_TYPE_WPE,295	MDP_STREAM_TYPE_WPE2,296};297 298struct mdp_crop {299	struct v4l2_rect	c;300	struct v4l2_fract	left_subpix;301	struct v4l2_fract	top_subpix;302	struct v4l2_fract	width_subpix;303	struct v4l2_fract	height_subpix;304};305 306struct mdp_frame {307	struct v4l2_format	format;308	const struct mdp_format	*mdp_fmt;309	u32			ycbcr_prof;	/* enum mdp_ycbcr_profile */310	u32			usage;		/* enum mdp_buffer_usage */311	struct mdp_crop		crop;312	struct v4l2_rect	compose;313	s32			rotation;314	u32			hflip:1;315	u32			vflip:1;316	u32			hdr:1;317	u32			dre:1;318	u32			sharpness:1;319	u32			dither:1;320};321 322static inline bool mdp_target_is_crop(u32 target)323{324	return (target == V4L2_SEL_TGT_CROP) ||325		(target == V4L2_SEL_TGT_CROP_DEFAULT) ||326		(target == V4L2_SEL_TGT_CROP_BOUNDS);327}328 329static inline bool mdp_target_is_compose(u32 target)330{331	return (target == V4L2_SEL_TGT_COMPOSE) ||332		(target == V4L2_SEL_TGT_COMPOSE_DEFAULT) ||333		(target == V4L2_SEL_TGT_COMPOSE_BOUNDS);334}335 336#define MDP_MAX_CAPTURES	IMG_MAX_HW_OUTPUTS337 338#define MDP_VPU_INIT		BIT(0)339#define MDP_M2M_CTX_ERROR	BIT(1)340 341struct mdp_frameparam {342	struct list_head	list;343	struct mdp_m2m_ctx	*ctx;344	atomic_t		state;345	const struct mdp_limit	*limit;346	u32			type;	/* enum mdp_stream_type */347	u32			frame_no;348	struct mdp_frame	output;349	struct mdp_frame	captures[MDP_MAX_CAPTURES];350	u32			num_captures;351	enum v4l2_colorspace		colorspace;352	enum v4l2_ycbcr_encoding	ycbcr_enc;353	enum v4l2_xfer_func		xfer_func;354	enum v4l2_quantization		quant;355};356 357struct mdp_dev;358 359int mdp_enum_fmt_mplane(struct mdp_dev *mdp, struct v4l2_fmtdesc *f);360const struct mdp_format *mdp_try_fmt_mplane(struct mdp_dev *mdp,361					    struct v4l2_format *f,362					    struct mdp_frameparam *param,363					    u32 ctx_id);364enum mdp_ycbcr_profile mdp_map_ycbcr_prof_mplane(struct v4l2_format *f,365						 u32 mdp_color);366int mdp_try_crop(struct mdp_m2m_ctx *ctx, struct v4l2_rect *r,367		 const struct v4l2_selection *s, struct mdp_frame *frame);368int mdp_check_scaling_ratio(const struct v4l2_rect *crop,369			    const struct v4l2_rect *compose, s32 rotation,370	const struct mdp_limit *limit);371bool mdp_check_pp_enable(struct mdp_dev *mdp, struct mdp_frame *frame);372void mdp_set_src_config(struct img_input *in,373			struct mdp_frame *frame, struct vb2_buffer *vb);374void mdp_set_dst_config(struct img_output *out,375			struct mdp_frame *frame, struct vb2_buffer *vb);376int mdp_frameparam_init(struct mdp_dev *mdp, struct mdp_frameparam *param);377 378#endif  /* __MTK_MDP3_REGS_H__ */379