diff options
| -rw-r--r-- | drivers/media/platform/msm/sde/rotator/sde_rotator_core.c | 9 | ||||
| -rw-r--r-- | drivers/media/platform/msm/sde/rotator/sde_rotator_core.h | 22 | ||||
| -rw-r--r-- | drivers/media/platform/msm/sde/rotator/sde_rotator_dev.c | 302 | ||||
| -rw-r--r-- | drivers/media/platform/msm/sde/rotator/sde_rotator_formats.c | 278 | ||||
| -rw-r--r-- | drivers/media/platform/msm/sde/rotator/sde_rotator_formats.h | 11 | ||||
| -rw-r--r-- | drivers/media/platform/msm/sde/rotator/sde_rotator_r1.c | 142 | ||||
| -rw-r--r-- | drivers/media/platform/msm/sde/rotator/sde_rotator_r3.c | 168 | ||||
| -rw-r--r-- | drivers/media/v4l2-core/v4l2-ioctl.c | 74 | ||||
| -rw-r--r-- | include/uapi/linux/videodev2.h | 73 | ||||
| -rw-r--r-- | include/uapi/media/msm_sde_rotator.h | 71 |
10 files changed, 690 insertions, 460 deletions
diff --git a/drivers/media/platform/msm/sde/rotator/sde_rotator_core.c b/drivers/media/platform/msm/sde/rotator/sde_rotator_core.c index f5799c7f86fd..e3e71936b8e4 100644 --- a/drivers/media/platform/msm/sde/rotator/sde_rotator_core.c +++ b/drivers/media/platform/msm/sde/rotator/sde_rotator_core.c @@ -1273,8 +1273,13 @@ static bool sde_rotator_verify_format(struct sde_rot_mgr *mgr, u8 in_v_subsample, in_h_subsample; u8 out_v_subsample, out_h_subsample; - if (!sde_mdp_is_wb_format(out_fmt)) { - SDEROT_DBG("Invalid output format\n"); + if (!sde_rotator_is_valid_pixfmt(mgr, in_fmt->format, true)) { + SDEROT_DBG("Invalid input format %x\n", in_fmt->format); + return false; + } + + if (!sde_rotator_is_valid_pixfmt(mgr, out_fmt->format, false)) { + SDEROT_DBG("Invalid output format %x\n", out_fmt->format); return false; } diff --git a/drivers/media/platform/msm/sde/rotator/sde_rotator_core.h b/drivers/media/platform/msm/sde/rotator/sde_rotator_core.h index 7319bbda61b8..8659d361be07 100644 --- a/drivers/media/platform/msm/sde/rotator/sde_rotator_core.h +++ b/drivers/media/platform/msm/sde/rotator/sde_rotator_core.h @@ -302,10 +302,32 @@ struct sde_rot_mgr { struct dentry *debugfs_root); int (*ops_hw_validate_entry)(struct sde_rot_mgr *mgr, struct sde_rot_entry *entry); + u32 (*ops_hw_get_pixfmt)(struct sde_rot_mgr *mgr, int index, + bool input); + int (*ops_hw_is_valid_pixfmt)(struct sde_rot_mgr *mgr, u32 pixfmt, + bool input); void *hw_data; }; +static inline int sde_rotator_is_valid_pixfmt(struct sde_rot_mgr *mgr, + u32 pixfmt, bool input) +{ + if (mgr && mgr->ops_hw_is_valid_pixfmt) + return mgr->ops_hw_is_valid_pixfmt(mgr, pixfmt, input); + + return false; +} + +static inline u32 sde_rotator_get_pixfmt(struct sde_rot_mgr *mgr, + int index, bool input) +{ + if (mgr && mgr->ops_hw_get_pixfmt) + return mgr->ops_hw_get_pixfmt(mgr, index, input); + + return 0; +} + static inline int __compare_session_item_rect( struct sde_rotation_buf_info *s_rect, struct sde_rect *i_rect, uint32_t i_fmt, bool src) diff --git a/drivers/media/platform/msm/sde/rotator/sde_rotator_dev.c b/drivers/media/platform/msm/sde/rotator/sde_rotator_dev.c index 140d33582c87..d34623a531ba 100644 --- a/drivers/media/platform/msm/sde/rotator/sde_rotator_dev.c +++ b/drivers/media/platform/msm/sde/rotator/sde_rotator_dev.c @@ -52,244 +52,6 @@ #define SDE_ROTATOR_DEGREE_270 270 #define SDE_ROTATOR_DEGREE_180 180 #define SDE_ROTATOR_DEGREE_90 90 -/* - * Format description/mapping - * @pixelformat: external format defined in msm_sde_rotator header. - * - * Note RGBA/8888 naming convention follows internal convention and - * is reverse of standard V4L2 convention. Description containing - * prefix 'SDE/' refers to SDE specific conventions and/or features. - */ -static const struct v4l2_fmtdesc fmtdesc[] = { - { - .description = "SDE/XRGB_8888", - .pixelformat = SDE_PIX_FMT_XRGB_8888, - }, - { - .description = "SDE/ARGB_8888", - .pixelformat = SDE_PIX_FMT_ARGB_8888, - }, - { - .description = "SDE/ABGR_8888", - .pixelformat = SDE_PIX_FMT_ABGR_8888, - }, - { - .description = "SDE/RGBA_8888", - .pixelformat = SDE_PIX_FMT_RGBA_8888, - }, - { - .description = "SDE/BGRA_8888", - .pixelformat = SDE_PIX_FMT_BGRA_8888, - }, - { - .description = "SDE/RGBX_8888", - .pixelformat = SDE_PIX_FMT_RGBX_8888, - }, - { - .description = "SDE/BGRX_8888", - .pixelformat = SDE_PIX_FMT_BGRX_8888, - }, - { - .description = "SDE/XBGR_8888", - .pixelformat = SDE_PIX_FMT_XBGR_8888, - }, - { - .description = "RGBA_5551", - .pixelformat = SDE_PIX_FMT_RGBA_5551, - }, - { - .description = "ARGB_1555", - .pixelformat = SDE_PIX_FMT_ARGB_1555, - }, - { - .description = "ABGR_1555", - .pixelformat = SDE_PIX_FMT_ABGR_1555, - }, - { - .description = "BGRA_5551", - .pixelformat = SDE_PIX_FMT_BGRA_5551, - }, - { - .description = "BGRX_5551", - .pixelformat = SDE_PIX_FMT_BGRX_5551, - }, - { - .description = "RGBX_5551", - .pixelformat = SDE_PIX_FMT_RGBX_5551, - }, - { - .description = "XBGR_1555", - .pixelformat = SDE_PIX_FMT_XBGR_1555, - }, - { - .description = "XRGB_1555", - .pixelformat = SDE_PIX_FMT_XRGB_1555, - }, - { - .description = "ARGB_4444", - .pixelformat = SDE_PIX_FMT_ARGB_4444, - }, - { - .description = "RGBA_4444", - .pixelformat = SDE_PIX_FMT_RGBA_4444, - }, - { - .description = "BGRA_4444", - .pixelformat = SDE_PIX_FMT_BGRA_4444, - }, - { - .description = "ABGR_4444", - .pixelformat = SDE_PIX_FMT_ABGR_4444, - }, - { - .description = "RGBX_4444", - .pixelformat = SDE_PIX_FMT_RGBX_4444, - }, - { - .description = "XRGB_4444", - .pixelformat = SDE_PIX_FMT_XRGB_4444, - }, - { - .description = "BGRX_4444", - .pixelformat = SDE_PIX_FMT_BGRX_4444, - }, - { - .description = "XBGR_4444", - .pixelformat = SDE_PIX_FMT_XBGR_4444, - }, - { - .description = "RGB_888", - .pixelformat = SDE_PIX_FMT_RGB_888, - }, - { - .description = "BGR_888", - .pixelformat = SDE_PIX_FMT_BGR_888, - }, - { - .description = "RGB_565", - .pixelformat = SDE_PIX_FMT_RGB_565, - }, - { - .description = "BGR_565", - .pixelformat = SDE_PIX_FMT_BGR_565, - }, - { - .description = "Y_CB_CR_H2V2", - .pixelformat = SDE_PIX_FMT_Y_CB_CR_H2V2, - }, - { - .description = "Y_CR_CB_H2V2", - .pixelformat = SDE_PIX_FMT_Y_CR_CB_H2V2, - }, - { - .description = "SDE/Y_CR_CB_GH2V2", - .pixelformat = SDE_PIX_FMT_Y_CR_CB_GH2V2, - }, - { - .description = "Y_CBCR_H2V2", - .pixelformat = SDE_PIX_FMT_Y_CBCR_H2V2, - }, - { - .description = "Y_CRCB_H2V2", - .pixelformat = SDE_PIX_FMT_Y_CRCB_H2V2, - }, - { - .description = "Y_CBCR_H1V2", - .pixelformat = SDE_PIX_FMT_Y_CBCR_H1V2, - }, - { - .description = "Y_CRCB_H1V2", - .pixelformat = SDE_PIX_FMT_Y_CRCB_H1V2, - }, - { - .description = "Y_CBCR_H2V1", - .pixelformat = SDE_PIX_FMT_Y_CBCR_H2V1, - }, - { - .description = "Y_CRCB_H2V1", - .pixelformat = SDE_PIX_FMT_Y_CRCB_H2V1, - }, - { - .description = "YCBYCR_H2V1", - .pixelformat = SDE_PIX_FMT_YCBYCR_H2V1, - }, - { - .description = "SDE/Y_CBCR_H2V2_VENUS", - .pixelformat = SDE_PIX_FMT_Y_CBCR_H2V2_VENUS, - }, - { - .description = "SDE/Y_CRCB_H2V2_VENUS", - .pixelformat = SDE_PIX_FMT_Y_CRCB_H2V2_VENUS, - }, - { - .description = "SDE/RGBA_8888_UBWC", - .pixelformat = SDE_PIX_FMT_RGBA_8888_UBWC, - }, - { - .description = "SDE/RGBX_8888_UBWC", - .pixelformat = SDE_PIX_FMT_RGBX_8888_UBWC, - }, - { - .description = "SDE/RGB_565_UBWC", - .pixelformat = SDE_PIX_FMT_RGB_565_UBWC, - }, - { - .description = "SDE/Y_CBCR_H2V2_UBWC", - .pixelformat = SDE_PIX_FMT_Y_CBCR_H2V2_UBWC, - }, - { - .description = "SDE/RGBA_1010102", - .pixelformat = SDE_PIX_FMT_RGBA_1010102, - }, - { - .description = "SDE/RGBX_1010102", - .pixelformat = SDE_PIX_FMT_RGBX_1010102, - }, - { - .description = "SDE/ARGB_2101010", - .pixelformat = SDE_PIX_FMT_ARGB_2101010, - }, - { - .description = "SDE/XRGB_2101010", - .pixelformat = SDE_PIX_FMT_XRGB_2101010, - }, - { - .description = "SDE/BGRA_1010102", - .pixelformat = SDE_PIX_FMT_BGRA_1010102, - }, - { - .description = "SDE/BGRX_1010102", - .pixelformat = SDE_PIX_FMT_BGRX_1010102, - }, - { - .description = "SDE/ABGR_2101010", - .pixelformat = SDE_PIX_FMT_ABGR_2101010, - }, - { - .description = "SDE/XBGR_2101010", - .pixelformat = SDE_PIX_FMT_XBGR_2101010, - }, - { - .description = "SDE/RGBA_1010102_UBWC", - .pixelformat = SDE_PIX_FMT_RGBA_1010102_UBWC, - }, - { - .description = "SDE/RGBX_1010102_UBWC", - .pixelformat = SDE_PIX_FMT_RGBX_1010102_UBWC, - }, - { - .description = "SDE/Y_CBCR_H2V2_P010", - .pixelformat = SDE_PIX_FMT_Y_CBCR_H2V2_P010, - }, - { - .description = "SDE/Y_CBCR_H2V2_TP10", - .pixelformat = SDE_PIX_FMT_Y_CBCR_H2V2_TP10, - }, - { - .description = "SDE/Y_CBCR_H2V2_TP10_UBWC", - .pixelformat = SDE_PIX_FMT_Y_CBCR_H2V2_TP10_UBWC, - }, -}; static void sde_rotator_submit_handler(struct work_struct *work); static void sde_rotator_retire_handler(struct work_struct *work); @@ -309,26 +71,6 @@ static inline struct sde_rotator_ctx *sde_rotator_ctx_from_fh( } /* - * sde_rotator_get_format_idx - Get rotator format lookup index. - * @ctx: Pointer to rotator ctx. - * @f: v4l2 format. - */ -static int sde_rotator_get_format_idx(struct sde_rotator_ctx *ctx, - struct v4l2_format *f) -{ - int i; - - for (i = 0; i < ARRAY_SIZE(fmtdesc); i++) - if (fmtdesc[i].pixelformat == f->fmt.pix.pixelformat) - break; - - if (i == ARRAY_SIZE(fmtdesc)) - return -EINVAL; - - return i; -} - -/* * sde_rotator_get_flags_from_ctx - Get low-level command flag * @ctx: Pointer to rotator context. */ @@ -1302,12 +1044,21 @@ static int sde_rotator_querycap(struct file *file, static int sde_rotator_enum_fmt_vid_cap(struct file *file, void *fh, struct v4l2_fmtdesc *f) { - if (f->index >= ARRAY_SIZE(fmtdesc)) + struct sde_rotator_ctx *ctx = sde_rotator_ctx_from_fh(fh); + struct sde_rotator_device *rot_dev = ctx->rot_dev; + struct sde_mdp_format_params *fmt; + u32 pixfmt; + + pixfmt = sde_rotator_get_pixfmt(rot_dev->mgr, f->index, false); + if (!pixfmt) + return -EINVAL; + + fmt = sde_get_format_params(pixfmt); + if (!fmt) return -EINVAL; - f->pixelformat = fmtdesc[f->index].pixelformat; - strlcpy(f->description, fmtdesc[f->index].description, - sizeof(f->description)); + f->pixelformat = pixfmt; + strlcpy(f->description, fmt->description, sizeof(f->description)); return 0; } @@ -1321,12 +1072,21 @@ static int sde_rotator_enum_fmt_vid_cap(struct file *file, static int sde_rotator_enum_fmt_vid_out(struct file *file, void *fh, struct v4l2_fmtdesc *f) { - if (f->index >= ARRAY_SIZE(fmtdesc)) + struct sde_rotator_ctx *ctx = sde_rotator_ctx_from_fh(fh); + struct sde_rotator_device *rot_dev = ctx->rot_dev; + struct sde_mdp_format_params *fmt; + u32 pixfmt; + + pixfmt = sde_rotator_get_pixfmt(rot_dev->mgr, f->index, true); + if (!pixfmt) + return -EINVAL; + + fmt = sde_get_format_params(pixfmt); + if (!fmt) return -EINVAL; - f->pixelformat = fmtdesc[f->index].pixelformat; - strlcpy(f->description, fmtdesc[f->index].description, - sizeof(f->description)); + f->pixelformat = pixfmt; + strlcpy(f->description, fmt->description, sizeof(f->description)); return 0; } @@ -1375,13 +1135,8 @@ static int sde_rotator_try_fmt_vid_cap(struct file *file, struct sde_rotator_ctx *ctx = sde_rotator_ctx_from_fh(fh); struct sde_rotator_device *rot_dev = ctx->rot_dev; struct sde_rotation_config config; - int fmt_idx; int ret; - fmt_idx = sde_rotator_get_format_idx(ctx, f); - if (fmt_idx < 0) - return -EINVAL; - sde_rot_mgr_lock(rot_dev->mgr); sde_rotator_get_config_from_ctx(ctx, &config); config.output.format = f->fmt.pix.pixelformat; @@ -1419,13 +1174,8 @@ static int sde_rotator_try_fmt_vid_out(struct file *file, struct sde_rotator_ctx *ctx = sde_rotator_ctx_from_fh(fh); struct sde_rotator_device *rot_dev = ctx->rot_dev; struct sde_rotation_config config; - int fmt_idx; int ret; - fmt_idx = sde_rotator_get_format_idx(ctx, f); - if (fmt_idx < 0) - return -EINVAL; - sde_rot_mgr_lock(rot_dev->mgr); sde_rotator_get_config_from_ctx(ctx, &config); config.input.format = f->fmt.pix.pixelformat; diff --git a/drivers/media/platform/msm/sde/rotator/sde_rotator_formats.c b/drivers/media/platform/msm/sde/rotator/sde_rotator_formats.c index 5318c9da1277..3b36b6bc76de 100644 --- a/drivers/media/platform/msm/sde/rotator/sde_rotator_formats.c +++ b/drivers/media/platform/msm/sde/rotator/sde_rotator_formats.c @@ -16,9 +16,10 @@ #include "sde_rotator_formats.h" #include "sde_rotator_util.h" -#define FMT_RGB_565(fmt, frame_fmt, flag_arg, e0, e1, e2, isubwc) \ +#define FMT_RGB_565(fmt, desc, frame_fmt, flag_arg, e0, e1, e2, isubwc) \ { \ .format = (fmt), \ + .description = (desc), \ .flag = flag_arg, \ .fetch_planes = SDE_MDP_PLANE_INTERLEAVED, \ .unpack_tight = 1, \ @@ -37,9 +38,10 @@ .is_ubwc = isubwc, \ } -#define FMT_RGB_888(fmt, frame_fmt, flag_arg, e0, e1, e2, isubwc) \ +#define FMT_RGB_888(fmt, desc, frame_fmt, flag_arg, e0, e1, e2, isubwc) \ { \ .format = (fmt), \ + .description = (desc), \ .flag = flag_arg, \ .fetch_planes = SDE_MDP_PLANE_INTERLEAVED, \ .unpack_tight = 1, \ @@ -58,10 +60,11 @@ .is_ubwc = isubwc, \ } -#define FMT_RGB_8888(fmt, frame_fmt, flag_arg, \ +#define FMT_RGB_8888(fmt, desc, frame_fmt, flag_arg, \ alpha_en, e0, e1, e2, e3, isubwc) \ { \ .format = (fmt), \ + .description = (desc), \ .flag = flag_arg, \ .fetch_planes = SDE_MDP_PLANE_INTERLEAVED, \ .unpack_tight = 1, \ @@ -93,10 +96,11 @@ .unpack_tight = 1, \ .unpack_align_msb = 0 -#define FMT_YUV_PSEUDO(fmt, frame_fmt, samp, pixel_type, \ +#define FMT_YUV_PSEUDO(fmt, desc, frame_fmt, samp, pixel_type, \ flag_arg, e0, e1, isubwc) \ { \ FMT_YUV_COMMON(fmt), \ + .description = (desc), \ .flag = flag_arg, \ .fetch_planes = SDE_MDP_PLANE_PSEUDO_PLANAR, \ .chroma_sample = samp, \ @@ -108,10 +112,11 @@ .is_ubwc = isubwc, \ } -#define FMT_YUV_PLANR(fmt, frame_fmt, samp, \ +#define FMT_YUV_PLANR(fmt, desc, frame_fmt, samp, \ flag_arg, e0, e1) \ { \ FMT_YUV_COMMON(fmt), \ + .description = (desc), \ .flag = flag_arg, \ .fetch_planes = SDE_MDP_PLANE_PLANAR, \ .chroma_sample = samp, \ @@ -123,9 +128,10 @@ .is_ubwc = SDE_MDP_COMPRESS_NONE, \ } -#define FMT_RGB_1555(fmt, alpha_en, flag_arg, e0, e1, e2, e3) \ +#define FMT_RGB_1555(fmt, desc, alpha_en, flag_arg, e0, e1, e2, e3) \ { \ .format = (fmt), \ + .description = (desc), \ .flag = flag_arg, \ .fetch_planes = SDE_MDP_PLANE_INTERLEAVED, \ .unpack_tight = 1, \ @@ -145,9 +151,10 @@ .is_ubwc = SDE_MDP_COMPRESS_NONE, \ } -#define FMT_RGB_4444(fmt, alpha_en, flag_arg, e0, e1, e2, e3) \ +#define FMT_RGB_4444(fmt, desc, alpha_en, flag_arg, e0, e1, e2, e3) \ { \ .format = (fmt), \ + .description = (desc), \ .flag = flag_arg, \ .fetch_planes = SDE_MDP_PLANE_INTERLEAVED, \ .unpack_tight = 1, \ @@ -167,10 +174,11 @@ .is_ubwc = SDE_MDP_COMPRESS_NONE, \ } -#define FMT_RGB_1010102(fmt, frame_fmt, flag_arg, \ +#define FMT_RGB_1010102(fmt, desc, frame_fmt, flag_arg, \ alpha_en, e0, e1, e2, e3, isubwc) \ { \ .format = (fmt), \ + .description = (desc), \ .flag = flag_arg, \ .fetch_planes = SDE_MDP_PLANE_INTERLEAVED, \ .unpack_tight = 1, \ @@ -190,7 +198,6 @@ .is_ubwc = isubwc, \ } -#define VALID_ROT_WB_ALL (VALID_ROT_WB_FORMAT | VALID_ROT_R3_WB_FORMAT) /* * UBWC formats table: * This table holds the UBWC formats supported. @@ -200,7 +207,8 @@ static struct sde_mdp_format_params_ubwc sde_mdp_format_ubwc_map[] = { { .mdp_format = FMT_RGB_565(SDE_PIX_FMT_RGB_565_UBWC, - SDE_MDP_FMT_TILE_A5X, VALID_ROT_WB_ALL, + "SDE/RGB_565_UBWC", + SDE_MDP_FMT_TILE_A5X, 0, C2_R_Cr, C0_G_Y, C1_B_Cb, SDE_MDP_COMPRESS_UBWC), .micro = { .tile_height = 4, @@ -209,7 +217,8 @@ static struct sde_mdp_format_params_ubwc sde_mdp_format_ubwc_map[] = { }, { .mdp_format = FMT_RGB_8888(SDE_PIX_FMT_RGBA_8888_UBWC, - SDE_MDP_FMT_TILE_A5X, VALID_ROT_WB_ALL, 1, + "SDE/RGBA_8888_UBWC", + SDE_MDP_FMT_TILE_A5X, 0, 1, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, SDE_MDP_COMPRESS_UBWC), .micro = { @@ -219,7 +228,8 @@ static struct sde_mdp_format_params_ubwc sde_mdp_format_ubwc_map[] = { }, { .mdp_format = FMT_RGB_8888(SDE_PIX_FMT_RGBX_8888_UBWC, - SDE_MDP_FMT_TILE_A5X, VALID_ROT_WB_ALL, 0, + "SDE/RGBX_8888_UBWC", + SDE_MDP_FMT_TILE_A5X, 0, 0, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, SDE_MDP_COMPRESS_UBWC), .micro = { @@ -229,9 +239,10 @@ static struct sde_mdp_format_params_ubwc sde_mdp_format_ubwc_map[] = { }, { .mdp_format = FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CBCR_H2V2_UBWC, + "SDE/Y_CBCR_H2V2_UBWC", SDE_MDP_FMT_TILE_A5X, SDE_MDP_CHROMA_420, SDE_MDP_PIXEL_NORMAL, - VALID_ROT_WB_ALL, C1_B_Cb, C2_R_Cr, + 0, C1_B_Cb, C2_R_Cr, SDE_MDP_COMPRESS_UBWC), .micro = { .tile_height = 8, @@ -240,7 +251,8 @@ static struct sde_mdp_format_params_ubwc sde_mdp_format_ubwc_map[] = { }, { .mdp_format = FMT_RGB_1010102(SDE_PIX_FMT_RGBA_1010102_UBWC, - SDE_MDP_FMT_TILE_A5X, VALID_ROT_R3_WB_FORMAT, 1, + "SDE/RGBA_1010102_UBWC", + SDE_MDP_FMT_TILE_A5X, 0, 1, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, SDE_MDP_COMPRESS_UBWC), .micro = { @@ -250,7 +262,8 @@ static struct sde_mdp_format_params_ubwc sde_mdp_format_ubwc_map[] = { }, { .mdp_format = FMT_RGB_1010102(SDE_PIX_FMT_RGBX_1010102_UBWC, - SDE_MDP_FMT_TILE_A5X, VALID_ROT_R3_WB_FORMAT, 0, + "SDE/RGBX_1010102_UBWC", + SDE_MDP_FMT_TILE_A5X, 0, 0, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, SDE_MDP_COMPRESS_UBWC), .micro = { @@ -260,9 +273,10 @@ static struct sde_mdp_format_params_ubwc sde_mdp_format_ubwc_map[] = { }, { .mdp_format = FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CBCR_H2V2_TP10_UBWC, + "SDE/Y_CBCR_H2V2_TP10_UBWC", SDE_MDP_FMT_TILE_A5X, SDE_MDP_CHROMA_420, SDE_MDP_PIXEL_10BIT, - VALID_ROT_R3_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, + 0, C1_B_Cb, C2_R_Cr, SDE_MDP_COMPRESS_UBWC), .micro = { .tile_height = 4, @@ -273,88 +287,89 @@ static struct sde_mdp_format_params_ubwc sde_mdp_format_ubwc_map[] = { static struct sde_mdp_format_params sde_mdp_format_map[] = { FMT_RGB_565( - SDE_PIX_FMT_RGB_565, SDE_MDP_FMT_LINEAR, VALID_ROT_WB_ALL | - VALID_MDP_WB_INTF_FORMAT, C1_B_Cb, C0_G_Y, C2_R_Cr, - SDE_MDP_COMPRESS_NONE), + SDE_PIX_FMT_RGB_565, "RGB_565", SDE_MDP_FMT_LINEAR, + 0, C1_B_Cb, C0_G_Y, C2_R_Cr, SDE_MDP_COMPRESS_NONE), FMT_RGB_565( - SDE_PIX_FMT_BGR_565, SDE_MDP_FMT_LINEAR, VALID_ROT_WB_ALL | - VALID_MDP_WB_INTF_FORMAT, C2_R_Cr, C0_G_Y, C1_B_Cb, - SDE_MDP_COMPRESS_NONE), + SDE_PIX_FMT_BGR_565, "BGR_565", SDE_MDP_FMT_LINEAR, + 0, C2_R_Cr, C0_G_Y, C1_B_Cb, SDE_MDP_COMPRESS_NONE), FMT_RGB_888( - SDE_PIX_FMT_RGB_888, SDE_MDP_FMT_LINEAR, VALID_ROT_WB_ALL | - VALID_MDP_WB_INTF_FORMAT, C2_R_Cr, C0_G_Y, C1_B_Cb, - SDE_MDP_COMPRESS_NONE), + SDE_PIX_FMT_RGB_888, "RGB_888", SDE_MDP_FMT_LINEAR, + 0, C2_R_Cr, C0_G_Y, C1_B_Cb, SDE_MDP_COMPRESS_NONE), FMT_RGB_888( - SDE_PIX_FMT_BGR_888, SDE_MDP_FMT_LINEAR, VALID_ROT_WB_ALL | - VALID_MDP_WB_INTF_FORMAT, C1_B_Cb, C0_G_Y, C2_R_Cr, - SDE_MDP_COMPRESS_NONE), + SDE_PIX_FMT_BGR_888, "BGR_888", SDE_MDP_FMT_LINEAR, + 0, C1_B_Cb, C0_G_Y, C2_R_Cr, SDE_MDP_COMPRESS_NONE), FMT_RGB_8888( - SDE_PIX_FMT_ABGR_8888, SDE_MDP_FMT_LINEAR, - VALID_ROT_WB_ALL, 1, C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr, + SDE_PIX_FMT_ABGR_8888, "SDE/ABGR_8888", SDE_MDP_FMT_LINEAR, + 0, 1, C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr, SDE_MDP_COMPRESS_NONE), FMT_RGB_8888( - SDE_PIX_FMT_XRGB_8888, SDE_MDP_FMT_LINEAR, - VALID_ROT_WB_ALL | VALID_MDP_WB_INTF_FORMAT, - 0, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb, SDE_MDP_COMPRESS_NONE), + SDE_PIX_FMT_XRGB_8888, "SDE/XRGB_8888", SDE_MDP_FMT_LINEAR, + 0, 0, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb, + SDE_MDP_COMPRESS_NONE), FMT_RGB_8888( - SDE_PIX_FMT_ARGB_8888, SDE_MDP_FMT_LINEAR, - VALID_ROT_WB_ALL, 1, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb, + SDE_PIX_FMT_ARGB_8888, "SDE/ARGB_8888", SDE_MDP_FMT_LINEAR, + 0, 1, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb, SDE_MDP_COMPRESS_NONE), FMT_RGB_8888( - SDE_PIX_FMT_RGBA_8888, SDE_MDP_FMT_LINEAR, - VALID_ROT_WB_ALL, 1, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, + SDE_PIX_FMT_RGBA_8888, "SDE/RGBA_8888", SDE_MDP_FMT_LINEAR, + 0, 1, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, SDE_MDP_COMPRESS_NONE), FMT_RGB_8888( - SDE_PIX_FMT_RGBX_8888, SDE_MDP_FMT_LINEAR, - VALID_ROT_WB_ALL | VALID_MDP_WB_INTF_FORMAT, - 0, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, SDE_MDP_COMPRESS_NONE), + SDE_PIX_FMT_RGBX_8888, "SDE/RGBX_8888", SDE_MDP_FMT_LINEAR, + 0, 0, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, + SDE_MDP_COMPRESS_NONE), FMT_RGB_8888( - SDE_PIX_FMT_BGRA_8888, SDE_MDP_FMT_LINEAR, - VALID_ROT_WB_ALL, 1, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA, + SDE_PIX_FMT_BGRA_8888, "SDE/BGRA_8888", SDE_MDP_FMT_LINEAR, + 0, 1, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA, SDE_MDP_COMPRESS_NONE), FMT_RGB_8888( - SDE_PIX_FMT_BGRX_8888, SDE_MDP_FMT_LINEAR, - VALID_ROT_WB_ALL | VALID_MDP_WB_INTF_FORMAT, - 0, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA, SDE_MDP_COMPRESS_NONE), + SDE_PIX_FMT_BGRX_8888, "SDE/BGRX_8888", SDE_MDP_FMT_LINEAR, + 0, 0, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA, + SDE_MDP_COMPRESS_NONE), FMT_RGB_8888( - SDE_PIX_FMT_XBGR_8888, SDE_MDP_FMT_LINEAR, - VALID_ROT_WB_ALL | VALID_MDP_WB_INTF_FORMAT, - 0, C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr, SDE_MDP_COMPRESS_NONE), + SDE_PIX_FMT_XBGR_8888, "SDE/XBGR_8888", SDE_MDP_FMT_LINEAR, + 0, 0, C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr, + SDE_MDP_COMPRESS_NONE), - FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CRCB_H2V1, SDE_MDP_FMT_LINEAR, + FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CRCB_H2V1, "Y_CRCB_H2V1", + SDE_MDP_FMT_LINEAR, SDE_MDP_CHROMA_H2V1, SDE_MDP_PIXEL_NORMAL, - VALID_ROT_WB_ALL, C2_R_Cr, C1_B_Cb, SDE_MDP_COMPRESS_NONE), - FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CBCR_H2V1, SDE_MDP_FMT_LINEAR, + 0, C2_R_Cr, C1_B_Cb, SDE_MDP_COMPRESS_NONE), + FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CBCR_H2V1, "Y_CBCR_H2V1", + SDE_MDP_FMT_LINEAR, SDE_MDP_CHROMA_H2V1, SDE_MDP_PIXEL_NORMAL, - VALID_ROT_WB_ALL, C1_B_Cb, C2_R_Cr, SDE_MDP_COMPRESS_NONE), - FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CRCB_H1V2, SDE_MDP_FMT_LINEAR, + 0, C1_B_Cb, C2_R_Cr, SDE_MDP_COMPRESS_NONE), + FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CRCB_H1V2, "Y_CRCB_H1V2", + SDE_MDP_FMT_LINEAR, SDE_MDP_CHROMA_H1V2, SDE_MDP_PIXEL_NORMAL, - VALID_ROT_WB_ALL, C2_R_Cr, C1_B_Cb, SDE_MDP_COMPRESS_NONE), - FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CBCR_H1V2, SDE_MDP_FMT_LINEAR, + 0, C2_R_Cr, C1_B_Cb, SDE_MDP_COMPRESS_NONE), + FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CBCR_H1V2, "Y_CBCR_H1V2", + SDE_MDP_FMT_LINEAR, SDE_MDP_CHROMA_H1V2, SDE_MDP_PIXEL_NORMAL, - VALID_ROT_WB_ALL, C1_B_Cb, C2_R_Cr, SDE_MDP_COMPRESS_NONE), - FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CRCB_H2V2, SDE_MDP_FMT_LINEAR, + 0, C1_B_Cb, C2_R_Cr, SDE_MDP_COMPRESS_NONE), + FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CRCB_H2V2, "Y_CRCB_H2V2", + SDE_MDP_FMT_LINEAR, SDE_MDP_CHROMA_420, SDE_MDP_PIXEL_NORMAL, - VALID_ROT_WB_ALL | VALID_MDP_WB_INTF_FORMAT, - C2_R_Cr, C1_B_Cb, SDE_MDP_COMPRESS_NONE), - FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CBCR_H2V2, SDE_MDP_FMT_LINEAR, + 0, C2_R_Cr, C1_B_Cb, SDE_MDP_COMPRESS_NONE), + FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CBCR_H2V2, "Y_CBCR_H2V2", + SDE_MDP_FMT_LINEAR, SDE_MDP_CHROMA_420, SDE_MDP_PIXEL_NORMAL, - VALID_ROT_WB_ALL | VALID_MDP_WB_INTF_FORMAT, - C1_B_Cb, C2_R_Cr, SDE_MDP_COMPRESS_NONE), - FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CBCR_H2V2_VENUS, SDE_MDP_FMT_LINEAR, + 0, C1_B_Cb, C2_R_Cr, SDE_MDP_COMPRESS_NONE), + FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CBCR_H2V2_VENUS, "SDE/Y_CBCR_H2V2_VENUS", + SDE_MDP_FMT_LINEAR, SDE_MDP_CHROMA_420, SDE_MDP_PIXEL_NORMAL, - VALID_ROT_WB_ALL | VALID_MDP_WB_INTF_FORMAT, - C1_B_Cb, C2_R_Cr, SDE_MDP_COMPRESS_NONE), - FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CRCB_H2V2_VENUS, SDE_MDP_FMT_LINEAR, + 0, C1_B_Cb, C2_R_Cr, SDE_MDP_COMPRESS_NONE), + FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CRCB_H2V2_VENUS, "SDE/Y_CRCB_H2V2_VENUS", + SDE_MDP_FMT_LINEAR, SDE_MDP_CHROMA_420, SDE_MDP_PIXEL_NORMAL, - VALID_ROT_WB_ALL | VALID_MDP_WB_INTF_FORMAT, - C2_R_Cr, C1_B_Cb, SDE_MDP_COMPRESS_NONE), + 0, C2_R_Cr, C1_B_Cb, SDE_MDP_COMPRESS_NONE), { FMT_YUV_COMMON(SDE_PIX_FMT_Y_CBCR_H2V2_P010), - .flag = VALID_ROT_R3_WB_FORMAT, + .description = "SDE/Y_CBCR_H2V2_P010", + .flag = 0, .fetch_planes = SDE_MDP_PLANE_PSEUDO_PLANAR, .chroma_sample = SDE_MDP_CHROMA_420, .unpack_count = 2, @@ -368,7 +383,8 @@ static struct sde_mdp_format_params sde_mdp_format_map[] = { }, { FMT_YUV_COMMON(SDE_PIX_FMT_Y_CBCR_H2V2_TP10), - .flag = VALID_ROT_R3_WB_FORMAT, + .description = "SDE/Y_CBCR_H2V2_TP10", + .flag = 0, .fetch_planes = SDE_MDP_PLANE_PSEUDO_PLANAR, .chroma_sample = SDE_MDP_CHROMA_420, .unpack_count = 2, @@ -381,19 +397,20 @@ static struct sde_mdp_format_params sde_mdp_format_map[] = { .is_ubwc = SDE_MDP_COMPRESS_NONE, }, - FMT_YUV_PLANR(SDE_PIX_FMT_Y_CB_CR_H2V2, SDE_MDP_FMT_LINEAR, - SDE_MDP_CHROMA_420, VALID_ROT_WB_FORMAT | - VALID_MDP_WB_INTF_FORMAT, C2_R_Cr, C1_B_Cb), - FMT_YUV_PLANR(SDE_PIX_FMT_Y_CR_CB_H2V2, SDE_MDP_FMT_LINEAR, - SDE_MDP_CHROMA_420, VALID_ROT_WB_FORMAT | - VALID_MDP_WB_INTF_FORMAT, C1_B_Cb, C2_R_Cr), - FMT_YUV_PLANR(SDE_PIX_FMT_Y_CR_CB_GH2V2, SDE_MDP_FMT_LINEAR, - SDE_MDP_CHROMA_420, VALID_ROT_WB_FORMAT | - VALID_MDP_WB_INTF_FORMAT, C1_B_Cb, C2_R_Cr), + FMT_YUV_PLANR(SDE_PIX_FMT_Y_CB_CR_H2V2, "Y_CB_CR_H2V2", + SDE_MDP_FMT_LINEAR, + SDE_MDP_CHROMA_420, 0, C2_R_Cr, C1_B_Cb), + FMT_YUV_PLANR(SDE_PIX_FMT_Y_CR_CB_H2V2, "Y_CR_CB_H2V2", + SDE_MDP_FMT_LINEAR, + SDE_MDP_CHROMA_420, 0, C1_B_Cb, C2_R_Cr), + FMT_YUV_PLANR(SDE_PIX_FMT_Y_CR_CB_GH2V2, "SDE/Y_CR_CB_GH2V2", + SDE_MDP_FMT_LINEAR, + SDE_MDP_CHROMA_420, 0, C1_B_Cb, C2_R_Cr), { FMT_YUV_COMMON(SDE_PIX_FMT_YCBYCR_H2V1), - .flag = VALID_ROT_WB_FORMAT, + .description = "YCBYCR_H2V1", + .flag = 0, .fetch_planes = SDE_MDP_PLANE_INTERLEAVED, .chroma_sample = SDE_MDP_CHROMA_H2V1, .unpack_count = 4, @@ -403,61 +420,69 @@ static struct sde_mdp_format_params sde_mdp_format_map[] = { .element = { C2_R_Cr, C0_G_Y, C1_B_Cb, C0_G_Y }, .is_ubwc = SDE_MDP_COMPRESS_NONE, }, - FMT_RGB_1555(SDE_PIX_FMT_RGBA_5551, 1, VALID_ROT_WB_ALL, + FMT_RGB_1555(SDE_PIX_FMT_RGBA_5551, "RGBA_5551", 1, 0, C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr), - FMT_RGB_1555(SDE_PIX_FMT_ARGB_1555, 1, VALID_ROT_WB_ALL, + FMT_RGB_1555(SDE_PIX_FMT_ARGB_1555, "ARGB_1555", 1, 0, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA), - FMT_RGB_1555(SDE_PIX_FMT_ABGR_1555, 1, VALID_ROT_WB_ALL, + FMT_RGB_1555(SDE_PIX_FMT_ABGR_1555, "ABGR_1555", 1, 0, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), - FMT_RGB_1555(SDE_PIX_FMT_BGRA_5551, 1, VALID_ROT_WB_ALL, + FMT_RGB_1555(SDE_PIX_FMT_BGRA_5551, "BGRA_5551", 1, 0, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb), - FMT_RGB_1555(SDE_PIX_FMT_BGRX_5551, 0, VALID_ROT_WB_ALL, + FMT_RGB_1555(SDE_PIX_FMT_BGRX_5551, "BGRX_5551", 0, 0, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb), - FMT_RGB_1555(SDE_PIX_FMT_RGBX_5551, 0, VALID_ROT_WB_ALL, + FMT_RGB_1555(SDE_PIX_FMT_RGBX_5551, "RGBX_5551", 0, 0, C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr), - FMT_RGB_1555(SDE_PIX_FMT_XBGR_1555, 0, VALID_ROT_WB_ALL, + FMT_RGB_1555(SDE_PIX_FMT_XBGR_1555, "XBGR_1555", 0, 0, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), - FMT_RGB_1555(SDE_PIX_FMT_XRGB_1555, 0, VALID_ROT_WB_ALL, + FMT_RGB_1555(SDE_PIX_FMT_XRGB_1555, "XRGB_1555", 0, 0, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA), - FMT_RGB_4444(SDE_PIX_FMT_RGBA_4444, 1, VALID_ROT_WB_ALL, + FMT_RGB_4444(SDE_PIX_FMT_RGBA_4444, "RGBA_4444", 1, 0, C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr), - FMT_RGB_4444(SDE_PIX_FMT_ARGB_4444, 1, VALID_ROT_WB_ALL, + FMT_RGB_4444(SDE_PIX_FMT_ARGB_4444, "ARGB_4444", 1, 0, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA), - FMT_RGB_4444(SDE_PIX_FMT_BGRA_4444, 1, VALID_ROT_WB_ALL, + FMT_RGB_4444(SDE_PIX_FMT_BGRA_4444, "BGRA_4444", 1, 0, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb), - FMT_RGB_4444(SDE_PIX_FMT_ABGR_4444, 1, VALID_ROT_WB_ALL, + FMT_RGB_4444(SDE_PIX_FMT_ABGR_4444, "ABGR_4444", 1, 0, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), - FMT_RGB_4444(SDE_PIX_FMT_RGBX_4444, 0, VALID_ROT_WB_ALL, + FMT_RGB_4444(SDE_PIX_FMT_RGBX_4444, "RGBX_4444", 0, 0, C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr), - FMT_RGB_4444(SDE_PIX_FMT_XRGB_4444, 0, VALID_ROT_WB_ALL, + FMT_RGB_4444(SDE_PIX_FMT_XRGB_4444, "XRGB_4444", 0, 0, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA), - FMT_RGB_4444(SDE_PIX_FMT_BGRX_4444, 0, VALID_ROT_WB_ALL, + FMT_RGB_4444(SDE_PIX_FMT_BGRX_4444, "BGRX_4444", 0, 0, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb), - FMT_RGB_4444(SDE_PIX_FMT_XBGR_4444, 0, VALID_ROT_WB_ALL, + FMT_RGB_4444(SDE_PIX_FMT_XBGR_4444, "XBGR_4444", 0, 0, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), - FMT_RGB_1010102(SDE_PIX_FMT_RGBA_1010102, SDE_MDP_FMT_LINEAR, - VALID_ROT_R3_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, - 1, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, SDE_MDP_COMPRESS_NONE), - FMT_RGB_1010102(SDE_PIX_FMT_RGBX_1010102, SDE_MDP_FMT_LINEAR, - VALID_ROT_R3_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, - 0, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, SDE_MDP_COMPRESS_NONE), - FMT_RGB_1010102(SDE_PIX_FMT_BGRA_1010102, SDE_MDP_FMT_LINEAR, - VALID_ROT_R3_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, - 1, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA, SDE_MDP_COMPRESS_NONE), - FMT_RGB_1010102(SDE_PIX_FMT_BGRX_1010102, SDE_MDP_FMT_LINEAR, - VALID_ROT_R3_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, - 0, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA, SDE_MDP_COMPRESS_NONE), - FMT_RGB_1010102(SDE_PIX_FMT_ARGB_2101010, SDE_MDP_FMT_LINEAR, - INVALID_WB_FORMAT, 1, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb, + FMT_RGB_1010102(SDE_PIX_FMT_RGBA_1010102, "SDE/RGBA_1010102", + SDE_MDP_FMT_LINEAR, + 0, 1, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, + SDE_MDP_COMPRESS_NONE), + FMT_RGB_1010102(SDE_PIX_FMT_RGBX_1010102, "SDE/RGBX_1010102", + SDE_MDP_FMT_LINEAR, + 0, 0, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, + SDE_MDP_COMPRESS_NONE), + FMT_RGB_1010102(SDE_PIX_FMT_BGRA_1010102, "SDE/BGRA_1010102", + SDE_MDP_FMT_LINEAR, + 0, 1, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA, SDE_MDP_COMPRESS_NONE), - FMT_RGB_1010102(SDE_PIX_FMT_XRGB_2101010, SDE_MDP_FMT_LINEAR, - INVALID_WB_FORMAT, 0, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb, + FMT_RGB_1010102(SDE_PIX_FMT_BGRX_1010102, "SDE/BGRX_1010102", + SDE_MDP_FMT_LINEAR, + 0, 0, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA, SDE_MDP_COMPRESS_NONE), - FMT_RGB_1010102(SDE_PIX_FMT_ABGR_2101010, SDE_MDP_FMT_LINEAR, - INVALID_WB_FORMAT, 1, C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr, + FMT_RGB_1010102(SDE_PIX_FMT_ARGB_2101010, "SDE/ARGB_2101010", + SDE_MDP_FMT_LINEAR, + 0, 1, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb, SDE_MDP_COMPRESS_NONE), - FMT_RGB_1010102(SDE_PIX_FMT_XBGR_2101010, SDE_MDP_FMT_LINEAR, - INVALID_WB_FORMAT, 0, C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr, + FMT_RGB_1010102(SDE_PIX_FMT_XRGB_2101010, "SDE/XRGB_2101010", + SDE_MDP_FMT_LINEAR, + 0, 0, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb, + SDE_MDP_COMPRESS_NONE), + FMT_RGB_1010102(SDE_PIX_FMT_ABGR_2101010, "SDE/ABGR_2101010", + SDE_MDP_FMT_LINEAR, + 0, 1, C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr, + SDE_MDP_COMPRESS_NONE), + FMT_RGB_1010102(SDE_PIX_FMT_XBGR_2101010, "SDE/XBGR_2101010", + SDE_MDP_FMT_LINEAR, + 0, 0, C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr, SDE_MDP_COMPRESS_NONE), }; @@ -518,24 +543,3 @@ int sde_rot_get_ubwc_micro_dim(u32 format, u16 *w, u16 *h) return 0; } - -/* - * sde_mdp_is_wb_format - determine if the given fmt is supported by writeback - * @fmt: Pointer to format parameter - */ -bool sde_mdp_is_wb_format(struct sde_mdp_format_params *fmt) -{ - struct sde_rot_data_type *mdata = sde_rot_get_mdata(); - - if (!mdata || !fmt) - return false; - else if (test_bit(SDE_CAPS_R1_WB, mdata->sde_caps_map) && - (fmt->flag & VALID_ROT_WB_FORMAT)) - return true; - else if (test_bit(SDE_CAPS_R3_WB, mdata->sde_caps_map) && - (fmt->flag & VALID_ROT_R3_WB_FORMAT)) - return true; - else - return false; -} - diff --git a/drivers/media/platform/msm/sde/rotator/sde_rotator_formats.h b/drivers/media/platform/msm/sde/rotator/sde_rotator_formats.h index 198bee373a42..23548b99fce4 100644 --- a/drivers/media/platform/msm/sde/rotator/sde_rotator_formats.h +++ b/drivers/media/platform/msm/sde/rotator/sde_rotator_formats.h @@ -17,19 +17,11 @@ #include <linux/types.h> #include <media/msm_sde_rotator.h> -/* internal formats */ -#define SDE_PIX_FMT_Y_CBCR_H2V2_TP10 v4l2_fourcc('T', 'P', '1', '0') - #define SDE_ROT_MAX_PLANES 4 #define UBWC_META_MACRO_W_H 16 #define UBWC_META_BLOCK_SIZE 256 -#define INVALID_WB_FORMAT 0 -#define VALID_ROT_WB_FORMAT BIT(0) -#define VALID_MDP_WB_INTF_FORMAT BIT(1) -#define VALID_ROT_R3_WB_FORMAT BIT(2) - /* * Value of enum chosen to fit the number of bits * expected by the HW programming. @@ -79,6 +71,7 @@ enum sde_mdp_sspp_chroma_samp_type { struct sde_mdp_format_params { u32 format; + const char *description; u32 flag; u8 is_yuv; u8 is_ubwc; @@ -111,8 +104,6 @@ struct sde_mdp_format_params *sde_get_format_params(u32 format); int sde_rot_get_ubwc_micro_dim(u32 format, u16 *w, u16 *h); -bool sde_mdp_is_wb_format(struct sde_mdp_format_params *fmt); - static inline bool sde_mdp_is_tilea4x_format(struct sde_mdp_format_params *fmt) { return fmt && (fmt->frame_format == SDE_MDP_FMT_TILE_A4X); diff --git a/drivers/media/platform/msm/sde/rotator/sde_rotator_r1.c b/drivers/media/platform/msm/sde/rotator/sde_rotator_r1.c index 31cc4f3fb58a..5b574ed9fabc 100644 --- a/drivers/media/platform/msm/sde/rotator/sde_rotator_r1.c +++ b/drivers/media/platform/msm/sde/rotator/sde_rotator_r1.c @@ -45,6 +45,100 @@ struct sde_rotator_r1_data { struct sde_mdp_hw_resource *mdp_hw; }; +static u32 sde_hw_rotator_input_pixfmts[] = { + SDE_PIX_FMT_XRGB_8888, + SDE_PIX_FMT_ARGB_8888, + SDE_PIX_FMT_ABGR_8888, + SDE_PIX_FMT_RGBA_8888, + SDE_PIX_FMT_BGRA_8888, + SDE_PIX_FMT_RGBX_8888, + SDE_PIX_FMT_BGRX_8888, + SDE_PIX_FMT_XBGR_8888, + SDE_PIX_FMT_RGBA_5551, + SDE_PIX_FMT_ARGB_1555, + SDE_PIX_FMT_ABGR_1555, + SDE_PIX_FMT_BGRA_5551, + SDE_PIX_FMT_BGRX_5551, + SDE_PIX_FMT_RGBX_5551, + SDE_PIX_FMT_XBGR_1555, + SDE_PIX_FMT_XRGB_1555, + SDE_PIX_FMT_ARGB_4444, + SDE_PIX_FMT_RGBA_4444, + SDE_PIX_FMT_BGRA_4444, + SDE_PIX_FMT_ABGR_4444, + SDE_PIX_FMT_RGBX_4444, + SDE_PIX_FMT_XRGB_4444, + SDE_PIX_FMT_BGRX_4444, + SDE_PIX_FMT_XBGR_4444, + SDE_PIX_FMT_RGB_888, + SDE_PIX_FMT_BGR_888, + SDE_PIX_FMT_RGB_565, + SDE_PIX_FMT_BGR_565, + SDE_PIX_FMT_Y_CB_CR_H2V2, + SDE_PIX_FMT_Y_CR_CB_H2V2, + SDE_PIX_FMT_Y_CR_CB_GH2V2, + SDE_PIX_FMT_Y_CBCR_H2V2, + SDE_PIX_FMT_Y_CRCB_H2V2, + SDE_PIX_FMT_Y_CBCR_H1V2, + SDE_PIX_FMT_Y_CRCB_H1V2, + SDE_PIX_FMT_Y_CBCR_H2V1, + SDE_PIX_FMT_Y_CRCB_H2V1, + SDE_PIX_FMT_YCBYCR_H2V1, + SDE_PIX_FMT_Y_CBCR_H2V2_VENUS, + SDE_PIX_FMT_Y_CRCB_H2V2_VENUS, + SDE_PIX_FMT_RGBA_8888_UBWC, + SDE_PIX_FMT_RGBX_8888_UBWC, + SDE_PIX_FMT_RGB_565_UBWC, + SDE_PIX_FMT_Y_CBCR_H2V2_UBWC, +}; + +static u32 sde_hw_rotator_output_pixfmts[] = { + SDE_PIX_FMT_XRGB_8888, + SDE_PIX_FMT_ARGB_8888, + SDE_PIX_FMT_ABGR_8888, + SDE_PIX_FMT_RGBA_8888, + SDE_PIX_FMT_BGRA_8888, + SDE_PIX_FMT_RGBX_8888, + SDE_PIX_FMT_BGRX_8888, + SDE_PIX_FMT_XBGR_8888, + SDE_PIX_FMT_RGBA_5551, + SDE_PIX_FMT_ARGB_1555, + SDE_PIX_FMT_ABGR_1555, + SDE_PIX_FMT_BGRA_5551, + SDE_PIX_FMT_BGRX_5551, + SDE_PIX_FMT_RGBX_5551, + SDE_PIX_FMT_XBGR_1555, + SDE_PIX_FMT_XRGB_1555, + SDE_PIX_FMT_ARGB_4444, + SDE_PIX_FMT_RGBA_4444, + SDE_PIX_FMT_BGRA_4444, + SDE_PIX_FMT_ABGR_4444, + SDE_PIX_FMT_RGBX_4444, + SDE_PIX_FMT_XRGB_4444, + SDE_PIX_FMT_BGRX_4444, + SDE_PIX_FMT_XBGR_4444, + SDE_PIX_FMT_RGB_888, + SDE_PIX_FMT_BGR_888, + SDE_PIX_FMT_RGB_565, + SDE_PIX_FMT_BGR_565, + SDE_PIX_FMT_Y_CB_CR_H2V2, + SDE_PIX_FMT_Y_CR_CB_H2V2, + SDE_PIX_FMT_Y_CR_CB_GH2V2, + SDE_PIX_FMT_Y_CBCR_H2V2, + SDE_PIX_FMT_Y_CRCB_H2V2, + SDE_PIX_FMT_Y_CBCR_H1V2, + SDE_PIX_FMT_Y_CRCB_H1V2, + SDE_PIX_FMT_Y_CBCR_H2V1, + SDE_PIX_FMT_Y_CRCB_H2V1, + SDE_PIX_FMT_YCBYCR_H2V1, + SDE_PIX_FMT_Y_CBCR_H2V2_VENUS, + SDE_PIX_FMT_Y_CRCB_H2V2_VENUS, + SDE_PIX_FMT_RGBA_8888_UBWC, + SDE_PIX_FMT_RGBX_8888_UBWC, + SDE_PIX_FMT_RGB_565_UBWC, + SDE_PIX_FMT_Y_CBCR_H2V2_UBWC, +}; + static struct sde_mdp_hw_resource *sde_rotator_hw_alloc( struct sde_rot_mgr *mgr, u32 ctl_id, u32 wb_id, int irq_num) { @@ -403,6 +497,52 @@ static ssize_t sde_rotator_hw_show_state(struct sde_rot_mgr *mgr, return cnt; } +/* + * sde_hw_rotator_get_pixfmt - get the indexed pixel format + * @mgr: Pointer to rotator manager + * @index: index of pixel format + * @input: true for input port; false for output port + */ +static u32 sde_hw_rotator_get_pixfmt(struct sde_rot_mgr *mgr, + int index, bool input) +{ + if (input) { + if (index < ARRAY_SIZE(sde_hw_rotator_input_pixfmts)) + return sde_hw_rotator_input_pixfmts[index]; + else + return 0; + } else { + if (index < ARRAY_SIZE(sde_hw_rotator_output_pixfmts)) + return sde_hw_rotator_output_pixfmts[index]; + else + return 0; + } +} + +/* + * sde_hw_rotator_is_valid_pixfmt - verify if the given pixel format is valid + * @mgr: Pointer to rotator manager + * @pixfmt: pixel format to be verified + * @input: true for input port; false for output port + */ +static int sde_hw_rotator_is_valid_pixfmt(struct sde_rot_mgr *mgr, u32 pixfmt, + bool input) +{ + int i; + + if (input) { + for (i = 0; i < ARRAY_SIZE(sde_hw_rotator_input_pixfmts); i++) + if (sde_hw_rotator_input_pixfmts[i] == pixfmt) + return true; + } else { + for (i = 0; i < ARRAY_SIZE(sde_hw_rotator_output_pixfmts); i++) + if (sde_hw_rotator_output_pixfmts[i] == pixfmt) + return true; + } + + return false; +} + static int sde_rotator_hw_parse_dt(struct sde_rotator_r1_data *hw_data, struct platform_device *dev) { @@ -552,6 +692,8 @@ int sde_rotator_r1_init(struct sde_rot_mgr *mgr) mgr->ops_hw_show_caps = sde_rotator_hw_show_caps; mgr->ops_hw_show_state = sde_rotator_hw_show_state; mgr->ops_hw_create_debugfs = sde_rotator_r1_create_debugfs; + mgr->ops_hw_get_pixfmt = sde_hw_rotator_get_pixfmt; + mgr->ops_hw_is_valid_pixfmt = sde_hw_rotator_is_valid_pixfmt; ret = sde_rotator_hw_parse_dt(mgr->hw_data, mgr->pdev); if (ret) diff --git a/drivers/media/platform/msm/sde/rotator/sde_rotator_r3.c b/drivers/media/platform/msm/sde/rotator/sde_rotator_r3.c index 7a090ee20ffb..9b08c4fe0989 100644 --- a/drivers/media/platform/msm/sde/rotator/sde_rotator_r3.c +++ b/drivers/media/platform/msm/sde/rotator/sde_rotator_r3.c @@ -78,6 +78,126 @@ #define SDE_ROTREG_READ(base, off) \ readl_relaxed(base + (off)) +static u32 sde_hw_rotator_input_pixfmts[] = { + SDE_PIX_FMT_XRGB_8888, + SDE_PIX_FMT_ARGB_8888, + SDE_PIX_FMT_ABGR_8888, + SDE_PIX_FMT_RGBA_8888, + SDE_PIX_FMT_BGRA_8888, + SDE_PIX_FMT_RGBX_8888, + SDE_PIX_FMT_BGRX_8888, + SDE_PIX_FMT_XBGR_8888, + SDE_PIX_FMT_RGBA_5551, + SDE_PIX_FMT_ARGB_1555, + SDE_PIX_FMT_ABGR_1555, + SDE_PIX_FMT_BGRA_5551, + SDE_PIX_FMT_BGRX_5551, + SDE_PIX_FMT_RGBX_5551, + SDE_PIX_FMT_XBGR_1555, + SDE_PIX_FMT_XRGB_1555, + SDE_PIX_FMT_ARGB_4444, + SDE_PIX_FMT_RGBA_4444, + SDE_PIX_FMT_BGRA_4444, + SDE_PIX_FMT_ABGR_4444, + SDE_PIX_FMT_RGBX_4444, + SDE_PIX_FMT_XRGB_4444, + SDE_PIX_FMT_BGRX_4444, + SDE_PIX_FMT_XBGR_4444, + SDE_PIX_FMT_RGB_888, + SDE_PIX_FMT_BGR_888, + SDE_PIX_FMT_RGB_565, + SDE_PIX_FMT_BGR_565, + SDE_PIX_FMT_Y_CB_CR_H2V2, + SDE_PIX_FMT_Y_CR_CB_H2V2, + SDE_PIX_FMT_Y_CR_CB_GH2V2, + SDE_PIX_FMT_Y_CBCR_H2V2, + SDE_PIX_FMT_Y_CRCB_H2V2, + SDE_PIX_FMT_Y_CBCR_H1V2, + SDE_PIX_FMT_Y_CRCB_H1V2, + SDE_PIX_FMT_Y_CBCR_H2V1, + SDE_PIX_FMT_Y_CRCB_H2V1, + SDE_PIX_FMT_YCBYCR_H2V1, + SDE_PIX_FMT_Y_CBCR_H2V2_VENUS, + SDE_PIX_FMT_Y_CRCB_H2V2_VENUS, + SDE_PIX_FMT_RGBA_8888_UBWC, + SDE_PIX_FMT_RGBX_8888_UBWC, + SDE_PIX_FMT_RGB_565_UBWC, + SDE_PIX_FMT_Y_CBCR_H2V2_UBWC, + SDE_PIX_FMT_RGBA_1010102, + SDE_PIX_FMT_RGBX_1010102, + SDE_PIX_FMT_ARGB_2101010, + SDE_PIX_FMT_XRGB_2101010, + SDE_PIX_FMT_BGRA_1010102, + SDE_PIX_FMT_BGRX_1010102, + SDE_PIX_FMT_ABGR_2101010, + SDE_PIX_FMT_XBGR_2101010, + SDE_PIX_FMT_RGBA_1010102_UBWC, + SDE_PIX_FMT_RGBX_1010102_UBWC, + SDE_PIX_FMT_Y_CBCR_H2V2_P010, + SDE_PIX_FMT_Y_CBCR_H2V2_TP10, + SDE_PIX_FMT_Y_CBCR_H2V2_TP10_UBWC, +}; + +static u32 sde_hw_rotator_output_pixfmts[] = { + SDE_PIX_FMT_XRGB_8888, + SDE_PIX_FMT_ARGB_8888, + SDE_PIX_FMT_ABGR_8888, + SDE_PIX_FMT_RGBA_8888, + SDE_PIX_FMT_BGRA_8888, + SDE_PIX_FMT_RGBX_8888, + SDE_PIX_FMT_BGRX_8888, + SDE_PIX_FMT_XBGR_8888, + SDE_PIX_FMT_RGBA_5551, + SDE_PIX_FMT_ARGB_1555, + SDE_PIX_FMT_ABGR_1555, + SDE_PIX_FMT_BGRA_5551, + SDE_PIX_FMT_BGRX_5551, + SDE_PIX_FMT_RGBX_5551, + SDE_PIX_FMT_XBGR_1555, + SDE_PIX_FMT_XRGB_1555, + SDE_PIX_FMT_ARGB_4444, + SDE_PIX_FMT_RGBA_4444, + SDE_PIX_FMT_BGRA_4444, + SDE_PIX_FMT_ABGR_4444, + SDE_PIX_FMT_RGBX_4444, + SDE_PIX_FMT_XRGB_4444, + SDE_PIX_FMT_BGRX_4444, + SDE_PIX_FMT_XBGR_4444, + SDE_PIX_FMT_RGB_888, + SDE_PIX_FMT_BGR_888, + SDE_PIX_FMT_RGB_565, + SDE_PIX_FMT_BGR_565, + /* SDE_PIX_FMT_Y_CB_CR_H2V2 */ + /* SDE_PIX_FMT_Y_CR_CB_H2V2 */ + /* SDE_PIX_FMT_Y_CR_CB_GH2V2 */ + SDE_PIX_FMT_Y_CBCR_H2V2, + SDE_PIX_FMT_Y_CRCB_H2V2, + SDE_PIX_FMT_Y_CBCR_H1V2, + SDE_PIX_FMT_Y_CRCB_H1V2, + SDE_PIX_FMT_Y_CBCR_H2V1, + SDE_PIX_FMT_Y_CRCB_H2V1, + /* SDE_PIX_FMT_YCBYCR_H2V1 */ + SDE_PIX_FMT_Y_CBCR_H2V2_VENUS, + SDE_PIX_FMT_Y_CRCB_H2V2_VENUS, + SDE_PIX_FMT_RGBA_8888_UBWC, + SDE_PIX_FMT_RGBX_8888_UBWC, + SDE_PIX_FMT_RGB_565_UBWC, + SDE_PIX_FMT_Y_CBCR_H2V2_UBWC, + SDE_PIX_FMT_RGBA_1010102, + SDE_PIX_FMT_RGBX_1010102, + /* SDE_PIX_FMT_ARGB_2101010 */ + /* SDE_PIX_FMT_XRGB_2101010 */ + SDE_PIX_FMT_BGRA_1010102, + SDE_PIX_FMT_BGRX_1010102, + /* SDE_PIX_FMT_ABGR_2101010 */ + /* SDE_PIX_FMT_XBGR_2101010 */ + SDE_PIX_FMT_RGBA_1010102_UBWC, + SDE_PIX_FMT_RGBX_1010102_UBWC, + SDE_PIX_FMT_Y_CBCR_H2V2_P010, + SDE_PIX_FMT_Y_CBCR_H2V2_TP10, + SDE_PIX_FMT_Y_CBCR_H2V2_TP10_UBWC, +}; + /* Invalid software timestamp value for initialization */ #define SDE_REGDMA_SWTS_INVALID (~0) @@ -1872,6 +1992,52 @@ static ssize_t sde_hw_rotator_show_state(struct sde_rot_mgr *mgr, } /* + * sde_hw_rotator_get_pixfmt - get the indexed pixel format + * @mgr: Pointer to rotator manager + * @index: index of pixel format + * @input: true for input port; false for output port + */ +static u32 sde_hw_rotator_get_pixfmt(struct sde_rot_mgr *mgr, + int index, bool input) +{ + if (input) { + if (index < ARRAY_SIZE(sde_hw_rotator_input_pixfmts)) + return sde_hw_rotator_input_pixfmts[index]; + else + return 0; + } else { + if (index < ARRAY_SIZE(sde_hw_rotator_output_pixfmts)) + return sde_hw_rotator_output_pixfmts[index]; + else + return 0; + } +} + +/* + * sde_hw_rotator_is_valid_pixfmt - verify if the given pixel format is valid + * @mgr: Pointer to rotator manager + * @pixfmt: pixel format to be verified + * @input: true for input port; false for output port + */ +static int sde_hw_rotator_is_valid_pixfmt(struct sde_rot_mgr *mgr, u32 pixfmt, + bool input) +{ + int i; + + if (input) { + for (i = 0; i < ARRAY_SIZE(sde_hw_rotator_input_pixfmts); i++) + if (sde_hw_rotator_input_pixfmts[i] == pixfmt) + return true; + } else { + for (i = 0; i < ARRAY_SIZE(sde_hw_rotator_output_pixfmts); i++) + if (sde_hw_rotator_output_pixfmts[i] == pixfmt) + return true; + } + + return false; +} + +/* * sde_hw_rotator_parse_dt - parse r3 specific device tree settings * @hw_data: Pointer to rotator hw * @dev: Pointer to platform device @@ -1949,6 +2115,8 @@ int sde_rotator_r3_init(struct sde_rot_mgr *mgr) mgr->ops_hw_show_caps = sde_hw_rotator_show_caps; mgr->ops_hw_show_state = sde_hw_rotator_show_state; mgr->ops_hw_create_debugfs = sde_rotator_r3_create_debugfs; + mgr->ops_hw_get_pixfmt = sde_hw_rotator_get_pixfmt; + mgr->ops_hw_is_valid_pixfmt = sde_hw_rotator_is_valid_pixfmt; ret = sde_hw_rotator_parse_dt(mgr->hw_data, mgr->pdev); if (ret) diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c index 7fd7501dabd8..d9e04bc8d0f1 100644 --- a/drivers/media/v4l2-core/v4l2-ioctl.c +++ b/drivers/media/v4l2-core/v4l2-ioctl.c @@ -1233,6 +1233,80 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt) descr = "NV12 UBWC"; break; case V4L2_PIX_FMT_RGBA8888_UBWC: descr = "RGBA8888 UBWC"; break; + case V4L2_PIX_FMT_SDE_ABGR_8888: + descr = "32-bit ABGR 8-8-8-8"; break; + case V4L2_PIX_FMT_SDE_RGBA_8888: + descr = "32-bit RGBA 8-8-8-8"; break; + case V4L2_PIX_FMT_SDE_RGBX_8888: + descr = "32-bit RGBX 8-8-8-8"; break; + case V4L2_PIX_FMT_SDE_XBGR_8888: + descr = "32-bit XBGR 8-8-8-8"; break; + case V4L2_PIX_FMT_SDE_RGBA_5551: + descr = "16-bit RGBA 5-5-5-1"; break; + case V4L2_PIX_FMT_SDE_ABGR_1555: + descr = "16-bit ABGR 1-5-5-5"; break; + case V4L2_PIX_FMT_SDE_BGRA_5551: + descr = "16-bit BGRA 5-5-5-1"; break; + case V4L2_PIX_FMT_SDE_BGRX_5551: + descr = "16-bit BGRX 5-5-5-1"; break; + case V4L2_PIX_FMT_SDE_RGBX_5551: + descr = "16-bit RGBX 5-5-5-1"; break; + case V4L2_PIX_FMT_SDE_XBGR_1555: + descr = "16-bit XBGR 1-5-5-5"; break; + case V4L2_PIX_FMT_SDE_RGBA_4444: + descr = "16-bit RGBA 4-4-4-4"; break; + case V4L2_PIX_FMT_SDE_BGRA_4444: + descr = "16-bit BGRA 4-4-4-4"; break; + case V4L2_PIX_FMT_SDE_ABGR_4444: + descr = "16-bit ABGR 4-4-4-4"; break; + case V4L2_PIX_FMT_SDE_RGBX_4444: + descr = "16-bit RGBX 4-4-4-4"; break; + case V4L2_PIX_FMT_SDE_BGRX_4444: + descr = "16-bit BGRX 4-4-4-4"; break; + case V4L2_PIX_FMT_SDE_XBGR_4444: + descr = "16-bit XBGR 4-4-4-4"; break; + case V4L2_PIX_FMT_SDE_BGR_565: + descr = "16-bit BGR 5-6-5"; break; + case V4L2_PIX_FMT_SDE_Y_CR_CB_GH2V2: + descr = "Planar YVU 4:2:0 A16"; break; + case V4L2_PIX_FMT_SDE_Y_CBCR_H1V2: + descr = "Y/CbCr 4:2:2"; break; + case V4L2_PIX_FMT_SDE_Y_CRCB_H1V2: + descr = "Y/CrCb 4:2:2"; break; + case V4L2_PIX_FMT_SDE_Y_CBCR_H2V2_VENUS: + descr = "Y/CbCr 4:2:0 Venus"; break; + case V4L2_PIX_FMT_SDE_Y_CRCB_H2V2_VENUS: + descr = "Y/CrCb 4:2:0 Venus"; break; + case V4L2_PIX_FMT_SDE_RGBX_8888_UBWC: + descr = "RGBX 8:8:8:8 UBWC"; break; + case V4L2_PIX_FMT_SDE_RGB_565_UBWC: + descr = "RGB 5:6:5 UBWC"; break; + case V4L2_PIX_FMT_SDE_RGBA_1010102: + descr = "RGBA 10:10:10:2"; break; + case V4L2_PIX_FMT_SDE_RGBX_1010102: + descr = "RGBX 10:10:10:2"; break; + case V4L2_PIX_FMT_SDE_ARGB_2101010: + descr = "ARGB 2:10:10:10"; break; + case V4L2_PIX_FMT_SDE_XRGB_2101010: + descr = "XRGB 2:10:10:10"; break; + case V4L2_PIX_FMT_SDE_BGRA_1010102: + descr = "BGRA 10:10:10:2"; break; + case V4L2_PIX_FMT_SDE_BGRX_1010102: + descr = "BGRX 10:10:10:2"; break; + case V4L2_PIX_FMT_SDE_ABGR_2101010: + descr = "ABGR 2:10:10:10"; break; + case V4L2_PIX_FMT_SDE_XBGR_2101010: + descr = "XBGR 2:10:10:10"; break; + case V4L2_PIX_FMT_SDE_RGBA_1010102_UBWC: + descr = "RGBA 10:10:10:2 UBWC"; break; + case V4L2_PIX_FMT_SDE_RGBX_1010102_UBWC: + descr = "RGBX 10:10:10:2 UBWC"; break; + case V4L2_PIX_FMT_SDE_Y_CBCR_H2V2_TP10: + descr = "Y/CbCr 4:2:0 TP10"; break; + case V4L2_PIX_FMT_SDE_Y_CBCR_H2V2_P010: + descr = "Y/CbCr 4:2:0 P10"; break; + case V4L2_PIX_FMT_NV12_TP10_UBWC: + descr = "Y/CbCr 4:2:0 TP10 UBWC"; break; default: /* Compressed formats */ diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h index 46b0402a730f..4a3b35f10257 100644 --- a/include/uapi/linux/videodev2.h +++ b/include/uapi/linux/videodev2.h @@ -641,6 +641,79 @@ struct v4l2_pix_format { #define V4L2_PIX_FMT_SE401 v4l2_fourcc('S', '4', '0', '1') /* se401 janggu compressed rgb */ #define V4L2_PIX_FMT_S5C_UYVY_JPG v4l2_fourcc('S', '5', 'C', 'I') /* S5C73M3 interleaved UYVY/JPEG */ +#define V4L2_PIX_FMT_SDE_ABGR_8888 \ + v4l2_fourcc('R', 'A', '2', '4') /* 32-bit ABGR 8:8:8:8 */ +#define V4L2_PIX_FMT_SDE_RGBA_8888 \ + v4l2_fourcc('A', 'B', '2', '4') /* 32-bit RGBA 8:8:8:8 */ +#define V4L2_PIX_FMT_SDE_RGBX_8888 \ + v4l2_fourcc('X', 'B', '2', '4') /* 32-bit RGBX 8:8:8:8 */ +#define V4L2_PIX_FMT_SDE_XBGR_8888 \ + v4l2_fourcc('R', 'X', '2', '4') /* 32-bit XBGR 8:8:8:8 */ +#define V4L2_PIX_FMT_SDE_RGBA_5551 \ + v4l2_fourcc('R', 'A', '1', '5') /* 16-bit RGBA 5:5:5:1 */ +#define V4L2_PIX_FMT_SDE_ABGR_1555 \ + v4l2_fourcc('A', 'B', '1', '5') /* 16-bit ABGR 1:5:5:5 */ +#define V4L2_PIX_FMT_SDE_BGRA_5551 \ + v4l2_fourcc('B', 'A', '1', '5') /* 16-bit BGRA 5:5:5:1 */ +#define V4L2_PIX_FMT_SDE_BGRX_5551 \ + v4l2_fourcc('B', 'X', '1', '5') /* 16-bit BGRX 5:5:5:1 */ +#define V4L2_PIX_FMT_SDE_RGBX_5551 \ + v4l2_fourcc('R', 'X', '1', '5') /* 16-bit RGBX 5:5:5:1 */ +#define V4L2_PIX_FMT_SDE_XBGR_1555 \ + v4l2_fourcc('X', 'B', '1', '5') /* 16-bit XBGR 1:5:5:5 */ +#define V4L2_PIX_FMT_SDE_RGBA_4444 \ + v4l2_fourcc('R', 'A', '1', '2') /* 16-bit RGBA 4:4:4:4 */ +#define V4L2_PIX_FMT_SDE_BGRA_4444 \ + v4l2_fourcc('b', 'A', '1', '2') /* 16-bit BGRA 4:4:4:4 */ +#define V4L2_PIX_FMT_SDE_ABGR_4444 \ + v4l2_fourcc('A', 'B', '1', '2') /* 16-bit ABGR 4:4:4:4 */ +#define V4L2_PIX_FMT_SDE_RGBX_4444 \ + v4l2_fourcc('R', 'X', '1', '2') /* 16-bit RGBX 4:4:4:4 */ +#define V4L2_PIX_FMT_SDE_BGRX_4444 \ + v4l2_fourcc('B', 'X', '1', '2') /* 16-bit BGRX 4:4:4:4 */ +#define V4L2_PIX_FMT_SDE_XBGR_4444 \ + v4l2_fourcc('X', 'B', '1', '2') /* 16-bit XBGR 4:4:4:4 */ +#define V4L2_PIX_FMT_SDE_BGR_565 \ + v4l2_fourcc('B', 'G', '1', '6') /* 16-bit BGR 5:6:5 */ +#define V4L2_PIX_FMT_SDE_Y_CR_CB_GH2V2 \ + v4l2_fourcc('Y', 'U', '4', '2') /* Planar YVU 4:2:0 A16 */ +#define V4L2_PIX_FMT_SDE_Y_CBCR_H1V2 \ + v4l2_fourcc('N', 'H', '1', '6') /* Y/CbCr 4:2:2 */ +#define V4L2_PIX_FMT_SDE_Y_CRCB_H1V2 \ + v4l2_fourcc('N', 'H', '6', '1') /* Y/CrCb 4:2:2 */ +#define V4L2_PIX_FMT_SDE_Y_CBCR_H2V2_VENUS \ + v4l2_fourcc('Q', 'N', 'V', '2') /* Y/CbCr 4:2:0 Venus */ +#define V4L2_PIX_FMT_SDE_Y_CRCB_H2V2_VENUS \ + v4l2_fourcc('Q', 'N', 'V', '1') /* Y/CrCb 4:2:0 Venus */ +#define V4L2_PIX_FMT_SDE_RGBX_8888_UBWC \ + v4l2_fourcc('Q', 'X', 'B', '4') /* RGBX 8:8:8:8 UBWC */ +#define V4L2_PIX_FMT_SDE_RGB_565_UBWC \ + v4l2_fourcc('Q', 'R', 'G', '6') /* RGB 5:6:5 UBWC */ +#define V4L2_PIX_FMT_SDE_RGBA_1010102 \ + v4l2_fourcc('A', 'B', '3', '0') /* RGBA 10:10:10:2 */ +#define V4L2_PIX_FMT_SDE_RGBX_1010102 \ + v4l2_fourcc('X', 'B', '3', '0') /* RGBX 10:10:10:2 */ +#define V4L2_PIX_FMT_SDE_ARGB_2101010 \ + v4l2_fourcc('A', 'R', '3', '0') /* ARGB 2:10:10:10 */ +#define V4L2_PIX_FMT_SDE_XRGB_2101010 \ + v4l2_fourcc('X', 'R', '3', '0') /* XRGB 2:10:10:10 */ +#define V4L2_PIX_FMT_SDE_BGRA_1010102 \ + v4l2_fourcc('B', 'A', '3', '0') /* BGRA 10:10:10:2 */ +#define V4L2_PIX_FMT_SDE_BGRX_1010102 \ + v4l2_fourcc('B', 'X', '3', '0') /* BGRX 10:10:10:2 */ +#define V4L2_PIX_FMT_SDE_ABGR_2101010 \ + v4l2_fourcc('R', 'A', '3', '0') /* ABGR 2:10:10:10 */ +#define V4L2_PIX_FMT_SDE_XBGR_2101010 \ + v4l2_fourcc('R', 'X', '3', '0') /* XBGR 2:10:10:10 */ +#define V4L2_PIX_FMT_SDE_RGBA_1010102_UBWC \ + v4l2_fourcc('Q', 'R', 'B', 'A') /* RGBA 10:10:10:2 UBWC */ +#define V4L2_PIX_FMT_SDE_RGBX_1010102_UBWC \ + v4l2_fourcc('Q', 'X', 'B', 'A') /* RGBX 10:10:10:2 UBWC */ +#define V4L2_PIX_FMT_SDE_Y_CBCR_H2V2_TP10 \ + v4l2_fourcc('T', 'P', '1', '0') /* Y/CbCr 4:2:0 TP10 */ +#define V4L2_PIX_FMT_SDE_Y_CBCR_H2V2_P010 \ + v4l2_fourcc('P', '0', '1', '0') /* Y/CbCr 4:2:0 P10 */ + /* SDR formats - used only for Software Defined Radio devices */ #define V4L2_SDR_FMT_CU8 v4l2_fourcc('C', 'U', '0', '8') /* IQ u8 */ #define V4L2_SDR_FMT_CU16LE v4l2_fourcc('C', 'U', '1', '6') /* IQ u16le */ diff --git a/include/uapi/media/msm_sde_rotator.h b/include/uapi/media/msm_sde_rotator.h index 461a171a42c1..4487edf0c854 100644 --- a/include/uapi/media/msm_sde_rotator.h +++ b/include/uapi/media/msm_sde_rotator.h @@ -8,59 +8,60 @@ /* SDE Rotator pixel format definitions */ #define SDE_PIX_FMT_XRGB_8888 V4L2_PIX_FMT_XBGR32 #define SDE_PIX_FMT_ARGB_8888 V4L2_PIX_FMT_ABGR32 -#define SDE_PIX_FMT_ABGR_8888 v4l2_fourcc('R', 'A', '2', '4') -#define SDE_PIX_FMT_RGBA_8888 v4l2_fourcc('A', 'B', '2', '4') +#define SDE_PIX_FMT_ABGR_8888 V4L2_PIX_FMT_SDE_ABGR_8888 +#define SDE_PIX_FMT_RGBA_8888 V4L2_PIX_FMT_SDE_RGBA_8888 #define SDE_PIX_FMT_BGRA_8888 V4L2_PIX_FMT_ARGB32 -#define SDE_PIX_FMT_RGBX_8888 v4l2_fourcc('X', 'B', '2', '4') +#define SDE_PIX_FMT_RGBX_8888 V4L2_PIX_FMT_SDE_RGBX_8888 #define SDE_PIX_FMT_BGRX_8888 V4L2_PIX_FMT_XRGB32 -#define SDE_PIX_FMT_XBGR_8888 v4l2_fourcc('R', 'X', '2', '4') -#define SDE_PIX_FMT_RGBA_5551 v4l2_fourcc('R', 'A', '1', '5') +#define SDE_PIX_FMT_XBGR_8888 V4L2_PIX_FMT_SDE_XBGR_8888 +#define SDE_PIX_FMT_RGBA_5551 V4L2_PIX_FMT_SDE_RGBA_5551 #define SDE_PIX_FMT_ARGB_1555 V4L2_PIX_FMT_ARGB555 -#define SDE_PIX_FMT_ABGR_1555 v4l2_fourcc('A', 'B', '1', '5') -#define SDE_PIX_FMT_BGRA_5551 v4l2_fourcc('B', 'A', '1', '5') -#define SDE_PIX_FMT_BGRX_5551 v4l2_fourcc('B', 'X', '1', '5') -#define SDE_PIX_FMT_RGBX_5551 v4l2_fourcc('R', 'X', '1', '5') -#define SDE_PIX_FMT_XBGR_1555 v4l2_fourcc('X', 'B', '1', '5') +#define SDE_PIX_FMT_ABGR_1555 V4L2_PIX_FMT_SDE_ABGR_1555 +#define SDE_PIX_FMT_BGRA_5551 V4L2_PIX_FMT_SDE_BGRA_5551 +#define SDE_PIX_FMT_BGRX_5551 V4L2_PIX_FMT_SDE_BGRX_5551 +#define SDE_PIX_FMT_RGBX_5551 V4L2_PIX_FMT_SDE_RGBX_5551 +#define SDE_PIX_FMT_XBGR_1555 V4L2_PIX_FMT_SDE_XBGR_1555 #define SDE_PIX_FMT_XRGB_1555 V4L2_PIX_FMT_XRGB555 #define SDE_PIX_FMT_ARGB_4444 V4L2_PIX_FMT_ARGB444 -#define SDE_PIX_FMT_RGBA_4444 v4l2_fourcc('R', 'A', '1', '2') -#define SDE_PIX_FMT_BGRA_4444 v4l2_fourcc('B', 'A', '1', '2') -#define SDE_PIX_FMT_ABGR_4444 v4l2_fourcc('A', 'B', '1', '2') -#define SDE_PIX_FMT_RGBX_4444 v4l2_fourcc('R', 'X', '1', '2') +#define SDE_PIX_FMT_RGBA_4444 V4L2_PIX_FMT_SDE_RGBA_4444 +#define SDE_PIX_FMT_BGRA_4444 V4L2_PIX_FMT_SDE_BGRA_4444 +#define SDE_PIX_FMT_ABGR_4444 V4L2_PIX_FMT_SDE_ABGR_4444 +#define SDE_PIX_FMT_RGBX_4444 V4L2_PIX_FMT_SDE_RGBX_4444 #define SDE_PIX_FMT_XRGB_4444 V4L2_PIX_FMT_XRGB444 -#define SDE_PIX_FMT_BGRX_4444 v4l2_fourcc('B', 'X', '1', '2') -#define SDE_PIX_FMT_XBGR_4444 v4l2_fourcc('X', 'B', '1', '2') +#define SDE_PIX_FMT_BGRX_4444 V4L2_PIX_FMT_SDE_BGRX_4444 +#define SDE_PIX_FMT_XBGR_4444 V4L2_PIX_FMT_SDE_XBGR_4444 #define SDE_PIX_FMT_RGB_888 V4L2_PIX_FMT_RGB24 #define SDE_PIX_FMT_BGR_888 V4L2_PIX_FMT_BGR24 #define SDE_PIX_FMT_RGB_565 V4L2_PIX_FMT_RGB565 -#define SDE_PIX_FMT_BGR_565 v4l2_fourcc('B', 'G', '1', '6') +#define SDE_PIX_FMT_BGR_565 V4L2_PIX_FMT_SDE_BGR_565 #define SDE_PIX_FMT_Y_CB_CR_H2V2 V4L2_PIX_FMT_YUV420 #define SDE_PIX_FMT_Y_CR_CB_H2V2 V4L2_PIX_FMT_YVU420 -#define SDE_PIX_FMT_Y_CR_CB_GH2V2 v4l2_fourcc('Y', 'U', '4', '2') +#define SDE_PIX_FMT_Y_CR_CB_GH2V2 V4L2_PIX_FMT_SDE_Y_CR_CB_GH2V2 #define SDE_PIX_FMT_Y_CBCR_H2V2 V4L2_PIX_FMT_NV12 #define SDE_PIX_FMT_Y_CRCB_H2V2 V4L2_PIX_FMT_NV21 -#define SDE_PIX_FMT_Y_CBCR_H1V2 v4l2_fourcc('N', 'H', '1', '6') -#define SDE_PIX_FMT_Y_CRCB_H1V2 v4l2_fourcc('N', 'H', '6', '1') +#define SDE_PIX_FMT_Y_CBCR_H1V2 V4L2_PIX_FMT_SDE_Y_CBCR_H1V2 +#define SDE_PIX_FMT_Y_CRCB_H1V2 V4L2_PIX_FMT_SDE_Y_CRCB_H1V2 #define SDE_PIX_FMT_Y_CBCR_H2V1 V4L2_PIX_FMT_NV16 #define SDE_PIX_FMT_Y_CRCB_H2V1 V4L2_PIX_FMT_NV61 #define SDE_PIX_FMT_YCBYCR_H2V1 V4L2_PIX_FMT_YUYV -#define SDE_PIX_FMT_Y_CBCR_H2V2_VENUS v4l2_fourcc('Q', 'N', 'V', '2') -#define SDE_PIX_FMT_Y_CRCB_H2V2_VENUS v4l2_fourcc('Q', 'N', 'V', '1') +#define SDE_PIX_FMT_Y_CBCR_H2V2_VENUS V4L2_PIX_FMT_SDE_Y_CBCR_H2V2_VENUS +#define SDE_PIX_FMT_Y_CRCB_H2V2_VENUS V4L2_PIX_FMT_SDE_Y_CRCB_H2V2_VENUS #define SDE_PIX_FMT_RGBA_8888_UBWC V4L2_PIX_FMT_RGBA8888_UBWC -#define SDE_PIX_FMT_RGBX_8888_UBWC v4l2_fourcc('Q', 'X', 'B', '4') -#define SDE_PIX_FMT_RGB_565_UBWC v4l2_fourcc('Q', 'R', 'G', '6') +#define SDE_PIX_FMT_RGBX_8888_UBWC V4L2_PIX_FMT_SDE_RGBX_8888_UBWC +#define SDE_PIX_FMT_RGB_565_UBWC V4L2_PIX_FMT_SDE_RGB_565_UBWC #define SDE_PIX_FMT_Y_CBCR_H2V2_UBWC V4L2_PIX_FMT_NV12_UBWC -#define SDE_PIX_FMT_RGBA_1010102 v4l2_fourcc('A', 'B', '3', '0') -#define SDE_PIX_FMT_RGBX_1010102 v4l2_fourcc('X', 'B', '3', '0') -#define SDE_PIX_FMT_ARGB_2101010 v4l2_fourcc('A', 'R', '3', '0') -#define SDE_PIX_FMT_XRGB_2101010 v4l2_fourcc('X', 'R', '3', '0') -#define SDE_PIX_FMT_BGRA_1010102 v4l2_fourcc('B', 'A', '3', '0') -#define SDE_PIX_FMT_BGRX_1010102 v4l2_fourcc('B', 'X', '3', '0') -#define SDE_PIX_FMT_ABGR_2101010 v4l2_fourcc('R', 'A', '3', '0') -#define SDE_PIX_FMT_XBGR_2101010 v4l2_fourcc('R', 'X', '3', '0') -#define SDE_PIX_FMT_RGBA_1010102_UBWC v4l2_fourcc('Q', 'R', 'B', 'A') -#define SDE_PIX_FMT_RGBX_1010102_UBWC v4l2_fourcc('Q', 'X', 'B', 'A') -#define SDE_PIX_FMT_Y_CBCR_H2V2_P010 v4l2_fourcc('P', '0', '1', '0') +#define SDE_PIX_FMT_RGBA_1010102 V4L2_PIX_FMT_SDE_RGBA_1010102 +#define SDE_PIX_FMT_RGBX_1010102 V4L2_PIX_FMT_SDE_RGBX_1010102 +#define SDE_PIX_FMT_ARGB_2101010 V4L2_PIX_FMT_SDE_ARGB_2101010 +#define SDE_PIX_FMT_XRGB_2101010 V4L2_PIX_FMT_SDE_XRGB_2101010 +#define SDE_PIX_FMT_BGRA_1010102 V4L2_PIX_FMT_SDE_BGRA_1010102 +#define SDE_PIX_FMT_BGRX_1010102 V4L2_PIX_FMT_SDE_BGRX_1010102 +#define SDE_PIX_FMT_ABGR_2101010 V4L2_PIX_FMT_SDE_ABGR_2101010 +#define SDE_PIX_FMT_XBGR_2101010 V4L2_PIX_FMT_SDE_XBGR_2101010 +#define SDE_PIX_FMT_RGBA_1010102_UBWC V4L2_PIX_FMT_SDE_RGBA_1010102_UBWC +#define SDE_PIX_FMT_RGBX_1010102_UBWC V4L2_PIX_FMT_SDE_RGBX_1010102_UBWC +#define SDE_PIX_FMT_Y_CBCR_H2V2_P010 V4L2_PIX_FMT_SDE_Y_CBCR_H2V2_P010 +#define SDE_PIX_FMT_Y_CBCR_H2V2_TP10 V4L2_PIX_FMT_SDE_Y_CBCR_H2V2_TP10 #define SDE_PIX_FMT_Y_CBCR_H2V2_TP10_UBWC V4L2_PIX_FMT_NV12_TP10_UBWC /** |
