From 59deb7fe8d23c8ec2b659d99323ec4a2ec19148a Mon Sep 17 00:00:00 2001 From: Vasily Khoruzhick Date: Sun, 20 Mar 2016 18:37:08 -0700 Subject: pxa_lcd: make driver cache-aware Signed-off-by: Vasily Khoruzhick --- drivers/video/pxa_lcd.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/drivers/video/pxa_lcd.c b/drivers/video/pxa_lcd.c index ba4f8979e2b..d64c25bdc1c 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 */ -- cgit v1.2.3