From: Vasily Khoruzhick Date: Mon, 21 Mar 2016 01:37:08 +0000 (-0700) Subject: pxa_lcd: make driver cache-aware X-Git-Tag: v2016.05-rc1~130 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=59deb7fe8d23c8ec2b659d99323ec4a2ec19148a;p=oweals%2Fu-boot.git pxa_lcd: make driver cache-aware Signed-off-by: Vasily Khoruzhick --- diff --git a/drivers/video/pxa_lcd.c b/drivers/video/pxa_lcd.c index ba4f8979e2..d64c25bdc1 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 */