Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6ab8fbb8 authored by Animesh Kishore's avatar Animesh Kishore
Browse files

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: default avatarAnimesh Kishore <animeshk@codeaurora.org>
parent c9dc859c
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
/* 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))
+9 −1
Original line number Diff line number Diff line
@@ -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) {
+3 −1
Original line number Diff line number Diff line
/* 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) */