From e153a85adc0b76c963c272e183d9566e1a087d3a Mon Sep 17 00:00:00 2001 From: Ingrid Gallardo Date: Wed, 4 Feb 2015 15:50:12 -0800 Subject: [PATCH] msm: mdss: reduce rotator fps for high resolution For 4k video playback, video only expects to decode at 30fps for current target. This means that rotator is only expected to run at 30fps for 4k resolutions, this change considers this for the rotator bandwidth calculation in order to optimize the bandwith vote. Change-Id: I416a5f2bda00bdd962fa7d26fba2ed19f4247d81 Signed-off-by: Ingrid Gallardo (cherry picked from commit 440c2184e5c29db07de5c5bcf7036bf7b6fc5a3d) [veerascodeaurora.org: Resolve merge conflict in mdss_mdp_ctl.c] Signed-off-by: Veera Sundaram Sankaran --- drivers/video/fbdev/msm/mdss_mdp_ctl.c | 17 +++++++++++++++-- drivers/video/fbdev/msm/mdss_panel.h | 1 + 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/drivers/video/fbdev/msm/mdss_mdp_ctl.c b/drivers/video/fbdev/msm/mdss_mdp_ctl.c index e6b9878592fd..9f91ea939437 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_ctl.c +++ b/drivers/video/fbdev/msm/mdss_mdp_ctl.c @@ -567,6 +567,20 @@ static u32 apply_overhead_factors(u32 quota, } return overhead_quota; +}; + +static u32 mdss_mdp_get_rotator_fps(struct mdss_mdp_pipe *pipe) +{ + struct mdss_data_type *mdata = mdss_mdp_get_mdata(); + u32 fps = DEFAULT_FRAME_RATE; + + if (mdata->traffic_shaper_en) + fps = DEFAULT_ROTATOR_FRAME_RATE; + + if (pipe->src.w >= 3840 || pipe->src.h >= 3840) + fps = ROTATOR_LOW_FRAME_RATE; + + return fps; } /** @@ -614,8 +628,7 @@ int mdss_mdp_perf_calc_pipe(struct mdss_mdp_pipe *pipe, src = pipe->src; if (mixer->rotator_mode) { - if (mdata->traffic_shaper_en) - fps = DEFAULT_ROTATOR_FRAME_RATE; + fps = mdss_mdp_get_rotator_fps(pipe); } else if (mixer->type == MDSS_MDP_MIXER_TYPE_INTF) { struct mdss_panel_info *pinfo; diff --git a/drivers/video/fbdev/msm/mdss_panel.h b/drivers/video/fbdev/msm/mdss_panel.h index 83fd7c3dc69a..c0f36351576f 100644 --- a/drivers/video/fbdev/msm/mdss_panel.h +++ b/drivers/video/fbdev/msm/mdss_panel.h @@ -27,6 +27,7 @@ struct panel_id { #define DEFAULT_FRAME_RATE 60 #define DEFAULT_ROTATOR_FRAME_RATE 120 +#define ROTATOR_LOW_FRAME_RATE 30 #define MDSS_DSI_RST_SEQ_LEN 10 #define MDSS_MDP_MAX_FETCH 12