mdss: mdp: Constant fetch start across dfps change

Timing engine HW restricts changing programmable fetch
start when off. Fix fetch start in SW drivers.

Change-Id: I8ec80408a4ae36a7dfd963bc570fca9672d12341
Signed-off-by: Animesh Kishore <animeshk@codeaurora.org>
This commit is contained in:
Animesh Kishore 2018-07-04 18:21:04 +05:30
parent c9dc859c2c
commit 6ab8fbb872
3 changed files with 15 additions and 4 deletions

View file

@ -1,4 +1,4 @@
/* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved.
/* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@ -1901,7 +1901,6 @@ static void mdss_mdp_fetch_start_config(struct mdss_mdp_video_ctx *ctx,
mdata = ctl->mdata;
pinfo->prg_fet = mdss_mdp_get_prefetch_lines(pinfo);
if (!pinfo->prg_fet) {
pr_debug("programmable fetch is not needed/supported\n");
@ -2207,6 +2206,8 @@ static int mdss_mdp_video_ctx_setup(struct mdss_mdp_ctl *ctl,
ctx->intf_num);
return -EINVAL;
}
pinfo->prg_fet = mdss_mdp_get_prefetch_lines(pinfo);
mdss_mdp_fetch_start_config(ctx, ctl);
if (test_bit(MDSS_QOS_VBLANK_PANIC_CTRL, mdata->mdss_qos_map))

View file

@ -3367,6 +3367,9 @@ static void cache_initial_timings(struct mdss_panel_data *pdata)
{
if (!pdata->panel_info.default_fps) {
pdata->panel_info.default_prg_fet =
mdss_mdp_get_prefetch_lines(&pdata->panel_info);
/*
* This value will change dynamically once the
* actual dfps update happen in hw.
@ -3439,8 +3442,13 @@ static void dfps_update_panel_params(struct mdss_panel_data *pdata,
dfps_update_fps(&pdata->panel_info, new_fps);
/*
* Fetch start is pinned to default fps.
* Adjust programmable fetch accordingly.
*/
pdata->panel_info.prg_fet =
mdss_mdp_get_prefetch_lines(&pdata->panel_info);
(pdata->panel_info.default_prg_fet) ?
(pdata->panel_info.default_prg_fet + add_v_lines) : 0;
} else if (pdata->panel_info.dfps_update ==
DFPS_IMMEDIATE_PORCH_UPDATE_MODE_HFP) {

View file

@ -1,4 +1,4 @@
/* Copyright (c) 2008-2017, The Linux Foundation. All rights reserved.
/* Copyright (c) 2008-2018, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@ -814,6 +814,8 @@ struct mdss_panel_info {
int new_fps;
/* stores initial fps after boot */
u32 default_fps;
/* store programmable fetch corresponding to default fps */
u32 default_prg_fet;
/* stores initial vtotal (vfp-method) or htotal (hfp-method) */
u32 saved_total;
/* stores initial vfp (vfp-method) or hfp (hfp-method) */