Loading drivers/video/msm/mdss/mdss.h +1 −0 Original line number Diff line number Diff line Loading @@ -171,6 +171,7 @@ enum mdss_hw_capabilities { MDSS_CAPS_MIXER_1_FOR_WB, MDSS_CAPS_QSEED3, MDSS_CAPS_DEST_SCALER, MDSS_CAPS_10_BIT_SUPPORTED, MDSS_CAPS_MAX, }; Loading drivers/video/msm/mdss/mdss_mdp.c +3 −2 Original line number Diff line number Diff line Loading @@ -1487,6 +1487,7 @@ static void mdss_mdp_hw_rev_caps_init(struct mdss_data_type *mdata) mdss_set_quirk(mdata, MDSS_QUIRK_DSC_RIGHT_ONLY_PU); mdss_set_quirk(mdata, MDSS_QUIRK_DSC_2SLICE_PU_THRPUT); mdata->has_wb_ubwc = true; set_bit(MDSS_CAPS_10_BIT_SUPPORTED, mdata->mdss_caps_map); break; default: mdata->max_target_zorder = 4; /* excluding base layer */ Loading Loading @@ -1843,7 +1844,7 @@ static void __update_sspp_info(struct mdss_mdp_pipe *pipe, int i; int j; size_t len = PAGE_SIZE; int num_bytes = BITS_TO_BYTES(MDP_IMGTYPE_LIMIT); int num_bytes = BITS_TO_BYTES(MDP_IMGTYPE_LIMIT1); #define SPRINT(fmt, ...) \ (*cnt += scnprintf(buf + *cnt, len - *cnt, fmt, ##__VA_ARGS__)) Loading Loading @@ -1881,7 +1882,7 @@ static void mdss_mdp_update_wb_info(struct mdss_data_type *mdata, (*cnt += scnprintf(buf + *cnt, len - *cnt, fmt, ##__VA_ARGS__)) size_t len = PAGE_SIZE; int i; int num_bytes = BITS_TO_BYTES(MDP_IMGTYPE_LIMIT); int num_bytes = BITS_TO_BYTES(MDP_IMGTYPE_LIMIT1); SPRINT("rot_input_fmts="); for (i = 0; i < num_bytes && mdata->wb; i++) Loading drivers/video/msm/mdss/mdss_mdp.h +4 −3 Original line number Diff line number Diff line Loading @@ -245,8 +245,8 @@ struct mdss_mdp_writeback { char __iomem *base; u32 caps; struct kref kref; u8 supported_input_formats[BITS_TO_BYTES(MDP_IMGTYPE_LIMIT)]; u8 supported_output_formats[BITS_TO_BYTES(MDP_IMGTYPE_LIMIT)]; u8 supported_input_formats[BITS_TO_BYTES(MDP_IMGTYPE_LIMIT1)]; u8 supported_output_formats[BITS_TO_BYTES(MDP_IMGTYPE_LIMIT1)]; }; struct mdss_mdp_ctl_intfs_ops { Loading Loading @@ -432,6 +432,7 @@ struct mdss_mdp_format_params { u8 fetch_mode; u8 bits[MAX_PLANES]; u8 element[MAX_PLANES]; u8 unpack_dx_format; /*1 for 10 bit format otherwise 0 */ }; struct mdss_mdp_format_ubwc_tile_info { Loading Loading @@ -646,7 +647,7 @@ struct mdss_mdp_pipe { wait_queue_head_t free_waitq; u32 frame_rate; u8 csc_coeff_set; u8 supported_formats[BITS_TO_BYTES(MDP_IMGTYPE_LIMIT)]; u8 supported_formats[BITS_TO_BYTES(MDP_IMGTYPE_LIMIT1)]; }; struct mdss_mdp_writeback_arg { Loading drivers/video/msm/mdss/mdss_mdp_debug.c +1 −1 Original line number Diff line number Diff line Loading @@ -1066,7 +1066,7 @@ static void __dump_pipe(struct seq_file *s, struct mdss_mdp_pipe *pipe) smps[0], smps[1], smps[2], smps[3]); seq_puts(s, "\tSupported formats = "); for (i = 0; i < BITS_TO_BYTES(MDP_IMGTYPE_LIMIT); i++) for (i = 0; i < BITS_TO_BYTES(MDP_IMGTYPE_LIMIT1); i++) seq_printf(s, "0x%02X ", pipe->supported_formats[i]); seq_puts(s, "\n"); Loading drivers/video/msm/mdss/mdss_mdp_formats.h +93 −0 Original line number Diff line number Diff line Loading @@ -171,6 +171,44 @@ enum { }, \ } #define FMT_RGB_2101010(fmt, fetch_type, flag_arg, \ alpha_en, e0, e1, e2, e3) \ { \ .format = (fmt), \ .flag = flag_arg, \ .fetch_planes = MDSS_MDP_PLANE_INTERLEAVED, \ .unpack_tight = 1, \ .unpack_align_msb = 0, \ .alpha_enable = (alpha_en), \ .unpack_count = 4, \ .bpp = 4, \ .fetch_mode = (fetch_type), \ .element = { (e0), (e1), (e2), (e3) }, \ .bits = { \ [C3_ALPHA] = COLOR_8BIT, \ [C2_R_Cr] = COLOR_8BIT, \ [C0_G_Y] = COLOR_8BIT, \ [C1_B_Cb] = COLOR_8BIT, \ }, \ .unpack_dx_format = 1, \ } #define FMT_YUV_PSEUDO_10(fmt, fetch_type, samp, \ flag_arg, e0, e1, unpack_type, unpack_align) \ { \ FMT_YUV_COMMON(fmt), \ .flag = flag_arg, \ .fetch_planes = MDSS_MDP_PLANE_PSEUDO_PLANAR, \ .chroma_sample = samp, \ .unpack_count = 2, \ .bpp = 2, \ .fetch_mode = (fetch_type), \ .element = { (e0), (e1) }, \ .unpack_dx_format = 1, \ .unpack_tight = unpack_type, \ .unpack_align_msb = unpack_align, \ } /* * UBWC formats table: * This table holds the UBWC formats supported. Loading Loading @@ -218,6 +256,36 @@ static struct mdss_mdp_format_params_ubwc mdss_mdp_format_ubwc_map[] = { .tile_width = 32, }, }, { .mdp_format = FMT_RGB_2101010(MDP_RGBA_1010102_UBWC, MDSS_MDP_FETCH_UBWC, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, 1, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), .micro = { .tile_height = 4, .tile_width = 16, }, }, { .mdp_format = FMT_RGB_2101010(MDP_RGBX_1010102_UBWC, MDSS_MDP_FETCH_UBWC, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, 0, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), .micro = { .tile_height = 4, .tile_width = 16, }, }, { .mdp_format = FMT_YUV_PSEUDO_10(MDP_Y_CBCR_H2V2_TP10_UBWC, MDSS_MDP_FETCH_UBWC, MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, C1_B_Cb, C2_R_Cr, 1, 0), .micro = { .tile_height = 4, .tile_width = 48, }, }, }; static struct mdss_mdp_format_params mdss_mdp_format_map[] = { Loading Loading @@ -346,5 +414,30 @@ static struct mdss_mdp_format_params mdss_mdp_format_map[] = { 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), FMT_RGB_2101010(MDP_RGBA_1010102, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, 1, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), FMT_RGB_2101010(MDP_ARGB_2101010, MDSS_MDP_FETCH_LINEAR, 0, 1, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb), FMT_RGB_2101010(MDP_RGBX_1010102, 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_2101010(MDP_XRGB_2101010, MDSS_MDP_FETCH_LINEAR, 0, 0, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb), FMT_RGB_2101010(MDP_BGRA_1010102, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, 1, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA), FMT_RGB_2101010(MDP_ABGR_2101010, MDSS_MDP_FETCH_LINEAR, 0, 1, C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr), FMT_RGB_2101010(MDP_BGRX_1010102, 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_2101010(MDP_XBGR_2101010, MDSS_MDP_FETCH_LINEAR, 0, 0, C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr), FMT_YUV_PSEUDO_10(MDP_Y_CBCR_H2V2_P010, MDSS_MDP_FETCH_LINEAR, MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT, C1_B_Cb, C2_R_Cr, 0, 1), }; #endif Loading
drivers/video/msm/mdss/mdss.h +1 −0 Original line number Diff line number Diff line Loading @@ -171,6 +171,7 @@ enum mdss_hw_capabilities { MDSS_CAPS_MIXER_1_FOR_WB, MDSS_CAPS_QSEED3, MDSS_CAPS_DEST_SCALER, MDSS_CAPS_10_BIT_SUPPORTED, MDSS_CAPS_MAX, }; Loading
drivers/video/msm/mdss/mdss_mdp.c +3 −2 Original line number Diff line number Diff line Loading @@ -1487,6 +1487,7 @@ static void mdss_mdp_hw_rev_caps_init(struct mdss_data_type *mdata) mdss_set_quirk(mdata, MDSS_QUIRK_DSC_RIGHT_ONLY_PU); mdss_set_quirk(mdata, MDSS_QUIRK_DSC_2SLICE_PU_THRPUT); mdata->has_wb_ubwc = true; set_bit(MDSS_CAPS_10_BIT_SUPPORTED, mdata->mdss_caps_map); break; default: mdata->max_target_zorder = 4; /* excluding base layer */ Loading Loading @@ -1843,7 +1844,7 @@ static void __update_sspp_info(struct mdss_mdp_pipe *pipe, int i; int j; size_t len = PAGE_SIZE; int num_bytes = BITS_TO_BYTES(MDP_IMGTYPE_LIMIT); int num_bytes = BITS_TO_BYTES(MDP_IMGTYPE_LIMIT1); #define SPRINT(fmt, ...) \ (*cnt += scnprintf(buf + *cnt, len - *cnt, fmt, ##__VA_ARGS__)) Loading Loading @@ -1881,7 +1882,7 @@ static void mdss_mdp_update_wb_info(struct mdss_data_type *mdata, (*cnt += scnprintf(buf + *cnt, len - *cnt, fmt, ##__VA_ARGS__)) size_t len = PAGE_SIZE; int i; int num_bytes = BITS_TO_BYTES(MDP_IMGTYPE_LIMIT); int num_bytes = BITS_TO_BYTES(MDP_IMGTYPE_LIMIT1); SPRINT("rot_input_fmts="); for (i = 0; i < num_bytes && mdata->wb; i++) Loading
drivers/video/msm/mdss/mdss_mdp.h +4 −3 Original line number Diff line number Diff line Loading @@ -245,8 +245,8 @@ struct mdss_mdp_writeback { char __iomem *base; u32 caps; struct kref kref; u8 supported_input_formats[BITS_TO_BYTES(MDP_IMGTYPE_LIMIT)]; u8 supported_output_formats[BITS_TO_BYTES(MDP_IMGTYPE_LIMIT)]; u8 supported_input_formats[BITS_TO_BYTES(MDP_IMGTYPE_LIMIT1)]; u8 supported_output_formats[BITS_TO_BYTES(MDP_IMGTYPE_LIMIT1)]; }; struct mdss_mdp_ctl_intfs_ops { Loading Loading @@ -432,6 +432,7 @@ struct mdss_mdp_format_params { u8 fetch_mode; u8 bits[MAX_PLANES]; u8 element[MAX_PLANES]; u8 unpack_dx_format; /*1 for 10 bit format otherwise 0 */ }; struct mdss_mdp_format_ubwc_tile_info { Loading Loading @@ -646,7 +647,7 @@ struct mdss_mdp_pipe { wait_queue_head_t free_waitq; u32 frame_rate; u8 csc_coeff_set; u8 supported_formats[BITS_TO_BYTES(MDP_IMGTYPE_LIMIT)]; u8 supported_formats[BITS_TO_BYTES(MDP_IMGTYPE_LIMIT1)]; }; struct mdss_mdp_writeback_arg { Loading
drivers/video/msm/mdss/mdss_mdp_debug.c +1 −1 Original line number Diff line number Diff line Loading @@ -1066,7 +1066,7 @@ static void __dump_pipe(struct seq_file *s, struct mdss_mdp_pipe *pipe) smps[0], smps[1], smps[2], smps[3]); seq_puts(s, "\tSupported formats = "); for (i = 0; i < BITS_TO_BYTES(MDP_IMGTYPE_LIMIT); i++) for (i = 0; i < BITS_TO_BYTES(MDP_IMGTYPE_LIMIT1); i++) seq_printf(s, "0x%02X ", pipe->supported_formats[i]); seq_puts(s, "\n"); Loading
drivers/video/msm/mdss/mdss_mdp_formats.h +93 −0 Original line number Diff line number Diff line Loading @@ -171,6 +171,44 @@ enum { }, \ } #define FMT_RGB_2101010(fmt, fetch_type, flag_arg, \ alpha_en, e0, e1, e2, e3) \ { \ .format = (fmt), \ .flag = flag_arg, \ .fetch_planes = MDSS_MDP_PLANE_INTERLEAVED, \ .unpack_tight = 1, \ .unpack_align_msb = 0, \ .alpha_enable = (alpha_en), \ .unpack_count = 4, \ .bpp = 4, \ .fetch_mode = (fetch_type), \ .element = { (e0), (e1), (e2), (e3) }, \ .bits = { \ [C3_ALPHA] = COLOR_8BIT, \ [C2_R_Cr] = COLOR_8BIT, \ [C0_G_Y] = COLOR_8BIT, \ [C1_B_Cb] = COLOR_8BIT, \ }, \ .unpack_dx_format = 1, \ } #define FMT_YUV_PSEUDO_10(fmt, fetch_type, samp, \ flag_arg, e0, e1, unpack_type, unpack_align) \ { \ FMT_YUV_COMMON(fmt), \ .flag = flag_arg, \ .fetch_planes = MDSS_MDP_PLANE_PSEUDO_PLANAR, \ .chroma_sample = samp, \ .unpack_count = 2, \ .bpp = 2, \ .fetch_mode = (fetch_type), \ .element = { (e0), (e1) }, \ .unpack_dx_format = 1, \ .unpack_tight = unpack_type, \ .unpack_align_msb = unpack_align, \ } /* * UBWC formats table: * This table holds the UBWC formats supported. Loading Loading @@ -218,6 +256,36 @@ static struct mdss_mdp_format_params_ubwc mdss_mdp_format_ubwc_map[] = { .tile_width = 32, }, }, { .mdp_format = FMT_RGB_2101010(MDP_RGBA_1010102_UBWC, MDSS_MDP_FETCH_UBWC, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, 1, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), .micro = { .tile_height = 4, .tile_width = 16, }, }, { .mdp_format = FMT_RGB_2101010(MDP_RGBX_1010102_UBWC, MDSS_MDP_FETCH_UBWC, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, 0, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), .micro = { .tile_height = 4, .tile_width = 16, }, }, { .mdp_format = FMT_YUV_PSEUDO_10(MDP_Y_CBCR_H2V2_TP10_UBWC, MDSS_MDP_FETCH_UBWC, MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, C1_B_Cb, C2_R_Cr, 1, 0), .micro = { .tile_height = 4, .tile_width = 48, }, }, }; static struct mdss_mdp_format_params mdss_mdp_format_map[] = { Loading Loading @@ -346,5 +414,30 @@ static struct mdss_mdp_format_params mdss_mdp_format_map[] = { 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), FMT_RGB_2101010(MDP_RGBA_1010102, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, 1, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), FMT_RGB_2101010(MDP_ARGB_2101010, MDSS_MDP_FETCH_LINEAR, 0, 1, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb), FMT_RGB_2101010(MDP_RGBX_1010102, 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_2101010(MDP_XRGB_2101010, MDSS_MDP_FETCH_LINEAR, 0, 0, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb), FMT_RGB_2101010(MDP_BGRA_1010102, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, 1, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA), FMT_RGB_2101010(MDP_ABGR_2101010, MDSS_MDP_FETCH_LINEAR, 0, 1, C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr), FMT_RGB_2101010(MDP_BGRX_1010102, 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_2101010(MDP_XBGR_2101010, MDSS_MDP_FETCH_LINEAR, 0, 0, C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr), FMT_YUV_PSEUDO_10(MDP_Y_CBCR_H2V2_P010, MDSS_MDP_FETCH_LINEAR, MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT, C1_B_Cb, C2_R_Cr, 0, 1), }; #endif