summaryrefslogtreecommitdiff
path: root/drivers/video
diff options
context:
space:
mode:
authorAlexander Graf <agraf@suse.de>2016-03-24 10:31:11 +0100
committerTom Rini <trini@konsulko.com>2016-03-27 09:12:19 -0400
commit99de254e8de9a73ac6baee05786e2e3f70e4813b (patch)
treeb177ccb8392e3c41b6f6dd475d9b940abe6cf374 /drivers/video
parentccd9d51ede69f08f60d9ab3c824b93ceda73afc8 (diff)
downloadu-boot-imx-99de254e8de9a73ac6baee05786e2e3f70e4813b.zip
u-boot-imx-99de254e8de9a73ac6baee05786e2e3f70e4813b.tar.gz
u-boot-imx-99de254e8de9a73ac6baee05786e2e3f70e4813b.tar.bz2
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 <agraf@suse.de> Tested-by: Stephen Warren <swarren@wwwdotorg.org> Acked-by: Stephen Warren <swarren@wwwdotorg.org>
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/bcm2835.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/video/bcm2835.c b/drivers/video/bcm2835.c
index bff1fcb..cd605e6 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)