summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorVasily Khoruzhick <anarsoul@gmail.com>2016-03-20 18:37:08 -0700
committerTom Rini <trini@konsulko.com>2016-03-27 09:13:00 -0400
commit59deb7fe8d23c8ec2b659d99323ec4a2ec19148a (patch)
tree3db747b1917fd73204615b6092297e3b13c57b54 /drivers
parent9cfc05985319c52933d84a7609fc8b143b1ff18a (diff)
downloadu-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.c16
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 */