From 474828cd364aeec55aec204e95e0b552ba12514d Mon Sep 17 00:00:00 2001 From: Benet Clark Date: Fri, 1 Apr 2016 10:45:46 -0700 Subject: [PATCH] msm: mdss: Add newly supported writeback formats to MDP driver Writeback display now supports more MDP formats. This change adds the definitions for those formats. CRs-Fixed: 978785 Change-Id: I72fc29a8d7b286b0766c0483ba69d6e02d29b661 Signed-off-by: Benet Clark --- drivers/video/fbdev/msm/mdss_mdp_formats.h | 72 +++++++++++++++++++++++++----- include/uapi/linux/msm_mdp.h | 3 ++ 2 files changed, 65 insertions(+), 10 deletions(-) diff --git a/drivers/video/fbdev/msm/mdss_mdp_formats.h b/drivers/video/fbdev/msm/mdss_mdp_formats.h index 1865720ead06..a3a3434c9044 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_formats.h +++ b/drivers/video/fbdev/msm/mdss_mdp_formats.h @@ -306,17 +306,26 @@ static struct mdss_mdp_format_params mdss_mdp_format_map[] = { VALID_MDP_WB_INTF_FORMAT | VALID_MDP_CURSOR_FORMAT, 0, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb), FMT_RGB_8888(MDP_ARGB_8888, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT | - VALID_MDP_CURSOR_FORMAT, 1, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb), + VALID_MDP_CURSOR_FORMAT | VALID_MDP_WB_INTF_FORMAT, + 1, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb), + FMT_RGB_8888(MDP_ABGR_8888, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT | + VALID_MDP_WB_INTF_FORMAT, 1, + C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr), FMT_RGB_8888(MDP_RGBA_8888, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT | - VALID_MDP_CURSOR_FORMAT, 1, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), + VALID_MDP_CURSOR_FORMAT | VALID_MDP_WB_INTF_FORMAT, 1, + C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), FMT_RGB_8888(MDP_RGBX_8888, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, 0, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), FMT_RGB_8888(MDP_BGRA_8888, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT | - VALID_MDP_CURSOR_FORMAT, 1, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA), + VALID_MDP_CURSOR_FORMAT | VALID_MDP_WB_INTF_FORMAT, + 1, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA), FMT_RGB_8888(MDP_BGRX_8888, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, 0, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA), + FMT_RGB_8888(MDP_XBGR_8888, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT | + VALID_MDP_WB_INTF_FORMAT, 0, C3_ALPHA, C1_B_Cb, C0_G_Y, + C2_R_Cr), FMT_RGB_8888(MDP_RGBA_8888_TILE, MDSS_MDP_FETCH_TILE, VALID_ROT_WB_FORMAT, 1, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), FMT_RGB_8888(MDP_ARGB_8888_TILE, MDSS_MDP_FETCH_TILE, @@ -341,11 +350,14 @@ static struct mdss_mdp_format_params mdss_mdp_format_map[] = { FMT_YUV_PSEUDO(MDP_Y_CRCB_H2V1, MDSS_MDP_FETCH_LINEAR, MDSS_MDP_CHROMA_H2V1, VALID_ROT_WB_FORMAT, C2_R_Cr, C1_B_Cb), FMT_YUV_PSEUDO(MDP_Y_CBCR_H2V1, MDSS_MDP_FETCH_LINEAR, - MDSS_MDP_CHROMA_H2V1, VALID_ROT_WB_FORMAT, C1_B_Cb, C2_R_Cr), + MDSS_MDP_CHROMA_H2V1, VALID_ROT_WB_FORMAT | + VALID_MDP_WB_INTF_FORMAT, C1_B_Cb, C2_R_Cr), FMT_YUV_PSEUDO(MDP_Y_CRCB_H1V2, MDSS_MDP_FETCH_LINEAR, - MDSS_MDP_CHROMA_H1V2, VALID_ROT_WB_FORMAT, C2_R_Cr, C1_B_Cb), + MDSS_MDP_CHROMA_H1V2, VALID_ROT_WB_FORMAT | + VALID_MDP_WB_INTF_FORMAT, C2_R_Cr, C1_B_Cb), FMT_YUV_PSEUDO(MDP_Y_CBCR_H1V2, MDSS_MDP_FETCH_LINEAR, - MDSS_MDP_CHROMA_H1V2, VALID_ROT_WB_FORMAT, C1_B_Cb, C2_R_Cr), + MDSS_MDP_CHROMA_H1V2, VALID_ROT_WB_FORMAT | + VALID_MDP_WB_INTF_FORMAT, C1_B_Cb, C2_R_Cr), FMT_YUV_PSEUDO(MDP_Y_CRCB_H2V2, MDSS_MDP_FETCH_LINEAR, MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, C2_R_Cr, C1_B_Cb), @@ -398,6 +410,7 @@ static struct mdss_mdp_format_params mdss_mdp_format_map[] = { }, { FMT_YUV_COMMON(MDP_YCBYCR_H2V1), + .flag = VALID_MDP_WB_INTF_FORMAT, .fetch_planes = MDSS_MDP_PLANE_INTERLEAVED, .chroma_sample = MDSS_MDP_CHROMA_H2V1, .unpack_count = 4, @@ -405,14 +418,53 @@ static struct mdss_mdp_format_params mdss_mdp_format_map[] = { .fetch_mode = MDSS_MDP_FETCH_LINEAR, .element = { C2_R_Cr, C0_G_Y, C1_B_Cb, C0_G_Y }, }, + { + FMT_YUV_COMMON(MDP_CRYCBY_H2V1), + .fetch_planes = MDSS_MDP_PLANE_INTERLEAVED, + .chroma_sample = MDSS_MDP_CHROMA_H2V1, + .unpack_count = 4, + .bpp = 2, + .fetch_mode = MDSS_MDP_FETCH_LINEAR, + .element = { C0_G_Y, C1_B_Cb, C0_G_Y, C2_R_Cr }, + }, FMT_RGB_1555(MDP_RGBA_5551, 1, VALID_ROT_WB_FORMAT | - VALID_MDP_CURSOR_FORMAT, C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr), + VALID_MDP_CURSOR_FORMAT | VALID_MDP_WB_INTF_FORMAT, + C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr), FMT_RGB_1555(MDP_ARGB_1555, 1, VALID_ROT_WB_FORMAT | - VALID_MDP_CURSOR_FORMAT, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA), + VALID_MDP_CURSOR_FORMAT | VALID_MDP_WB_INTF_FORMAT, + C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA), + FMT_RGB_1555(MDP_ABGR_1555, 1, VALID_ROT_WB_FORMAT | + VALID_MDP_WB_INTF_FORMAT, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), + FMT_RGB_1555(MDP_BGRA_5551, 1, VALID_ROT_WB_FORMAT | + VALID_MDP_WB_INTF_FORMAT, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb), + FMT_RGB_1555(MDP_BGRX_5551, 0, VALID_ROT_WB_FORMAT | + VALID_MDP_WB_INTF_FORMAT, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb), + FMT_RGB_1555(MDP_RGBX_5551, 0, VALID_ROT_WB_FORMAT | + VALID_MDP_WB_INTF_FORMAT, C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr), + FMT_RGB_1555(MDP_XBGR_1555, 0, VALID_ROT_WB_FORMAT | + VALID_MDP_WB_INTF_FORMAT, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), + FMT_RGB_1555(MDP_XRGB_1555, 0, VALID_ROT_WB_FORMAT | + VALID_MDP_WB_INTF_FORMAT, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA), + FMT_RGB_4444(MDP_ABGR_4444, 1, VALID_ROT_WB_FORMAT | + VALID_MDP_WB_INTF_FORMAT, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), + FMT_RGB_4444(MDP_BGRA_4444, 1, VALID_ROT_WB_FORMAT | + VALID_MDP_CURSOR_FORMAT | VALID_MDP_WB_INTF_FORMAT, + C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb), + FMT_RGB_4444(MDP_BGRX_4444, 0, VALID_ROT_WB_FORMAT | + VALID_MDP_WB_INTF_FORMAT, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb), + FMT_RGB_4444(MDP_RGBX_4444, 0, VALID_ROT_WB_FORMAT | + VALID_MDP_WB_INTF_FORMAT, C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr), + FMT_RGB_4444(MDP_XBGR_4444, 0, VALID_ROT_WB_FORMAT | + VALID_MDP_WB_INTF_FORMAT, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), + FMT_RGB_4444(MDP_XRGB_4444, 0, VALID_ROT_WB_FORMAT | + VALID_MDP_WB_INTF_FORMAT, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA), + FMT_RGB_4444(MDP_RGBA_4444, 1, VALID_ROT_WB_FORMAT | - VALID_MDP_CURSOR_FORMAT, C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr), + VALID_MDP_CURSOR_FORMAT | VALID_MDP_WB_INTF_FORMAT, + C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr), FMT_RGB_4444(MDP_ARGB_4444, 1, VALID_ROT_WB_FORMAT | - VALID_MDP_CURSOR_FORMAT, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA), + VALID_MDP_CURSOR_FORMAT | VALID_MDP_WB_INTF_FORMAT, + C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA), FMT_RGB_2101010(MDP_RGBA_1010102, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, 1, diff --git a/include/uapi/linux/msm_mdp.h b/include/uapi/linux/msm_mdp.h index b4eba416cbc2..56b1476b7e9a 100644 --- a/include/uapi/linux/msm_mdp.h +++ b/include/uapi/linux/msm_mdp.h @@ -213,11 +213,14 @@ enum { MDP_RGBX_1010102_UBWC, MDP_Y_CBCR_H2V2_P010, MDP_Y_CBCR_H2V2_TP10_UBWC, + MDP_CRYCBY_H2V1, /* CrYCbY interleave */ MDP_IMGTYPE_LIMIT1 = MDP_IMGTYPE_END, MDP_FB_FORMAT = MDP_IMGTYPE2_START, /* framebuffer format */ MDP_IMGTYPE_LIMIT2 /* Non valid image type after this enum */ }; +#define MDP_CRYCBY_H2V1 MDP_CRYCBY_H2V1 + enum { PMEM_IMG, FB_IMG, -- 2.11.0