diff options
Diffstat (limited to 'drivers/video/atmel_lcdfb.c')
-rw-r--r-- | drivers/video/atmel_lcdfb.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c index dda920623c6..4ac48d9ee66 100644 --- a/drivers/video/atmel_lcdfb.c +++ b/drivers/video/atmel_lcdfb.c | |||
@@ -39,7 +39,8 @@ | |||
39 | | FBINFO_HWACCEL_YPAN) | 39 | | FBINFO_HWACCEL_YPAN) |
40 | 40 | ||
41 | static inline void atmel_lcdfb_update_dma2d(struct atmel_lcdfb_info *sinfo, | 41 | static inline void atmel_lcdfb_update_dma2d(struct atmel_lcdfb_info *sinfo, |
42 | struct fb_var_screeninfo *var) | 42 | struct fb_var_screeninfo *var, |
43 | struct fb_info *info) | ||
43 | { | 44 | { |
44 | 45 | ||
45 | } | 46 | } |
@@ -50,14 +51,16 @@ static inline void atmel_lcdfb_update_dma2d(struct atmel_lcdfb_info *sinfo, | |||
50 | | FBINFO_HWACCEL_YPAN) | 51 | | FBINFO_HWACCEL_YPAN) |
51 | 52 | ||
52 | static void atmel_lcdfb_update_dma2d(struct atmel_lcdfb_info *sinfo, | 53 | static void atmel_lcdfb_update_dma2d(struct atmel_lcdfb_info *sinfo, |
53 | struct fb_var_screeninfo *var) | 54 | struct fb_var_screeninfo *var, |
55 | struct fb_info *info) | ||
54 | { | 56 | { |
55 | u32 dma2dcfg; | 57 | u32 dma2dcfg; |
56 | u32 pixeloff; | 58 | u32 pixeloff; |
57 | 59 | ||
58 | pixeloff = (var->xoffset * var->bits_per_pixel) & 0x1f; | 60 | pixeloff = (var->xoffset * info->var.bits_per_pixel) & 0x1f; |
59 | 61 | ||
60 | dma2dcfg = ((var->xres_virtual - var->xres) * var->bits_per_pixel) / 8; | 62 | dma2dcfg = (info->var.xres_virtual - info->var.xres) |
63 | * info->var.bits_per_pixel / 8; | ||
61 | dma2dcfg |= pixeloff << ATMEL_LCDC_PIXELOFF_OFFSET; | 64 | dma2dcfg |= pixeloff << ATMEL_LCDC_PIXELOFF_OFFSET; |
62 | lcdc_writel(sinfo, ATMEL_LCDC_DMA2DCFG, dma2dcfg); | 65 | lcdc_writel(sinfo, ATMEL_LCDC_DMA2DCFG, dma2dcfg); |
63 | 66 | ||
@@ -249,14 +252,14 @@ static void atmel_lcdfb_update_dma(struct fb_info *info, | |||
249 | unsigned long dma_addr; | 252 | unsigned long dma_addr; |
250 | 253 | ||
251 | dma_addr = (fix->smem_start + var->yoffset * fix->line_length | 254 | dma_addr = (fix->smem_start + var->yoffset * fix->line_length |
252 | + var->xoffset * var->bits_per_pixel / 8); | 255 | + var->xoffset * info->var.bits_per_pixel / 8); |
253 | 256 | ||
254 | dma_addr &= ~3UL; | 257 | dma_addr &= ~3UL; |
255 | 258 | ||
256 | /* Set framebuffer DMA base address and pixel offset */ | 259 | /* Set framebuffer DMA base address and pixel offset */ |
257 | lcdc_writel(sinfo, ATMEL_LCDC_DMABADDR1, dma_addr); | 260 | lcdc_writel(sinfo, ATMEL_LCDC_DMABADDR1, dma_addr); |
258 | 261 | ||
259 | atmel_lcdfb_update_dma2d(sinfo, var); | 262 | atmel_lcdfb_update_dma2d(sinfo, var, info); |
260 | } | 263 | } |
261 | 264 | ||
262 | static inline void atmel_lcdfb_free_video_memory(struct atmel_lcdfb_info *sinfo) | 265 | static inline void atmel_lcdfb_free_video_memory(struct atmel_lcdfb_info *sinfo) |