arm-sdk

os build toolkit for various embedded devices
git clone https://git.parazyd.org/arm-sdk
Log | Files | Refs | Submodules | README | LICENSE

0003-drm-omap-plane-update-fifo-size-on-ovl-setup.patch (1702B)


      1 From 8bb3dd3ffe60be576bd6a843ebb65979e49e3e25 Mon Sep 17 00:00:00 2001
      2 From: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
      3 Date: Mon, 24 Jul 2017 19:33:00 +0200
      4 Subject: [PATCH 03/17] drm/omap: plane: update fifo size on ovl setup
      5 
      6 This is a workaround for a hardware bug occuring on OMAP3
      7 with manually updated panels. Details about the HW bug are
      8 unknown to me, but without this fix the panel refresh does
      9 not work at all on Nokia N950.
     10 
     11 Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
     12 ---
     13  drivers/gpu/drm/omapdrm/dss/dispc.c | 16 ++++++++++++++++
     14  1 file changed, 16 insertions(+)
     15 
     16 diff --git a/drivers/gpu/drm/omapdrm/dss/dispc.c b/drivers/gpu/drm/omapdrm/dss/dispc.c
     17 index 0f4fdb2..d5d2d3c 100644
     18 --- a/drivers/gpu/drm/omapdrm/dss/dispc.c
     19 +++ b/drivers/gpu/drm/omapdrm/dss/dispc.c
     20 @@ -1491,6 +1491,18 @@ void dispc_ovl_compute_fifo_thresholds(enum omap_plane_id plane,
     21  	}
     22  }
     23  
     24 +void dispc_ovl_set_manual_fifo_threshold(enum omap_plane_id plane)
     25 +{
     26 +	u32 fifo_low, fifo_high;
     27 +	bool use_fifo_merge = false;
     28 +	bool use_manual_update = true;
     29 +
     30 +	dispc_ovl_compute_fifo_thresholds(plane, &fifo_low, &fifo_high,
     31 +					  use_fifo_merge, use_manual_update);
     32 +
     33 +	dispc_ovl_set_fifo_threshold(plane, fifo_low, fifo_high);
     34 +}
     35 +
     36  static void dispc_ovl_set_mflag(enum omap_plane_id plane, bool enable)
     37  {
     38  	int bit;
     39 @@ -2654,6 +2666,10 @@ static int dispc_ovl_setup(enum omap_plane_id plane,
     40  		oi->zorder, oi->pre_mult_alpha, oi->global_alpha,
     41  		oi->rotation_type, replication, vm, mem_to_mem);
     42  
     43 +	/* manual mode needs other fifo thresholds */
     44 +	if (mgr_fld_read(channel, DISPC_MGR_FLD_STALLMODE))
     45 +		dispc_ovl_set_manual_fifo_threshold(plane);
     46 +
     47  	return r;
     48  }
     49  
     50 -- 
     51 2.1.4
     52