diff options
author | Vasily Khoruzhick <anarsoul@gmail.com> | 2016-03-20 18:37:08 -0700 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2016-03-27 09:13:00 -0400 |
commit | 59deb7fe8d23c8ec2b659d99323ec4a2ec19148a (patch) | |
tree | 3db747b1917fd73204615b6092297e3b13c57b54 /drivers | |
parent | 9cfc05985319c52933d84a7609fc8b143b1ff18a (diff) | |
download | u-boot-imx-59deb7fe8d23c8ec2b659d99323ec4a2ec19148a.zip u-boot-imx-59deb7fe8d23c8ec2b659d99323ec4a2ec19148a.tar.gz u-boot-imx-59deb7fe8d23c8ec2b659d99323ec4a2ec19148a.tar.bz2 |
pxa_lcd: make driver cache-aware
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/video/pxa_lcd.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/video/pxa_lcd.c b/drivers/video/pxa_lcd.c index ba4f897..d64c25b 100644 --- a/drivers/video/pxa_lcd.c +++ b/drivers/video/pxa_lcd.c @@ -353,6 +353,9 @@ void lcd_ctrl_init (void *lcdbase) pxafb_init(&panel_info); pxafb_setup_gpio(&panel_info); pxafb_enable_controller(&panel_info); + + /* Enable flushing if we enabled dcache */ + lcd_set_flush_dcache(1); } /*----------------------------------------------------------------------*/ @@ -565,6 +568,10 @@ static int pxafb_init (vidinfo_t *vid) fbi->dmadesc_fblow->fidr = 0; fbi->dmadesc_fblow->ldcmd = BYTES_PER_PANEL; + flush_dcache_range((u32)fbi->dmadesc_fblow, + (u32)fbi->dmadesc_fblow + + sizeof(*fbi->dmadesc_fblow)); + fbi->fdadr1 = (u_long)fbi->dmadesc_fblow; /* only used in dual-panel mode */ fbi->dmadesc_fbhigh->fsadr = fbi->screen; @@ -580,11 +587,20 @@ static int pxafb_init (vidinfo_t *vid) /* assume any mode with <12 bpp is palette driven */ fbi->dmadesc_palette->fdadr = (u_long)fbi->dmadesc_fbhigh; fbi->dmadesc_fbhigh->fdadr = (u_long)fbi->dmadesc_palette; + flush_dcache_range((u32)fbi->dmadesc_fbhigh, + (u32)fbi->dmadesc_fbhigh + + sizeof(*fbi->dmadesc_fbhigh)); + flush_dcache_range((u32)fbi->dmadesc_palette, + (u32)fbi->dmadesc_palette + + sizeof(*fbi->dmadesc_palette)); /* flips back and forth between pal and fbhigh */ fbi->fdadr0 = (u_long)fbi->dmadesc_palette; } else { + flush_dcache_range((u32)fbi->dmadesc_fbhigh, + (u32)fbi->dmadesc_fbhigh + + sizeof(*fbi->dmadesc_fbhigh)); /* palette shouldn't be loaded in true-color mode */ fbi->dmadesc_fbhigh->fdadr = (u_long)fbi->dmadesc_fbhigh; fbi->fdadr0 = (u_long)fbi->dmadesc_fbhigh; /* no pal just fbhigh */ |