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