From 71780d1d497a073f5d666ec5f3df06e42f5ea52b Mon Sep 17 00:00:00 2001 From: Ingrid Gallardo Date: Mon, 19 Sep 2016 15:36:59 -0700 Subject: [PATCH] msm: mdss: disable Client Driven Prefetch Client Driven Prefetch is enabled by Default in HW and SW whereas the recommended configuration is to disable this feature. This change makes sure that driver disables this feature in msmcobalt and only enables the feature for targets that need to keep it enabled. Change-Id: I34c4feb0297838889cc2505eb3e08516165c5f2f Signed-off-by: Ingrid Gallardo --- drivers/video/fbdev/msm/mdss.h | 1 + drivers/video/fbdev/msm/mdss_mdp.c | 6 ++++-- drivers/video/fbdev/msm/mdss_mdp_pipe.c | 5 +++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/video/fbdev/msm/mdss.h b/drivers/video/fbdev/msm/mdss.h index 609a7aed4977..4d03920db005 100644 --- a/drivers/video/fbdev/msm/mdss.h +++ b/drivers/video/fbdev/msm/mdss.h @@ -405,6 +405,7 @@ struct mdss_data_type { u32 enable_gate; u32 enable_bw_release; u32 enable_rotator_bw_release; + u32 enable_cdp; u32 serialize_wait4pp; u32 wait4autorefresh; u32 lines_before_active; diff --git a/drivers/video/fbdev/msm/mdss_mdp.c b/drivers/video/fbdev/msm/mdss_mdp.c index 1b5c1b7d51e1..b7e6f778f367 100644 --- a/drivers/video/fbdev/msm/mdss_mdp.c +++ b/drivers/video/fbdev/msm/mdss_mdp.c @@ -1883,7 +1883,8 @@ static void mdss_mdp_hw_rev_caps_init(struct mdss_data_type *mdata) mdata->pixel_ram_size = 50 * 1024; set_bit(MDSS_QOS_PER_PIPE_IB, mdata->mdss_qos_map); set_bit(MDSS_QOS_OVERHEAD_FACTOR, mdata->mdss_qos_map); - set_bit(MDSS_QOS_CDP, mdata->mdss_qos_map); + set_bit(MDSS_QOS_CDP, mdata->mdss_qos_map); /* cdp supported */ + mdata->enable_cdp = true; /* enable cdp */ set_bit(MDSS_QOS_OTLIM, mdata->mdss_qos_map); set_bit(MDSS_QOS_PER_PIPE_LUT, mdata->mdss_qos_map); set_bit(MDSS_QOS_SIMPLIFIED_PREFILL, mdata->mdss_qos_map); @@ -1978,7 +1979,8 @@ static void mdss_mdp_hw_rev_caps_init(struct mdss_data_type *mdata) set_bit(MDSS_QOS_PER_PIPE_IB, mdata->mdss_qos_map); set_bit(MDSS_QOS_REMAPPER, mdata->mdss_qos_map); set_bit(MDSS_QOS_OVERHEAD_FACTOR, mdata->mdss_qos_map); - set_bit(MDSS_QOS_CDP, mdata->mdss_qos_map); + set_bit(MDSS_QOS_CDP, mdata->mdss_qos_map); /* cdp supported */ + mdata->enable_cdp = false; /* disable cdp */ set_bit(MDSS_QOS_OTLIM, mdata->mdss_qos_map); set_bit(MDSS_QOS_PER_PIPE_LUT, mdata->mdss_qos_map); set_bit(MDSS_QOS_SIMPLIFIED_PREFILL, mdata->mdss_qos_map); diff --git a/drivers/video/fbdev/msm/mdss_mdp_pipe.c b/drivers/video/fbdev/msm/mdss_mdp_pipe.c index 1eb695200dfe..8f211a977aa4 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_pipe.c +++ b/drivers/video/fbdev/msm/mdss_mdp_pipe.c @@ -2066,8 +2066,9 @@ static void mdss_mdp_set_pipe_cdp(struct mdss_mdp_pipe *pipe) u32 cdp_settings = 0x0; bool is_rotator = (pipe->mixer_left && pipe->mixer_left->rotator_mode); - /* Disable CDP for rotator pipe in v1 */ - if (is_rotator && mdss_has_quirk(mdata, MDSS_QUIRK_ROTCDP)) + /* Disable CDP for rotator pipe or if not requested for the target */ + if (!mdata->enable_cdp || (is_rotator && + mdss_has_quirk(mdata, MDSS_QUIRK_ROTCDP))) goto exit; cdp_settings = MDSS_MDP_CDP_ENABLE;