Merge branch 'gup_flag-cleanups'
[cascardo/linux.git] / drivers / video / fbdev / mxsfb.c
index 4e6608c..7846f0e 100644 (file)
@@ -800,6 +800,7 @@ static int mxsfb_init_fbinfo(struct mxsfb_info *host,
                        struct fb_videomode *vmode)
 {
        int ret;
+       struct device *dev = &host->pdev->dev;
        struct fb_info *fb_info = &host->fb_info;
        struct fb_var_screeninfo *var = &fb_info->var;
        dma_addr_t fb_phys;
@@ -825,12 +826,10 @@ static int mxsfb_init_fbinfo(struct mxsfb_info *host,
 
        /* Memory allocation for framebuffer */
        fb_size = SZ_2M;
-       fb_virt = alloc_pages_exact(fb_size, GFP_DMA);
+       fb_virt = dma_alloc_wc(dev, PAGE_ALIGN(fb_size), &fb_phys, GFP_KERNEL);
        if (!fb_virt)
                return -ENOMEM;
 
-       fb_phys = virt_to_phys(fb_virt);
-
        fb_info->fix.smem_start = fb_phys;
        fb_info->screen_base = fb_virt;
        fb_info->screen_size = fb_info->fix.smem_len = fb_size;
@@ -843,9 +842,11 @@ static int mxsfb_init_fbinfo(struct mxsfb_info *host,
 
 static void mxsfb_free_videomem(struct mxsfb_info *host)
 {
+       struct device *dev = &host->pdev->dev;
        struct fb_info *fb_info = &host->fb_info;
 
-       free_pages_exact(fb_info->screen_base, fb_info->fix.smem_len);
+       dma_free_wc(dev, fb_info->screen_size, fb_info->screen_base,
+                   fb_info->fix.smem_start);
 }
 
 static const struct platform_device_id mxsfb_devtype[] = {