msm: mdss: Disable post processing feature if partial update is enabled
Block all post processing and histogram IOCTLs if partial update sysfs node value is set to true, except for the disabling calls. Change-Id: Ib32a668747569d9ad898f5519d7fd22b9bb41547 Signed-off-by: Ping Li <pingli@codeaurora.org>
This commit is contained in:
parent
2e4141400c
commit
2446a049dd
1 changed files with 70 additions and 0 deletions
|
@ -2695,6 +2695,62 @@ static int mdss_bl_scale_config(struct msm_fb_data_type *mfd,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int mdss_mdp_pp_is_disable_op(struct msmfb_mdp_pp *pp)
|
||||||
|
{
|
||||||
|
int flags = 0, ret = 0;
|
||||||
|
switch (pp->op) {
|
||||||
|
case mdp_op_pa_cfg:
|
||||||
|
flags = pp->data.pa_cfg_data.pa_data.flags;
|
||||||
|
break;
|
||||||
|
case mdp_op_pa_v2_cfg:
|
||||||
|
flags = pp->data.pa_v2_cfg_data.pa_v2_data.flags;
|
||||||
|
break;
|
||||||
|
case mdp_op_pcc_cfg:
|
||||||
|
flags = pp->data.pcc_cfg_data.ops;
|
||||||
|
break;
|
||||||
|
case mdp_op_lut_cfg:
|
||||||
|
switch (pp->data.lut_cfg_data.lut_type) {
|
||||||
|
case mdp_lut_igc:
|
||||||
|
flags = pp->data.lut_cfg_data.data.igc_lut_data.ops;
|
||||||
|
break;
|
||||||
|
case mdp_lut_pgc:
|
||||||
|
flags = pp->data.lut_cfg_data.data.pgc_lut_data.flags;
|
||||||
|
break;
|
||||||
|
case mdp_lut_hist:
|
||||||
|
flags = pp->data.lut_cfg_data.data.hist_lut_data.ops;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case mdp_op_dither_cfg:
|
||||||
|
flags = pp->data.dither_cfg_data.flags;
|
||||||
|
break;
|
||||||
|
case mdp_op_gamut_cfg:
|
||||||
|
flags = pp->data.gamut_cfg_data.flags;
|
||||||
|
break;
|
||||||
|
case mdp_op_ad_cfg:
|
||||||
|
flags = pp->data.ad_init_cfg.ops;
|
||||||
|
break;
|
||||||
|
case mdp_bl_scale_cfg:
|
||||||
|
flags = MDP_PP_OPS_DISABLE;
|
||||||
|
break;
|
||||||
|
case mdp_op_ad_input:
|
||||||
|
case mdp_op_calib_cfg:
|
||||||
|
case mdp_op_calib_mode:
|
||||||
|
case mdp_op_calib_buffer:
|
||||||
|
case mdp_op_calib_dcm_state:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
pr_err("Unsupported request to MDP_PP IOCTL. %d = op\n",
|
||||||
|
pp->op);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (flags & MDP_PP_OPS_DISABLE)
|
||||||
|
ret = 1;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static int mdss_mdp_pp_ioctl(struct msm_fb_data_type *mfd,
|
static int mdss_mdp_pp_ioctl(struct msm_fb_data_type *mfd,
|
||||||
void __user *argp)
|
void __user *argp)
|
||||||
{
|
{
|
||||||
|
@ -2703,6 +2759,7 @@ static int mdss_mdp_pp_ioctl(struct msm_fb_data_type *mfd,
|
||||||
struct mdss_data_type *mdata = mdss_mdp_get_mdata();
|
struct mdss_data_type *mdata = mdss_mdp_get_mdata();
|
||||||
u32 copyback = 0;
|
u32 copyback = 0;
|
||||||
u32 copy_from_kernel = 0;
|
u32 copy_from_kernel = 0;
|
||||||
|
struct mdss_overlay_private *mdp5_data = mfd_to_mdp5_data(mfd);
|
||||||
|
|
||||||
if (!mdata)
|
if (!mdata)
|
||||||
return -EPERM;
|
return -EPERM;
|
||||||
|
@ -2720,6 +2777,12 @@ static int mdss_mdp_pp_ioctl(struct msm_fb_data_type *mfd,
|
||||||
return -EPERM;
|
return -EPERM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mfd->panel_info->partial_update_enabled && mdp5_data->dyn_pu_state
|
||||||
|
&& !mdss_mdp_pp_is_disable_op(&mdp_pp)) {
|
||||||
|
pr_debug("Partial update feature is enabled.\n");
|
||||||
|
return -EPERM;
|
||||||
|
}
|
||||||
|
|
||||||
/* Supprt only MDP register read/write and
|
/* Supprt only MDP register read/write and
|
||||||
exit_dcm in DCM state*/
|
exit_dcm in DCM state*/
|
||||||
if (mfd->dcm_state == DCM_ENTER &&
|
if (mfd->dcm_state == DCM_ENTER &&
|
||||||
|
@ -2832,6 +2895,7 @@ static int mdss_mdp_histo_ioctl(struct msm_fb_data_type *mfd, u32 cmd,
|
||||||
struct mdss_data_type *mdata = mdss_mdp_get_mdata();
|
struct mdss_data_type *mdata = mdss_mdp_get_mdata();
|
||||||
u32 block;
|
u32 block;
|
||||||
static int req = -1;
|
static int req = -1;
|
||||||
|
struct mdss_overlay_private *mdp5_data = mfd_to_mdp5_data(mfd);
|
||||||
|
|
||||||
if (!mdata)
|
if (!mdata)
|
||||||
return -EPERM;
|
return -EPERM;
|
||||||
|
@ -2841,6 +2905,12 @@ static int mdss_mdp_histo_ioctl(struct msm_fb_data_type *mfd, u32 cmd,
|
||||||
return -EPERM;
|
return -EPERM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mfd->panel_info->partial_update_enabled && mdp5_data->dyn_pu_state
|
||||||
|
&& (cmd != MSMFB_HISTOGRAM_STOP)) {
|
||||||
|
pr_err("Partial update feature is enabled.\n");
|
||||||
|
return -EPERM;
|
||||||
|
}
|
||||||
|
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
case MSMFB_HISTOGRAM_START:
|
case MSMFB_HISTOGRAM_START:
|
||||||
if (mdss_fb_is_power_off(mfd))
|
if (mdss_fb_is_power_off(mfd))
|
||||||
|
|
Loading…
Add table
Reference in a new issue