mirror of https://github.com/parazyd/arm-sdk.git
53 lines
1.7 KiB
Diff
53 lines
1.7 KiB
Diff
From 8bb3dd3ffe60be576bd6a843ebb65979e49e3e25 Mon Sep 17 00:00:00 2001
|
|
From: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
|
|
Date: Mon, 24 Jul 2017 19:33:00 +0200
|
|
Subject: [PATCH 03/17] drm/omap: plane: update fifo size on ovl setup
|
|
|
|
This is a workaround for a hardware bug occuring on OMAP3
|
|
with manually updated panels. Details about the HW bug are
|
|
unknown to me, but without this fix the panel refresh does
|
|
not work at all on Nokia N950.
|
|
|
|
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
|
|
---
|
|
drivers/gpu/drm/omapdrm/dss/dispc.c | 16 ++++++++++++++++
|
|
1 file changed, 16 insertions(+)
|
|
|
|
diff --git a/drivers/gpu/drm/omapdrm/dss/dispc.c b/drivers/gpu/drm/omapdrm/dss/dispc.c
|
|
index 0f4fdb2..d5d2d3c 100644
|
|
--- a/drivers/gpu/drm/omapdrm/dss/dispc.c
|
|
+++ b/drivers/gpu/drm/omapdrm/dss/dispc.c
|
|
@@ -1491,6 +1491,18 @@ void dispc_ovl_compute_fifo_thresholds(enum omap_plane_id plane,
|
|
}
|
|
}
|
|
|
|
+void dispc_ovl_set_manual_fifo_threshold(enum omap_plane_id plane)
|
|
+{
|
|
+ u32 fifo_low, fifo_high;
|
|
+ bool use_fifo_merge = false;
|
|
+ bool use_manual_update = true;
|
|
+
|
|
+ dispc_ovl_compute_fifo_thresholds(plane, &fifo_low, &fifo_high,
|
|
+ use_fifo_merge, use_manual_update);
|
|
+
|
|
+ dispc_ovl_set_fifo_threshold(plane, fifo_low, fifo_high);
|
|
+}
|
|
+
|
|
static void dispc_ovl_set_mflag(enum omap_plane_id plane, bool enable)
|
|
{
|
|
int bit;
|
|
@@ -2654,6 +2666,10 @@ static int dispc_ovl_setup(enum omap_plane_id plane,
|
|
oi->zorder, oi->pre_mult_alpha, oi->global_alpha,
|
|
oi->rotation_type, replication, vm, mem_to_mem);
|
|
|
|
+ /* manual mode needs other fifo thresholds */
|
|
+ if (mgr_fld_read(channel, DISPC_MGR_FLD_STALLMODE))
|
|
+ dispc_ovl_set_manual_fifo_threshold(plane);
|
|
+
|
|
return r;
|
|
}
|
|
|
|
--
|
|
2.1.4
|
|
|