X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fvideo%2Famba-clcd.c;h=acdba0c67fb8c6102bb613b400ae9822964ca2df;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=d6af37b7a68fb564c94ba83d38e281e9291e0054;hpb=87fc8d1bb10cd459024a742c6a10961fefcef18f;p=linux-2.6.git diff --git a/drivers/video/amba-clcd.c b/drivers/video/amba-clcd.c index d6af37b7a..acdba0c67 100644 --- a/drivers/video/amba-clcd.c +++ b/drivers/video/amba-clcd.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -300,6 +301,22 @@ static int clcdfb_blank(int blank_mode, struct fb_info *info) return 0; } +static int clcdfb_mmap(struct fb_info *info, struct file *file, + struct vm_area_struct *vma) +{ + struct clcd_fb *fb = to_clcd(info); + unsigned long len, off = vma->vm_pgoff << PAGE_SHIFT; + int ret = -EINVAL; + + len = info->fix.smem_len; + + if (off <= len && vma->vm_end - vma->vm_start <= len - off && + fb->board->mmap) + ret = fb->board->mmap(fb, vma); + + return ret; +} + static struct fb_ops clcdfb_ops = { .owner = THIS_MODULE, .fb_check_var = clcdfb_check_var, @@ -310,6 +327,7 @@ static struct fb_ops clcdfb_ops = { .fb_copyarea = cfb_copyarea, .fb_imageblit = cfb_imageblit, .fb_cursor = soft_cursor, + .fb_mmap = clcdfb_mmap, }; static int clcdfb_register(struct clcd_fb *fb)