Loading drivers/video/fbdev/msm/mdss_mdp_ctl.c +21 −4 Original line number Diff line number Diff line Loading @@ -2964,6 +2964,7 @@ static u32 __dsc_get_common_mode(struct mdss_mdp_ctl *ctl, bool mux_3d) static void __dsc_get_pic_dim(struct mdss_mdp_mixer *mixer_l, struct mdss_mdp_mixer *mixer_r, u32 *pic_w, u32 *pic_h) { struct mdss_data_type *mdata = NULL; bool valid_l = mixer_l && mixer_l->valid_roi; bool valid_r = mixer_r && mixer_r->valid_roi; Loading @@ -2971,15 +2972,31 @@ static void __dsc_get_pic_dim(struct mdss_mdp_mixer *mixer_l, *pic_h = 0; if (valid_l) { mdata = mixer_l->ctl->mdata; if (test_bit(MDSS_CAPS_DEST_SCALER, mdata->mdss_caps_map) && mixer_l->ds && (mixer_l->ds->flags & DS_ENABLE)) { *pic_w = mixer_l->ds->scaler.dst_width; *pic_h = mixer_l->ds->scaler.dst_height; } else { *pic_w = mixer_l->roi.w; *pic_h = mixer_l->roi.h; } } if (valid_r) { mdata = mixer_r->ctl->mdata; if (test_bit(MDSS_CAPS_DEST_SCALER, mdata->mdss_caps_map) && mixer_r->ds && (mixer_r->ds->flags & DS_ENABLE)) { *pic_w += mixer_r->ds->scaler.dst_width; *pic_h = mixer_r->ds->scaler.dst_height; } else { *pic_w += mixer_r->roi.w; *pic_h = mixer_r->roi.h; } } } static bool __is_ich_reset_override_needed(bool pu_en, struct dsc_desc *dsc) { Loading drivers/video/fbdev/msm/mdss_mdp_layer.c +29 −8 Original line number Diff line number Diff line Loading @@ -137,10 +137,7 @@ static int mdss_mdp_destination_scaler_pre_validate(struct mdss_mdp_ctl *ctl, if ((ds_data->lm_width > get_panel_xres(pinfo)) || (ds_data->lm_height > get_panel_yres(pinfo)) || (ds_data->lm_width == 0) || (ds_data->lm_height == 0) || (is_dsc_compression(pinfo) && !is_lm_configs_dsc_compatible(pinfo, ds_data->lm_width, ds_data->lm_height))) { (ds_data->lm_height == 0)) { pr_err("Invalid left LM {%d,%d} setting\n", ds_data->lm_width, ds_data->lm_height); return -EINVAL; Loading @@ -167,10 +164,7 @@ static int mdss_mdp_destination_scaler_pre_validate(struct mdss_mdp_ctl *ctl, if ((ds_data->lm_width > get_panel_xres(pinfo)) || (ds_data->lm_height > get_panel_yres(pinfo)) || (ds_data->lm_width == 0) || (ds_data->lm_height == 0) || (is_dsc_compression(pinfo) && !is_lm_configs_dsc_compatible(pinfo, ds_data->lm_width, ds_data->lm_height))) { (ds_data->lm_height == 0)) { pr_err("Invalid right LM {%d,%d} setting\n", ds_data->lm_width, ds_data->lm_height); return -EINVAL; Loading Loading @@ -217,6 +211,8 @@ static int mdss_mdp_validate_destination_scaler(struct msm_fb_data_type *mfd, struct mdss_mdp_ctl *ctl; struct mdss_mdp_destination_scaler *ds_left = NULL; struct mdss_mdp_destination_scaler *ds_right = NULL; struct mdss_panel_info *pinfo; u32 scaler_width, scaler_height; if (ds_data) { mdata = mfd_to_mdata(mfd); Loading Loading @@ -293,6 +289,31 @@ static int mdss_mdp_validate_destination_scaler(struct msm_fb_data_type *mfd, if (ds_right) pr_debug("DS_RIGHT: flags=0x%X\n", ds_right->flags); /* * When DSC is enabled, make sure the scaler output dimension is * correctly setup. */ pinfo = &ctl->panel_data->panel_info; scaler_width = 0; scaler_height = 0; if (ds_left && ds_left->flags) { scaler_width += ds_left->scaler.dst_width; scaler_height = ds_left->scaler.dst_height; } if (ds_right && ds_right->flags) { scaler_width += ds_right->scaler.dst_width; scaler_height = ds_right->scaler.dst_height; } pr_debug("DS output dimension: %dx%d\n", scaler_width, scaler_height); if (ds_data[0].flags && (is_dsc_compression(pinfo) && !is_lm_configs_dsc_compatible(pinfo, scaler_width, scaler_height))) { pr_err("Invalid Dest-scaler output width/height: %d/%d\n", scaler_width, scaler_height); ret = -EINVAL; } return ret; } Loading Loading
drivers/video/fbdev/msm/mdss_mdp_ctl.c +21 −4 Original line number Diff line number Diff line Loading @@ -2964,6 +2964,7 @@ static u32 __dsc_get_common_mode(struct mdss_mdp_ctl *ctl, bool mux_3d) static void __dsc_get_pic_dim(struct mdss_mdp_mixer *mixer_l, struct mdss_mdp_mixer *mixer_r, u32 *pic_w, u32 *pic_h) { struct mdss_data_type *mdata = NULL; bool valid_l = mixer_l && mixer_l->valid_roi; bool valid_r = mixer_r && mixer_r->valid_roi; Loading @@ -2971,15 +2972,31 @@ static void __dsc_get_pic_dim(struct mdss_mdp_mixer *mixer_l, *pic_h = 0; if (valid_l) { mdata = mixer_l->ctl->mdata; if (test_bit(MDSS_CAPS_DEST_SCALER, mdata->mdss_caps_map) && mixer_l->ds && (mixer_l->ds->flags & DS_ENABLE)) { *pic_w = mixer_l->ds->scaler.dst_width; *pic_h = mixer_l->ds->scaler.dst_height; } else { *pic_w = mixer_l->roi.w; *pic_h = mixer_l->roi.h; } } if (valid_r) { mdata = mixer_r->ctl->mdata; if (test_bit(MDSS_CAPS_DEST_SCALER, mdata->mdss_caps_map) && mixer_r->ds && (mixer_r->ds->flags & DS_ENABLE)) { *pic_w += mixer_r->ds->scaler.dst_width; *pic_h = mixer_r->ds->scaler.dst_height; } else { *pic_w += mixer_r->roi.w; *pic_h = mixer_r->roi.h; } } } static bool __is_ich_reset_override_needed(bool pu_en, struct dsc_desc *dsc) { Loading
drivers/video/fbdev/msm/mdss_mdp_layer.c +29 −8 Original line number Diff line number Diff line Loading @@ -137,10 +137,7 @@ static int mdss_mdp_destination_scaler_pre_validate(struct mdss_mdp_ctl *ctl, if ((ds_data->lm_width > get_panel_xres(pinfo)) || (ds_data->lm_height > get_panel_yres(pinfo)) || (ds_data->lm_width == 0) || (ds_data->lm_height == 0) || (is_dsc_compression(pinfo) && !is_lm_configs_dsc_compatible(pinfo, ds_data->lm_width, ds_data->lm_height))) { (ds_data->lm_height == 0)) { pr_err("Invalid left LM {%d,%d} setting\n", ds_data->lm_width, ds_data->lm_height); return -EINVAL; Loading @@ -167,10 +164,7 @@ static int mdss_mdp_destination_scaler_pre_validate(struct mdss_mdp_ctl *ctl, if ((ds_data->lm_width > get_panel_xres(pinfo)) || (ds_data->lm_height > get_panel_yres(pinfo)) || (ds_data->lm_width == 0) || (ds_data->lm_height == 0) || (is_dsc_compression(pinfo) && !is_lm_configs_dsc_compatible(pinfo, ds_data->lm_width, ds_data->lm_height))) { (ds_data->lm_height == 0)) { pr_err("Invalid right LM {%d,%d} setting\n", ds_data->lm_width, ds_data->lm_height); return -EINVAL; Loading Loading @@ -217,6 +211,8 @@ static int mdss_mdp_validate_destination_scaler(struct msm_fb_data_type *mfd, struct mdss_mdp_ctl *ctl; struct mdss_mdp_destination_scaler *ds_left = NULL; struct mdss_mdp_destination_scaler *ds_right = NULL; struct mdss_panel_info *pinfo; u32 scaler_width, scaler_height; if (ds_data) { mdata = mfd_to_mdata(mfd); Loading Loading @@ -293,6 +289,31 @@ static int mdss_mdp_validate_destination_scaler(struct msm_fb_data_type *mfd, if (ds_right) pr_debug("DS_RIGHT: flags=0x%X\n", ds_right->flags); /* * When DSC is enabled, make sure the scaler output dimension is * correctly setup. */ pinfo = &ctl->panel_data->panel_info; scaler_width = 0; scaler_height = 0; if (ds_left && ds_left->flags) { scaler_width += ds_left->scaler.dst_width; scaler_height = ds_left->scaler.dst_height; } if (ds_right && ds_right->flags) { scaler_width += ds_right->scaler.dst_width; scaler_height = ds_right->scaler.dst_height; } pr_debug("DS output dimension: %dx%d\n", scaler_width, scaler_height); if (ds_data[0].flags && (is_dsc_compression(pinfo) && !is_lm_configs_dsc_compatible(pinfo, scaler_width, scaler_height))) { pr_err("Invalid Dest-scaler output width/height: %d/%d\n", scaler_width, scaler_height); ret = -EINVAL; } return ret; } Loading