Commit 9aee7f04 authored by Thomas Zimmermann's avatar Thomas Zimmermann
Browse files

fbdev/ep93xx-fb: Alloc DMA memory from hardware device



Pass the hardware device to the DMA helpers dma_alloc_wc(), dma_mmap_wc()
and dma_free_coherent(). The fbdev device that is currently being used is
a software device and does not provide DMA memory.

Signed-off-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: default avatarJavier Martinez Canillas <javierm@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230613110953.24176-13-tzimmermann@suse.de
parent 2b41f832
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -312,7 +312,7 @@ static int ep93xxfb_mmap(struct fb_info *info, struct vm_area_struct *vma)
	unsigned int offset = vma->vm_pgoff << PAGE_SHIFT;

	if (offset < info->fix.smem_len) {
		return dma_mmap_wc(info->dev, vma, info->screen_base,
		return dma_mmap_wc(info->device, vma, info->screen_base,
				   info->fix.smem_start, info->fix.smem_len);
	}

@@ -423,7 +423,7 @@ static int ep93xxfb_alloc_videomem(struct fb_info *info)
	/* Maximum 16bpp -> used memory is maximum x*y*2 bytes */
	fb_size = EP93XXFB_MAX_XRES * EP93XXFB_MAX_YRES * 2;

	virt_addr = dma_alloc_wc(info->dev, fb_size, &phys_addr, GFP_KERNEL);
	virt_addr = dma_alloc_wc(info->device, fb_size, &phys_addr, GFP_KERNEL);
	if (!virt_addr)
		return -ENOMEM;

@@ -440,7 +440,7 @@ static int ep93xxfb_alloc_videomem(struct fb_info *info)
			"has bit 27 set: cannot init framebuffer\n",
			phys_addr);

		dma_free_coherent(info->dev, fb_size, virt_addr, phys_addr);
		dma_free_coherent(info->device, fb_size, virt_addr, phys_addr);
		return -ENOMEM;
	}

@@ -454,7 +454,7 @@ static int ep93xxfb_alloc_videomem(struct fb_info *info)
static void ep93xxfb_dealloc_videomem(struct fb_info *info)
{
	if (info->screen_base)
		dma_free_coherent(info->dev, info->fix.smem_len,
		dma_free_coherent(info->device, info->fix.smem_len,
				  info->screen_base, info->fix.smem_start);
}