diff --git a/drivers/video/msm/mdss/mdss_mdp_pipe.c b/drivers/video/msm/mdss/mdss_mdp_pipe.c index 5f69c0f6e7e..c68a01cd358 100644 --- a/drivers/video/msm/mdss/mdss_mdp_pipe.c +++ b/drivers/video/msm/mdss/mdss_mdp_pipe.c @@ -334,13 +334,8 @@ int mdss_mdp_smp_reserve(struct mdss_mdp_pipe *pipe) if (pipe->mixer_left->type == MDSS_MDP_MIXER_TYPE_WRITEBACK) wb_mixer = 1; - /* - * Don't want to allow SMP changes for backend composition pipes - * inorder to preserve SMPs as much as possible. - * On the contrary for non backend composition pipes we should - * allow SMP allocations to prevent composition failures. - */ - force_alloc = !(pipe->flags & MDP_BACKEND_COMPOSITION); + force_alloc = pipe->flags & MDP_SMP_FORCE_ALLOC; + mutex_lock(&mdss_mdp_smp_lock); if (!is_unused_smp_allowed()) { for (i = (MAX_PLANES - 1); i >= ps.num_planes; i--) { diff --git a/include/uapi/linux/msm_mdp.h b/include/uapi/linux/msm_mdp.h index b9825604040..86c2d5bada5 100644 --- a/include/uapi/linux/msm_mdp.h +++ b/include/uapi/linux/msm_mdp.h @@ -216,6 +216,7 @@ enum { #define MDP_MEMORY_ID_TYPE_FB 0x00001000 #define MDP_BWC_EN 0x00000400 #define MDP_DECIMATION_EN 0x00000800 +#define MDP_SMP_FORCE_ALLOC 0x00200000 #define MDP_TRANSP_NOP 0xffffffff #define MDP_ALPHA_NOP 0xff