Merge branch 'for-3.20' of git://linux-nfs.org/~bfields/linux
[firefly-linux-kernel-4.4.55.git] / drivers / gpu / drm / exynos / exynos_drm_fbdev.c
index e12ea90c62371e6212fba19623c1b2034545c2f4..84f8dfe1c5ec02ec383b0d74cf615b7906388d9a 100644 (file)
@@ -79,9 +79,9 @@ static int exynos_drm_fbdev_update(struct drm_fb_helper *helper,
                                     struct drm_framebuffer *fb)
 {
        struct fb_info *fbi = helper->fbdev;
-       struct drm_device *dev = helper->dev;
        struct exynos_drm_gem_buf *buffer;
        unsigned int size = fb->width * fb->height * (fb->bits_per_pixel >> 3);
+       unsigned int nr_pages;
        unsigned long offset;
 
        drm_fb_helper_fill_fix(fbi, fb->pitches[0], fb->depth);
@@ -94,25 +94,14 @@ static int exynos_drm_fbdev_update(struct drm_fb_helper *helper,
                return -EFAULT;
        }
 
-       /* map pages with kernel virtual space. */
+       nr_pages = buffer->size >> PAGE_SHIFT;
+
+       buffer->kvaddr = (void __iomem *) vmap(buffer->pages,
+                       nr_pages, VM_MAP,
+                       pgprot_writecombine(PAGE_KERNEL));
        if (!buffer->kvaddr) {
-               if (is_drm_iommu_supported(dev)) {
-                       unsigned int nr_pages = buffer->size >> PAGE_SHIFT;
-
-                       buffer->kvaddr = (void __iomem *) vmap(buffer->pages,
-                                       nr_pages, VM_MAP,
-                                       pgprot_writecombine(PAGE_KERNEL));
-               } else {
-                       phys_addr_t dma_addr = buffer->dma_addr;
-                       if (dma_addr)
-                               buffer->kvaddr = (void __iomem *)phys_to_virt(dma_addr);
-                       else
-                               buffer->kvaddr = (void __iomem *)NULL;
-               }
-               if (!buffer->kvaddr) {
-                       DRM_ERROR("failed to map pages to kernel space.\n");
-                       return -EIO;
-               }
+               DRM_ERROR("failed to map pages to kernel space.\n");
+               return -EIO;
        }
 
        /* buffer count to framebuffer always is 1 at booting time. */
@@ -313,7 +302,7 @@ static void exynos_drm_fbdev_destroy(struct drm_device *dev,
        struct exynos_drm_gem_obj *exynos_gem_obj = exynos_fbd->exynos_gem_obj;
        struct drm_framebuffer *fb;
 
-       if (is_drm_iommu_supported(dev) && exynos_gem_obj->buffer->kvaddr)
+       if (exynos_gem_obj->buffer->kvaddr)
                vunmap(exynos_gem_obj->buffer->kvaddr);
 
        /* release drm framebuffer and real buffer */