Loading drivers/video/msm/mdss/mdss_mdp.c +9 −0 Original line number Diff line number Diff line Loading @@ -134,6 +134,12 @@ static struct msm_bus_scale_pdata mdp_reg_bus_scale_table = { .active_only = true, }; u32 invalid_mdp107_wb_output_fmts[] = { MDP_XRGB_8888, MDP_RGBX_8888, MDP_BGRX_8888, }; static void mdss_mdp_footswitch_ctrl(struct mdss_data_type *mdata, int on); static int mdss_mdp_parse_dt(struct platform_device *pdev); static int mdss_mdp_parse_dt_pipe(struct platform_device *pdev); Loading Loading @@ -1185,6 +1191,9 @@ static void mdss_mdp_hw_rev_caps_init(struct mdss_data_type *mdata) case MDSS_MDP_HW_REV_107: mdss_set_quirk(mdata, MDSS_QUIRK_ROTCDP); case MDSS_MDP_HW_REV_107_1: mdss_mdp_format_flag_removal(invalid_mdp107_wb_output_fmts, ARRAY_SIZE(invalid_mdp107_wb_output_fmts), VALID_MDP_WB_INTF_FORMAT); case MDSS_MDP_HW_REV_107_2: mdata->max_target_zorder = 7; /* excluding base layer */ mdata->max_cursor_size = 128; Loading drivers/video/msm/mdss/mdss_mdp.h +3 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ #define OVERLAY_MAX 10 #define VALID_ROT_WB_FORMAT BIT(0) #define VALID_MDP_WB_INTF_FORMAT BIT(1) #define C3_ALPHA 3 /* alpha */ #define C2_R_Cr 2 /* R/Cr */ Loading Loading @@ -1219,6 +1220,7 @@ int mdss_mdp_get_rau_strides(u32 w, u32 h, struct mdss_mdp_format_params *fmt, struct mdss_mdp_plane_sizes *ps); void mdss_mdp_data_calc_offset(struct mdss_mdp_data *data, u16 x, u16 y, struct mdss_mdp_plane_sizes *ps, struct mdss_mdp_format_params *fmt); void mdss_mdp_format_flag_removal(u32 *table, u32 num, u32 remove_bits); struct mdss_mdp_format_params *mdss_mdp_get_format_params(u32 format); int mdss_mdp_validate_offset_for_ubwc_format( struct mdss_mdp_format_params *fmt, u16 x, u16 y); Loading Loading @@ -1292,6 +1294,7 @@ struct mdss_mdp_mixer *mdss_mdp_mixer_alloc( struct mdss_mdp_ctl *ctl, u32 type, int mux, int rotator); int mdss_mdp_mixer_free(struct mdss_mdp_mixer *mixer); bool mdss_mdp_is_wb_mdp_intf(u32 num, u32 reg_index); struct mdss_mdp_writeback *mdss_mdp_wb_assign(u32 id, u32 reg_index); struct mdss_mdp_writeback *mdss_mdp_wb_alloc(u32 caps, u32 reg_index); void mdss_mdp_wb_free(struct mdss_mdp_writeback *wb); Loading drivers/video/msm/mdss/mdss_mdp_ctl.c +19 −0 Original line number Diff line number Diff line Loading @@ -4826,6 +4826,25 @@ struct mdss_mdp_writeback *mdss_mdp_wb_alloc(u32 caps, u32 reg_index) return wb; } bool mdss_mdp_is_wb_mdp_intf(u32 num, u32 reg_index) { struct mdss_data_type *mdata = mdss_mdp_get_mdata(); struct mdss_mdp_writeback *wb = NULL; bool wb_virtual_on; wb_virtual_on = (mdata->nctl == mdata->nwb_offsets); if (num >= mdata->nwb || (wb_virtual_on && reg_index >= mdata->nwb_offsets)) return false; wb = mdata->wb + num; if (!wb) return false; return (wb->caps & MDSS_MDP_WB_INTF) ? true : false; } struct mdss_mdp_writeback *mdss_mdp_wb_assign(u32 num, u32 reg_index) { struct mdss_data_type *mdata = mdss_mdp_get_mdata(); Loading drivers/video/msm/mdss/mdss_mdp_formats.h +31 −21 Original line number Diff line number Diff line Loading @@ -217,31 +217,34 @@ static struct mdss_mdp_format_params_ubwc mdss_mdp_format_ubwc_map[] = { }; static struct mdss_mdp_format_params mdss_mdp_format_map[] = { FMT_RGB_565(MDP_RGB_565, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT, C1_B_Cb, C0_G_Y, C2_R_Cr), FMT_RGB_565(MDP_BGR_565, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT, C2_R_Cr, C0_G_Y, C1_B_Cb), FMT_RGB_565(MDP_RGB_565, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, C1_B_Cb, C0_G_Y, C2_R_Cr), FMT_RGB_565(MDP_BGR_565, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, C2_R_Cr, C0_G_Y, C1_B_Cb), FMT_RGB_565(MDP_RGB_565_TILE, MDSS_MDP_FETCH_TILE, VALID_ROT_WB_FORMAT, C1_B_Cb, C0_G_Y, C2_R_Cr), FMT_RGB_565(MDP_BGR_565_TILE, MDSS_MDP_FETCH_TILE, VALID_ROT_WB_FORMAT, C2_R_Cr, C0_G_Y, C1_B_Cb), FMT_RGB_888(MDP_RGB_888, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT, C2_R_Cr, C0_G_Y, C1_B_Cb), FMT_RGB_888(MDP_BGR_888, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT, C1_B_Cb, C0_G_Y, C2_R_Cr), FMT_RGB_888(MDP_RGB_888, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, C2_R_Cr, C0_G_Y, C1_B_Cb), FMT_RGB_888(MDP_BGR_888, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, C1_B_Cb, C0_G_Y, C2_R_Cr), FMT_RGB_8888(MDP_XRGB_8888, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT, 0, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb), FMT_RGB_8888(MDP_XRGB_8888, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_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, 1, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb), FMT_RGB_8888(MDP_RGBA_8888, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_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, 0, 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, 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, 0, 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_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, Loading Loading @@ -272,20 +275,27 @@ static struct mdss_mdp_format_params mdss_mdp_format_map[] = { 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), FMT_YUV_PSEUDO(MDP_Y_CRCB_H2V2, MDSS_MDP_FETCH_LINEAR, MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT, C2_R_Cr, C1_B_Cb), MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, C2_R_Cr, C1_B_Cb), FMT_YUV_PSEUDO(MDP_Y_CBCR_H2V2, MDSS_MDP_FETCH_LINEAR, MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT, C1_B_Cb, C2_R_Cr), MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, C1_B_Cb, C2_R_Cr), FMT_YUV_PSEUDO(MDP_Y_CBCR_H2V2_VENUS, MDSS_MDP_FETCH_LINEAR, MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT, C1_B_Cb, C2_R_Cr), MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, C1_B_Cb, C2_R_Cr), FMT_YUV_PSEUDO(MDP_Y_CRCB_H2V2_VENUS, MDSS_MDP_FETCH_LINEAR, MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT, C2_R_Cr, C1_B_Cb), MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, C2_R_Cr, C1_B_Cb), FMT_YUV_PLANR(MDP_Y_CB_CR_H2V2, MDSS_MDP_FETCH_LINEAR, MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT, C2_R_Cr, C1_B_Cb), MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, C2_R_Cr, C1_B_Cb), FMT_YUV_PLANR(MDP_Y_CR_CB_H2V2, MDSS_MDP_FETCH_LINEAR, MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT, C1_B_Cb, C2_R_Cr), MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, C1_B_Cb, C2_R_Cr), FMT_YUV_PLANR(MDP_Y_CR_CB_GH2V2, MDSS_MDP_FETCH_LINEAR, MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT, C1_B_Cb, C2_R_Cr), MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, C1_B_Cb, C2_R_Cr), { FMT_YUV_COMMON(MDP_YCBCR_H1V1), Loading drivers/video/msm/mdss/mdss_mdp_util.c +25 −0 Original line number Diff line number Diff line Loading @@ -236,6 +236,31 @@ hist_isr_done: return IRQ_HANDLED; } void mdss_mdp_format_flag_removal(u32 *table, u32 num, u32 remove_bits) { struct mdss_mdp_format_params *fmt = NULL; int i, j; if (table == NULL) { pr_err("Null table provided\n"); return; } for (i = 0; i < num; i++) { if (table[i] > MDP_IMGTYPE_LIMIT) { pr_err("Invalid format:%d, idx:%d\n", table[i], i); continue; } for (j = 0; j < ARRAY_SIZE(mdss_mdp_format_map); j++) { fmt = &mdss_mdp_format_map[i]; if (table[i] == fmt->format) { fmt->flag &= ~remove_bits; break; } } } } struct mdss_mdp_format_params *mdss_mdp_get_format_params(u32 format) { struct mdss_mdp_format_params *fmt = NULL; Loading Loading
drivers/video/msm/mdss/mdss_mdp.c +9 −0 Original line number Diff line number Diff line Loading @@ -134,6 +134,12 @@ static struct msm_bus_scale_pdata mdp_reg_bus_scale_table = { .active_only = true, }; u32 invalid_mdp107_wb_output_fmts[] = { MDP_XRGB_8888, MDP_RGBX_8888, MDP_BGRX_8888, }; static void mdss_mdp_footswitch_ctrl(struct mdss_data_type *mdata, int on); static int mdss_mdp_parse_dt(struct platform_device *pdev); static int mdss_mdp_parse_dt_pipe(struct platform_device *pdev); Loading Loading @@ -1185,6 +1191,9 @@ static void mdss_mdp_hw_rev_caps_init(struct mdss_data_type *mdata) case MDSS_MDP_HW_REV_107: mdss_set_quirk(mdata, MDSS_QUIRK_ROTCDP); case MDSS_MDP_HW_REV_107_1: mdss_mdp_format_flag_removal(invalid_mdp107_wb_output_fmts, ARRAY_SIZE(invalid_mdp107_wb_output_fmts), VALID_MDP_WB_INTF_FORMAT); case MDSS_MDP_HW_REV_107_2: mdata->max_target_zorder = 7; /* excluding base layer */ mdata->max_cursor_size = 128; Loading
drivers/video/msm/mdss/mdss_mdp.h +3 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ #define OVERLAY_MAX 10 #define VALID_ROT_WB_FORMAT BIT(0) #define VALID_MDP_WB_INTF_FORMAT BIT(1) #define C3_ALPHA 3 /* alpha */ #define C2_R_Cr 2 /* R/Cr */ Loading Loading @@ -1219,6 +1220,7 @@ int mdss_mdp_get_rau_strides(u32 w, u32 h, struct mdss_mdp_format_params *fmt, struct mdss_mdp_plane_sizes *ps); void mdss_mdp_data_calc_offset(struct mdss_mdp_data *data, u16 x, u16 y, struct mdss_mdp_plane_sizes *ps, struct mdss_mdp_format_params *fmt); void mdss_mdp_format_flag_removal(u32 *table, u32 num, u32 remove_bits); struct mdss_mdp_format_params *mdss_mdp_get_format_params(u32 format); int mdss_mdp_validate_offset_for_ubwc_format( struct mdss_mdp_format_params *fmt, u16 x, u16 y); Loading Loading @@ -1292,6 +1294,7 @@ struct mdss_mdp_mixer *mdss_mdp_mixer_alloc( struct mdss_mdp_ctl *ctl, u32 type, int mux, int rotator); int mdss_mdp_mixer_free(struct mdss_mdp_mixer *mixer); bool mdss_mdp_is_wb_mdp_intf(u32 num, u32 reg_index); struct mdss_mdp_writeback *mdss_mdp_wb_assign(u32 id, u32 reg_index); struct mdss_mdp_writeback *mdss_mdp_wb_alloc(u32 caps, u32 reg_index); void mdss_mdp_wb_free(struct mdss_mdp_writeback *wb); Loading
drivers/video/msm/mdss/mdss_mdp_ctl.c +19 −0 Original line number Diff line number Diff line Loading @@ -4826,6 +4826,25 @@ struct mdss_mdp_writeback *mdss_mdp_wb_alloc(u32 caps, u32 reg_index) return wb; } bool mdss_mdp_is_wb_mdp_intf(u32 num, u32 reg_index) { struct mdss_data_type *mdata = mdss_mdp_get_mdata(); struct mdss_mdp_writeback *wb = NULL; bool wb_virtual_on; wb_virtual_on = (mdata->nctl == mdata->nwb_offsets); if (num >= mdata->nwb || (wb_virtual_on && reg_index >= mdata->nwb_offsets)) return false; wb = mdata->wb + num; if (!wb) return false; return (wb->caps & MDSS_MDP_WB_INTF) ? true : false; } struct mdss_mdp_writeback *mdss_mdp_wb_assign(u32 num, u32 reg_index) { struct mdss_data_type *mdata = mdss_mdp_get_mdata(); Loading
drivers/video/msm/mdss/mdss_mdp_formats.h +31 −21 Original line number Diff line number Diff line Loading @@ -217,31 +217,34 @@ static struct mdss_mdp_format_params_ubwc mdss_mdp_format_ubwc_map[] = { }; static struct mdss_mdp_format_params mdss_mdp_format_map[] = { FMT_RGB_565(MDP_RGB_565, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT, C1_B_Cb, C0_G_Y, C2_R_Cr), FMT_RGB_565(MDP_BGR_565, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT, C2_R_Cr, C0_G_Y, C1_B_Cb), FMT_RGB_565(MDP_RGB_565, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, C1_B_Cb, C0_G_Y, C2_R_Cr), FMT_RGB_565(MDP_BGR_565, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, C2_R_Cr, C0_G_Y, C1_B_Cb), FMT_RGB_565(MDP_RGB_565_TILE, MDSS_MDP_FETCH_TILE, VALID_ROT_WB_FORMAT, C1_B_Cb, C0_G_Y, C2_R_Cr), FMT_RGB_565(MDP_BGR_565_TILE, MDSS_MDP_FETCH_TILE, VALID_ROT_WB_FORMAT, C2_R_Cr, C0_G_Y, C1_B_Cb), FMT_RGB_888(MDP_RGB_888, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT, C2_R_Cr, C0_G_Y, C1_B_Cb), FMT_RGB_888(MDP_BGR_888, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT, C1_B_Cb, C0_G_Y, C2_R_Cr), FMT_RGB_888(MDP_RGB_888, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, C2_R_Cr, C0_G_Y, C1_B_Cb), FMT_RGB_888(MDP_BGR_888, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, C1_B_Cb, C0_G_Y, C2_R_Cr), FMT_RGB_8888(MDP_XRGB_8888, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT, 0, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb), FMT_RGB_8888(MDP_XRGB_8888, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_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, 1, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb), FMT_RGB_8888(MDP_RGBA_8888, MDSS_MDP_FETCH_LINEAR, VALID_ROT_WB_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, 0, 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, 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, 0, 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_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, Loading Loading @@ -272,20 +275,27 @@ static struct mdss_mdp_format_params mdss_mdp_format_map[] = { 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), FMT_YUV_PSEUDO(MDP_Y_CRCB_H2V2, MDSS_MDP_FETCH_LINEAR, MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT, C2_R_Cr, C1_B_Cb), MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, C2_R_Cr, C1_B_Cb), FMT_YUV_PSEUDO(MDP_Y_CBCR_H2V2, MDSS_MDP_FETCH_LINEAR, MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT, C1_B_Cb, C2_R_Cr), MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, C1_B_Cb, C2_R_Cr), FMT_YUV_PSEUDO(MDP_Y_CBCR_H2V2_VENUS, MDSS_MDP_FETCH_LINEAR, MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT, C1_B_Cb, C2_R_Cr), MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, C1_B_Cb, C2_R_Cr), FMT_YUV_PSEUDO(MDP_Y_CRCB_H2V2_VENUS, MDSS_MDP_FETCH_LINEAR, MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT, C2_R_Cr, C1_B_Cb), MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, C2_R_Cr, C1_B_Cb), FMT_YUV_PLANR(MDP_Y_CB_CR_H2V2, MDSS_MDP_FETCH_LINEAR, MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT, C2_R_Cr, C1_B_Cb), MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, C2_R_Cr, C1_B_Cb), FMT_YUV_PLANR(MDP_Y_CR_CB_H2V2, MDSS_MDP_FETCH_LINEAR, MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT, C1_B_Cb, C2_R_Cr), MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, C1_B_Cb, C2_R_Cr), FMT_YUV_PLANR(MDP_Y_CR_CB_GH2V2, MDSS_MDP_FETCH_LINEAR, MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT, C1_B_Cb, C2_R_Cr), MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, C1_B_Cb, C2_R_Cr), { FMT_YUV_COMMON(MDP_YCBCR_H1V1), Loading
drivers/video/msm/mdss/mdss_mdp_util.c +25 −0 Original line number Diff line number Diff line Loading @@ -236,6 +236,31 @@ hist_isr_done: return IRQ_HANDLED; } void mdss_mdp_format_flag_removal(u32 *table, u32 num, u32 remove_bits) { struct mdss_mdp_format_params *fmt = NULL; int i, j; if (table == NULL) { pr_err("Null table provided\n"); return; } for (i = 0; i < num; i++) { if (table[i] > MDP_IMGTYPE_LIMIT) { pr_err("Invalid format:%d, idx:%d\n", table[i], i); continue; } for (j = 0; j < ARRAY_SIZE(mdss_mdp_format_map); j++) { fmt = &mdss_mdp_format_map[i]; if (table[i] == fmt->format) { fmt->flag &= ~remove_bits; break; } } } } struct mdss_mdp_format_params *mdss_mdp_get_format_params(u32 format) { struct mdss_mdp_format_params *fmt = NULL; Loading