aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2014-04-07 07:00:17 -0400
committerDave Airlie <airlied@redhat.com>2014-04-07 20:51:03 -0400
commitc39b06951f1dc2e384650288676c5b7dcc0ec92c (patch)
treef6433db17fd6e3197473b719076464a0a635efa5 /drivers/gpu
parent9f97ba806a9cb8e828baca71eca8b684939053d8 (diff)
DRM: armada: fix corruption while loading cursors
Loading cursors to the LCD controller's SRAM can be corrupted when the configured pixel clock is relatively slow. This seems to be caused when we write back-to-back to the SRAM registers. There doesn't appear to be any status register we can read to check when an access has completed. Inserting a dummy read between the writes appears to fix the problem. Cc: <stable@vger.kernel.org> # 3.13 Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/armada/armada_crtc.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/gpu/drm/armada/armada_crtc.c b/drivers/gpu/drm/armada/armada_crtc.c
index 5831e4109e75..81c34f949dfc 100644
--- a/drivers/gpu/drm/armada/armada_crtc.c
+++ b/drivers/gpu/drm/armada/armada_crtc.c
@@ -679,6 +679,7 @@ static void armada_load_cursor_argb(void __iomem *base, uint32_t *pix,
679 base + LCD_SPU_SRAM_WRDAT); 679 base + LCD_SPU_SRAM_WRDAT);
680 writel_relaxed(addr | SRAM_WRITE, 680 writel_relaxed(addr | SRAM_WRITE,
681 base + LCD_SPU_SRAM_CTRL); 681 base + LCD_SPU_SRAM_CTRL);
682 readl_relaxed(base + LCD_SPU_HWC_OVSA_HPXL_VLN);
682 addr += 1; 683 addr += 1;
683 if ((addr & 0x00ff) == 0) 684 if ((addr & 0x00ff) == 0)
684 addr += 0xf00; 685 addr += 0xf00;