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:
parent
c9dc859c2c
commit
6ab8fbb872
3 changed files with 15 additions and 4 deletions
|
@ -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))
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) */
|
||||
|
|
Loading…
Add table
Reference in a new issue