summaryrefslogtreecommitdiffstats
path: root/kernel/gsp_display_engine.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/gsp_display_engine.c')
-rw-r--r--kernel/gsp_display_engine.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/kernel/gsp_display_engine.c b/kernel/gsp_display_engine.c
index 3e0c162..f96fc6a 100644
--- a/kernel/gsp_display_engine.c
+++ b/kernel/gsp_display_engine.c
@@ -310,7 +310,16 @@ static u32 gsp_disp_ctl_offset(u32 hclass, u32 instance)
return GSP_DISP_CORE_CTL_BASE;
case GSP_DISP_CLASS_WINDOW:
return GSP_DISP_WIN_CTL_BASE + instance * 0x1000;
- case GSP_DISP_CLASS_CURSOR:
+ case GSP_DISP_CLASS_WINDOW_IMM:
+ /*
+ * Immediate-mode window channels sit 32 windows above the
+ * ordinary window block (0x690000 + (instance+32)*0x1000
+ * = 0x6d0000 + instance*0x1000). The old mapping put them
+ * in the cursor-PIO block at 0x6d8000, so their PUT was
+ * never seen and their flips never completed (r1638).
+ */
+ return GSP_DISP_WIN_CTL_BASE + (instance + 32) * 0x1000;
+ case GSP_DISP_CLASS_CURSOR_PIO:
return GSP_DISP_CURS_CTL_BASE + instance * 0x1000;
default:
return 0;