From 99de254e8de9a73ac6baee05786e2e3f70e4813b Mon Sep 17 00:00:00 2001 From: Alexander Graf Date: Thu, 24 Mar 2016 10:31:11 +0100 Subject: [PATCH] bcm2835 video: Map fb as cached The bcm2835 frame buffer is in RAM, so we can easily map it as cached and gain all the glorious performance boost that brings with it. Signed-off-by: Alexander Graf Tested-by: Stephen Warren Acked-by: Stephen Warren --- drivers/video/bcm2835.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/video/bcm2835.c b/drivers/video/bcm2835.c index bff1fcb9ea..cd605e632c 100644 --- a/drivers/video/bcm2835.c +++ b/drivers/video/bcm2835.c @@ -44,6 +44,7 @@ void lcd_ctrl_init(void *lcdbase) ALLOC_CACHE_ALIGN_BUFFER(struct msg_setup, msg_setup, 1); int ret; u32 w, h; + u32 fb_start, fb_end; debug("bcm2835: Query resolution...\n"); @@ -106,6 +107,14 @@ void lcd_ctrl_init(void *lcdbase) gd->fb_base = bus_to_phys( msg_setup->allocate_buffer.body.resp.fb_address); + + /* Enable dcache for the frame buffer */ + fb_start = gd->fb_base & ~(MMU_SECTION_SIZE - 1); + fb_end = gd->fb_base + msg_setup->allocate_buffer.body.resp.fb_size; + fb_end = ALIGN(fb_end, 1 << MMU_SECTION_SHIFT); + mmu_set_region_dcache_behaviour(fb_start, fb_end - fb_start, + DCACHE_WRITEBACK); + lcd_set_flush_dcache(1); } void lcd_enable(void) -- 2.25.1