pxa_lcd: make driver cache-aware

Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
master
Vasily Khoruzhick 8 years ago committed by Tom Rini
parent 9cfc059853
commit 59deb7fe8d
  1. 16
      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 */

Loading…
Cancel
Save