Because the framebuffer resides in a hidden chopped off part of DRAM,
caching is not enabled for this area automatically when the MMU is
configured. So it needs to be set explicitly.

Additionally, the cfb console has a function to check whether the
framebuffer resides in DRAM or not. And the hidden sunxi framebuffer
needs special treatment again.

This fix resolves the sluggish scrolling problem.

Signed-off-by: Siarhei Siamashka <siarhei.siamas...@gmail.com>
---
 drivers/video/cfb_console.c   |  2 +-
 drivers/video/sunxi_display.c | 10 ++++++++++
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c
index a81affa..23b50df 100644
--- a/drivers/video/cfb_console.c
+++ b/drivers/video/cfb_console.c
@@ -2090,7 +2090,7 @@ static void *video_logo(void)
 }
 #endif
 
-static int cfb_fb_is_in_dram(void)
+__weak int cfb_fb_is_in_dram(void)
 {
        bd_t *bd = gd->bd;
 #if defined(CONFIG_ARM) || defined(CONFIG_AVR32) || defined(COFNIG_NDS32) || \
diff --git a/drivers/video/sunxi_display.c b/drivers/video/sunxi_display.c
index f5f24fc..22a1319 100644
--- a/drivers/video/sunxi_display.c
+++ b/drivers/video/sunxi_display.c
@@ -1060,6 +1060,12 @@ static const char *sunxi_get_mon_desc(enum sunxi_monitor 
monitor)
        return NULL; /* never reached */
 }
 
+/* The framebuffer is in DRAM, even though it is in the hidden part of it */
+int cfb_fb_is_in_dram(void)
+{
+       return 1;
+}
+
 void *video_hw_init(void)
 {
        static GraphicDevice *graphic_device = &sunxi_display.graphic_device;
@@ -1079,6 +1085,10 @@ void *video_hw_init(void)
               CONFIG_SUNXI_FB_SIZE >> 10);
        gd->fb_base = gd->ram_top;
 
+       mmu_set_region_dcache_behaviour(gd->fb_base,
+                                       CONFIG_SUNXI_FB_SIZE,
+                                       DCACHE_WRITEBACK);
+
        video_get_ctfb_res_modes(RES_MODE_1024x768, 24, &mode,
                                 &sunxi_display.depth, &options);
 #ifdef CONFIG_VIDEO_HDMI
-- 
2.0.5

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to