fbdev: Prepare generic architecture helpers

Generic implementations of fb_pgprotect() and fb_is_primary_device()
have been in the source code for a long time. Prepare the header file
to make use of them.

Improve the code by using an inline function for fb_pgprotect()
and by removing include statements. The default mode set by
fb_pgprotect() is now writecombine, which is what most platforms
want.

Symbols are protected by preprocessor guards. Architectures that
provide a symbol need to define a preprocessor token of the same
name and value. Otherwise the header file will provide a generic
implementation. This pattern has been taken from <asm/io.h>.

v3:
	* include the correct header files
v2:
	*  use writecombine mappings by default (Arnd)

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Helge Deller <deller@gmx.de>
Link: https://patchwork.freedesktop.org/patch/msgid/20230417125651.25126-2-tzimmermann@suse.de
This commit is contained in:
Thomas Zimmermann 2023-04-17 14:56:33 +02:00
parent c91acda3a3
commit 91254a4d2e
1 changed files with 22 additions and 2 deletions

View File

@ -1,13 +1,33 @@
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_GENERIC_FB_H_
#define __ASM_GENERIC_FB_H_
#include <linux/fb.h>
#define fb_pgprotect(...) do {} while (0)
/*
* Only include this header file from your architecture's <asm/fb.h>.
*/
#include <linux/mm_types.h>
#include <linux/pgtable.h>
struct fb_info;
struct file;
#ifndef fb_pgprotect
#define fb_pgprotect fb_pgprotect
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
#ifndef fb_is_primary_device
#define fb_is_primary_device fb_is_primary_device
static inline int fb_is_primary_device(struct fb_info *info)
{
return 0;
}
#endif
#endif /* __ASM_GENERIC_FB_H_ */