fbdev: Move arch-specific bits to their respective subdirectories
PATCH 7/9 fbdev: Move arch-specific bits to their respective subdirectories
Move arch-specific bits of fb_mmap() to their respective subdirectories
---
This version addresses some of the concerns raised on the first attempt except for the 2 points raised by Christoph Hellwig:
1. Make fb_mmap() required for all drivers.
This may entail more work as it will require that the prototype be changed to accept struct file.
2. A more generic name for fb_pgprotect().
Tony
drivers/video/fbmem.c | 62 +++----------------------------------------- include/asm-alpha/fb.h | 7 +++++ include/asm-arm/fb.h | 13 +++++++++ include/asm-arm26/fb.h | 6 ++++ include/asm-avr32/fb.h | 15 +++++++++++ include/asm-blackfin/fb.h | 6 ++++ include/asm-cris/fb.h | 6 ++++ include/asm-frv/fb.h | 6 ++++ include/asm-h8300/fb.h | 6 ++++ include/asm-i386/fb.h | 14 ++++++++++ include/asm-ia64/fb.h | 16 +++++++++++ include/asm-m32r/fb.h | 13 +++++++++ include/asm-m68k/fb.h | 27 +++++++++++++++++++ include/asm-m68knommu/fb.h | 6 ++++ include/asm-mips/fb.h | 13 +++++++++ include/asm-parisc/fb.h | 13 +++++++++ include/asm-powerpc/fb.h | 15 +++++++++++ include/asm-s390/fb.h | 6 ++++ include/asm-sh/fb.h | 13 +++++++++ include/asm-sh64/fb.h | 13 +++++++++ include/asm-sparc/fb.h | 6 ++++ include/asm-sparc64/fb.h | 12 +++++++++ include/asm-v850/fb.h | 6 ++++ include/asm-x86_64/fb.h | 14 ++++++++++ include/asm-xtensa/fb.h | 6 ++++ 25 files changed, 262 insertions(+), 58 deletions(-)
drivers/video/fbmem.c +4 -58
@@ -33,17 +33,10 @@ #endif#include <linux/err.h> #include <linux/device.h> #include <linux/efi.h> +#include <linux/fb.h> -#if defined(__mc68000__) || defined(CONFIG_APUS ) -#include <asm/setup.h> -#endif - -#include <asm/io.h> -#include <asm/uaccess.h> -#include <asm/page.h> -#include <asm/pgtable.h> +#include <asm/fb.h> -#include <linux/fb.h> /* * Frame buffer device initialization and setup routines
@@ -1155,17 +1148,15 @@ fb_compat_ioctl(struct file *file, unsig }#endif -static int +static int fb_mmap (struct file *file,struct vm_area_struct * vma) {int fbidx =iminor (file->f_path.dentry->d_inode);struct fb_info *info = registered_fb[fbidx];struct fb_ops *fb = info->fbops;unsigned long off; -#if !defined(__sparc__) || defined(__sparc_v9__)unsigned long start;u32 len; -#endif if (vma->vm_pgoff > (~0UL >>PAGE_SHIFT ))return -EINVAL ;
@@ -1180,12 +1171,6 @@ #endifreturn res; } -#if defined(__sparc__) && !defined(__sparc_v9__) -/* Should never get here, all fb drivers should have their own -mmap routines */ -return -EINVAL ; -#else -/* !sparc32... */ lock_kernel ();/* frame buffer memory */
@@ -1209,50 +1194,11 @@ #else vma->vm_pgoff = off >>PAGE_SHIFT ;/* This is an IO map - tell maydump to skip this VMA */ vma->vm_flags |=VM_IO |VM_RESERVED ; -#if defined(__mc68000__) -#if defined(CONFIG_SUN3 ) -pgprot_val (vma->vm_page_prot) |=SUN3_PAGE_NOCACHE ; -#elif defined(CONFIG_MMU ) -if (CPU_IS_020_OR_030 ) -pgprot_val (vma->vm_page_prot) |= _PAGE_NOCACHE030; -if (CPU_IS_040_OR_060 ) { -pgprot_val (vma->vm_page_prot) &= _CACHEMASK040; -/* Use no-cache mode, serialized */ -pgprot_val (vma->vm_page_prot) |= _PAGE_NOCACHE_S; - } -#endif -#elif defined(__powerpc__) - vma->vm_page_prot =phys_mem_access_prot (file, off >>PAGE_SHIFT , - vma->vm_end - vma->vm_start, - vma->vm_page_prot); -#elif defined(__alpha__) -/* Caching is off in the I/O space quadrant by design. */ -#elif defined(__i386__) || defined(__x86_64__) -if (boot_cpu_data.x86 >3 ) -pgprot_val (vma->vm_page_prot) |= _PAGE_PCD; -#elif defined(__mips__) || defined(__sparc_v9__) - vma->vm_page_prot =pgprot_noncached (vma->vm_page_prot); -#elif defined(__hppa__) -pgprot_val (vma->vm_page_prot) |= _PAGE_NO_CACHE; -#elif defined(__arm__) || defined(__sh__) || defined(__m32r__) - vma->vm_page_prot =pgprot_writecombine (vma->vm_page_prot); -#elif defined(__avr32__) - vma->vm_page_prot =__pgprot ((pgprot_val (vma->vm_page_prot) - & ~_PAGE_CACHABLE) - | (_PAGE_BUFFER | _PAGE_DIRTY)); -#elif defined(__ia64__) -if (efi_range_is_wc (vma->vm_start, vma->vm_end - vma->vm_start)) - vma->vm_page_prot =pgprot_writecombine (vma->vm_page_prot); -else - vma->vm_page_prot =pgprot_noncached (vma->vm_page_prot); -#else -#warning What do we have to do here?? -#endif +fb_pgprotect (file, vma, off);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 ; -#endif /* !sparc32 */ } static int
include/asm-alpha/fb.h new file +7 -0
@@ -0,0 +1,7 @@ +#ifndef _ASM_FB_H_ +#define _ASM_FB_H_ + +/* Caching is off in the I/O space quadrant by design. */ +#define fb_pgprotect (...) do {} while (0) + +#endif /* _ASM_FB_H_ */
include/asm-arm/fb.h new file +13 -0
@@ -0,0 +1,13 @@ +#ifndef _ASM_FB_H_ +#define _ASM_FB_H_ + +#include <linux/fs.h> +#include <asm/page.h> + +static inline void fb_pgprotect (struct file *file,struct vm_area_struct *vma, +unsigned long off) +{ + vma->vm_page_prot =pgprot_writecombine (vma->vm_page_prot); +} + +#endif /* _ASM_FB_H_ */
include/asm-arm26/fb.h new file +6 -0
@@ -0,0 +1,6 @@ +#ifndef _ASM_FB_H_ +#define _ASM_FB_H_ + +#define fb_pgprotect (...) do {} while (0) + +#endif /* _ASM_FB_H_ */
include/asm-avr32/fb.h new file +15 -0
@@ -0,0 +1,15 @@ +#ifndef _ASM_FB_H_ +#define _ASM_FB_H_ + +#include <linux/fs.h> +#include <asm/page.h> + +static inline void fb_pgprotect (struct file *file,struct vm_area_struct *vma, +unsigned long off) +{ + vma->vm_page_prot =__pgprot ((pgprot_val (vma->vm_page_prot) + & ~_PAGE_CACHABLE) + | (_PAGE_BUFFER | _PAGE_DIRTY)); +} + +#endif /* _ASM_FB_H_ */
include/asm-blackfin/fb.h new file +6 -0
@@ -0,0 +1,6 @@ +#ifndef _ASM_FB_H_ +#define _ASM_FB_H_ + +#define fb_pgprotect (...) do {} while (0) + +#endif /* _ASM_FB_H_ */
include/asm-cris/fb.h new file +6 -0
@@ -0,0 +1,6 @@ +#ifndef _ASM_FB_H_ +#define _ASM_FB_H_ + +#define fb_pgprotect (...) do {} while (0) + +#endif /* _ASM_FB_H_ */
include/asm-frv/fb.h new file +6 -0
@@ -0,0 +1,6 @@ +#ifndef _ASM_FB_H_ +#define _ASM_FB_H_ + +#define fb_pgprotect (...) do {} while (0) + +#endif /* _ASM_FB_H_ */
include/asm-h8300/fb.h new file +6 -0
@@ -0,0 +1,6 @@ +#ifndef _ASM_FB_H_ +#define _ASM_FB_H_ + +#define fb_pgprotect (...) do {} while (0) + +#endif /* _ASM_FB_H_ */
include/asm-i386/fb.h new file +14 -0
@@ -0,0 +1,14 @@ +#ifndef _ASM_FB_H_ +#define _ASM_FB_H_ + +#include <linux/fs.h> +#include <asm/page.h> + +static inline void fb_pgprotect (struct file *file,struct vm_area_struct *vma, +unsigned long off) +{ +if (boot_cpu_data.x86 >3 ) +pgprot_val (vma->vm_page_prot) |= _PAGE_PCD; +} + +#endif /* _ASM_FB_H_ */
include/asm-ia64/fb.h new file +16 -0
@@ -0,0 +1,16 @@ +#ifndef _ASM_FB_H_ +#define _ASM_FB_H_ + +#include <linux/fs.h> +#include <asm/page.h> + +static inline void fb_pgprotect (struct file *file,struct vm_area_struct *vma, +unsigned long off) +{ +if (efi_range_is_wc (vma->vm_start, vma->vm_end - vma->vm_start)) + vma->vm_page_prot =pgprot_writecombine (vma->vm_page_prot); +else + vma->vm_page_prot =pgprot_noncached (vma->vm_page_prot); +} + +#endif /* _ASM_FB_H_ */
include/asm-m32r/fb.h new file +13 -0
@@ -0,0 +1,13 @@ +#ifndef _ASM_FB_H_ +#define _ASM_FB_H_ + +#include <linux/fs.h> +#include <asm/page.h> + +static inline void fb_pgprotect (struct file *file,struct vm_area_struct *vma, +unsigned long off) +{ + vma->vm_page_prot =pgprot_writecombine (vma->vm_page_prot); +} + +#endif /* _ASM_FB_H_ */
include/asm-m68k/fb.h new file +27 -0
@@ -0,0 +1,27 @@ +#ifndef _ASM_FB_H_ +#define _ASM_FB_H_ + +#include <linux/fs.h> +#include <asm/page.h> +#include <asm/setup.h> + +#ifdef CONFIG_SUN3 +static inline void fb_pgprotect (struct file *file,struct vm_area_struct *vma, +unsigned long off) +{ +pgprot_val (vma->vm_page_prot) |=SUN3_PAGE_NOCACHE ; +} +#else +static inline void fb_pgprotect (struct file *file,struct vm_area_struct *vma, +unsigned long off) + if (CPU_IS_020_OR_030) + pgprot_val(vma->vm_page_prot) |= _PAGE_NOCACHE030; +if (CPU_IS_040_OR_060 ) { +pgprot_val (vma->vm_page_prot) &= _CACHEMASK040; +/* Use no-cache mode, serialized */ +pgprot_val (vma->vm_page_prot) |= _PAGE_NOCACHE_S; + } +} +#endif /* CONFIG_SUN3 */ + +#endif /* _ASM_FB_H_ */
include/asm-m68knommu/fb.h new file +6 -0
@@ -0,0 +1,6 @@ +#ifndef _ASM_FB_H_ +#define _ASM_FB_H_ + +#define fb_pgprotect (...) do {} while (0) + +#endif /* _ASM_FB_H_ */
include/asm-mips/fb.h new file +13 -0
@@ -0,0 +1,13 @@ +#ifndef _ASM_FB_H_ +#define _ASM_FB_H_ + +#include <linux/fs.h> +#include <asm/page.h> + +static inline void fb_pgprotect (struct file *file,struct vm_area_struct *vma, +unsigned long off) +{ + vma->vm_page_prot =pgprot_noncached (vma->vm_page_prot); +} + +#endif /* _ASM_FB_H_ */
include/asm-parisc/fb.h new file +13 -0
@@ -0,0 +1,13 @@ +#ifndef _ASM_FB_H_ +#define _ASM_FB_H_ + +#include <linux/fs.h> +#include <asm/page.h> + +static inline void fb_pgprotect (struct file *file,struct vm_area_struct *vma, +unsigned long off) +{ +pgprot_val (vma->vm_page_prot) |= _PAGE_NO_CACHE; +} + +#endif /* _ASM_FB_H_ */
include/asm-powerpc/fb.h new file +15 -0
@@ -0,0 +1,15 @@ +#ifndef _ASM_FB_H_ +#define _ASM_FB_H_ + +#include <linux/fs.h> +#include <asm/page.h> + +static inline void fb_pgprotect (struct file *file,struct vm_area_struct *vma, +unsigned long off) +{ + vma->vm_page_prot =phys_mem_access_prot (file, off >>PAGE_SHIFT , + vma->vm_end - vma->vm_start, + vma->vm_page_prot); +} + +#endif /* _ASM_FB_H_ */
include/asm-s390/fb.h new file +6 -0
@@ -0,0 +1,6 @@ +#ifndef _ASM_FB_H_ +#define _ASM_FB_H_ + +#define fb_pgprotect (...) do {} while (0) + +#endif /* _ASM_FB_H_ */
include/asm-sh/fb.h new file +13 -0
@@ -0,0 +1,13 @@ +#ifndef _ASM_FB_H_ +#define _ASM_FB_H_ + +#include <linux/fs.h> +#include <asm/page.h> + +static inline void fb_pgprotect (struct file *file,struct vm_area_struct *vma, +unsigned long off) +{ + vma->vm_page_prot =pgprot_writecombine (vma->vm_page_prot); +} + +#endif /* _ASM_FB_H_ */
include/asm-sh64/fb.h new file +13 -0
@@ -0,0 +1,13 @@ +#ifndef _ASM_FB_H_ +#define _ASM_FB_H_ + +#include <linux/fs.h> +#include <asm/page.h> + +static inline void fb_pgprotect (struct file *file,struct vm_area_struct *vma, +unsigned long off) +{ + vma->vm_page_prot =pgprot_writecombine (vma->vm_page_prot); +} + +#endif /* _ASM_FB_H_ */
include/asm-sparc/fb.h new file +6 -0
@@ -0,0 +1,6 @@ +#ifndef _ASM_FB_H_ +#define _ASM_FB_H_ + +#define fb_pgprotect (...) do {} while (0) + +#endif /* _ASM_FB_H_ */
include/asm-sparc64/fb.h new file +12 -0
@@ -0,0 +1,12 @@ +#ifndef _ASM_FB_H_ +#define _ASM_FB_H_ +#include <linux/fs.h> +#include <asm/page.h> + +static inline void fb_pgprotect (struct file *file,struct vm_area_struct *vma, +unsigned long off) +{ + vma->vm_page_prot =pgprot_noncached (vma->vm_page_prot); +} + +#endif /* _ASM_FB_H_ */
include/asm-v850/fb.h new file +6 -0
@@ -0,0 +1,6 @@ +#ifndef _ASM_FB_H_ +#define _ASM_FB_H_ + +#define fb_pgprotect (...) do {} while (0) + +#endif /* _ASM_FB_H_ */
include/asm-x86_64/fb.h new file +14 -0
@@ -0,0 +1,14 @@ +#ifndef _ASM_FB_H_ +#define _ASM_FB_H_ + +#include <linux/fs.h> +#include <asm/page.h> + +static inline void fb_pgprotect (struct file *file,struct vm_area_struct *vma, +unsigned long off) +{ +if (boot_cpu_data.x86 >3 ) +pgprot_val (vma->vm_page_prot) |= _PAGE_PCD; +} + +#endif /* _ASM_FB_H_ */
include/asm-xtensa/fb.h new file +6 -0
@@ -0,0 +1,6 @@ +#ifndef _ASM_FB_H_ +#define _ASM_FB_H_ + +#define fb_pgprotect (...) do {} while (0) + +#endif /* _ASM_FB_H_ */
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
From: "Antonino A. Daplas" <[email protected]>
Date: Sun, 27 May 2007 17:44:46 +0800
Quoted 3 lines
Move arch-specific bits of
fb_mmap()to their respective subdirectoriesSigned-off-by Antonino Daplas <[email protected]>
The sparc and sparc64 bits look good.