Re: [RFC v3 1/3] fbmem: add default get_fb_unmapped_area function

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Benjamin,

On Wednesday 30 Nov 2016 20:46:23 Benjamin Gaignard wrote:
> 2016-11-30 20:39 GMT+01:00 Laurent Pinchart:
> > On Wednesday 30 Nov 2016 20:34:17 Benjamin Gaignard wrote:
> >> If HAVE_ARCH_FB_UNMAPPED_AREA is set and get_fb_unmapped_area
> >> function not defined in platform architecture let use a default function.
> >> 
> >> Signed-off-by: Benjamin Gaignard <benjamin.gaignard@xxxxxxxxxx>
> >> ---
> >> 
> >>  drivers/video/fbdev/core/fbmem.c | 15 +++++++++++++++
> >>  1 file changed, 15 insertions(+)
> >> 
> >> diff --git a/drivers/video/fbdev/core/fbmem.c
> >> b/drivers/video/fbdev/core/fbmem.c index 76c1ad9..54488ee 100644
> >> --- a/drivers/video/fbdev/core/fbmem.c
> >> +++ b/drivers/video/fbdev/core/fbmem.c
> >> @@ -1492,6 +1492,21 @@ static long fb_compat_ioctl(struct file *file,
> >> unsigned int cmd,
> >>  	return 0;
> >>  }
> >> 
> >> +#if defined(HAVE_ARCH_FB_UNMAPPED_AREA) &&
> >> !defined(get_fb_unmapped_area)
> > 
> > I think I've asked this twice already, how is that possible ?
> 
> As you said before only sparc and blackfin architectures have define
> HAVE_ARCH_FB_UNMAPPED_AREA and get_fb_unmapped_area().
> For stm32f4 (ARMv7m) I plan to only add HAVE_ARCH_FB_UNMAPPED_AREA and
> use this default function

Ah, so it's for support of a future patch. You should explain that in the 
commit message.

The other question I asked was whether it would be possible to come up with a 
generic implementation of this function that would work on all architectures. 
At first sight the blackfin implementation is similar, but the sparc one is 
quite different. Why does it have to be arch-specific ?

> By testing those two flags I avoid to define twince
> get_fb_unmapped_area() if the architecture already
> provide it.
> 
> >> +unsigned long get_fb_unmapped_area(struct file *filp,
> >> +                                unsigned long addr, unsigned long len,
> >> +                                unsigned long pgoff, unsigned long
> >> flags)
> >> +{
> >> +     struct fb_info * const info = filp->private_data;
> >> +     unsigned long fb_size = PAGE_ALIGN(info->fix.smem_len);
> >> +
> >> +     if (pgoff > fb_size || len > fb_size - pgoff)
> >> +             return -EINVAL;
> >> +
> >> +     return (unsigned long)info->screen_base + pgoff;
> >> +}
> >> +#endif
> >> +
> >>  static const struct file_operations fb_fops = {
> >>       .owner =        THIS_MODULE,
> >>       .read =         fb_read,

-- 
Regards,

Laurent Pinchart

_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/dri-devel




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux