|
@@ -859,43 +859,6 @@ acornfb_pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-/*
|
|
|
|
- * Note that we are entered with the kernel locked.
|
|
|
|
- */
|
|
|
|
-static int
|
|
|
|
-acornfb_mmap(struct fb_info *info, struct vm_area_struct *vma)
|
|
|
|
-{
|
|
|
|
- unsigned long off, start;
|
|
|
|
- u32 len;
|
|
|
|
-
|
|
|
|
- off = vma->vm_pgoff << PAGE_SHIFT;
|
|
|
|
-
|
|
|
|
- start = info->fix.smem_start;
|
|
|
|
- len = PAGE_ALIGN(start & ~PAGE_MASK) + info->fix.smem_len;
|
|
|
|
- start &= PAGE_MASK;
|
|
|
|
- if ((vma->vm_end - vma->vm_start + off) > len)
|
|
|
|
- return -EINVAL;
|
|
|
|
- off += start;
|
|
|
|
- vma->vm_pgoff = off >> PAGE_SHIFT;
|
|
|
|
-
|
|
|
|
- /* This is an IO map - tell maydump to skip this VMA */
|
|
|
|
- vma->vm_flags |= VM_IO;
|
|
|
|
-
|
|
|
|
- vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);
|
|
|
|
-
|
|
|
|
- /*
|
|
|
|
- * Don't alter the page protection flags; we want to keep the area
|
|
|
|
- * cached for better performance. This does mean that we may miss
|
|
|
|
- * some updates to the screen occasionally, but process switches
|
|
|
|
- * should cause the caches and buffers to be flushed often enough.
|
|
|
|
- */
|
|
|
|
- if (io_remap_pfn_range(vma, vma->vm_start, off >> PAGE_SHIFT,
|
|
|
|
- vma->vm_end - vma->vm_start,
|
|
|
|
- vma->vm_page_prot))
|
|
|
|
- return -EAGAIN;
|
|
|
|
- return 0;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
static struct fb_ops acornfb_ops = {
|
|
static struct fb_ops acornfb_ops = {
|
|
.owner = THIS_MODULE,
|
|
.owner = THIS_MODULE,
|
|
.fb_check_var = acornfb_check_var,
|
|
.fb_check_var = acornfb_check_var,
|
|
@@ -905,7 +868,6 @@ static struct fb_ops acornfb_ops = {
|
|
.fb_fillrect = cfb_fillrect,
|
|
.fb_fillrect = cfb_fillrect,
|
|
.fb_copyarea = cfb_copyarea,
|
|
.fb_copyarea = cfb_copyarea,
|
|
.fb_imageblit = cfb_imageblit,
|
|
.fb_imageblit = cfb_imageblit,
|
|
- .fb_mmap = acornfb_mmap,
|
|
|
|
};
|
|
};
|
|
|
|
|
|
/*
|
|
/*
|