diff options
Diffstat (limited to 'arch/sparc')
-rw-r--r-- | arch/sparc/Makefile | 1 | ||||
-rw-r--r-- | arch/sparc/include/asm/fb.h | 47 | ||||
-rw-r--r-- | arch/sparc/video/Makefile | 3 | ||||
-rw-r--r-- | arch/sparc/video/fbdev.c | 23 |
4 files changed, 54 insertions, 20 deletions
diff --git a/arch/sparc/Makefile b/arch/sparc/Makefile index 74be90529a18..7417345c6639 100644 --- a/arch/sparc/Makefile +++ b/arch/sparc/Makefile @@ -60,6 +60,7 @@ libs-y += arch/sparc/prom/ libs-y += arch/sparc/lib/ drivers-$(CONFIG_PM) += arch/sparc/power/ +drivers-$(CONFIG_FB) += arch/sparc/video/ boot := arch/sparc/boot diff --git a/arch/sparc/include/asm/fb.h b/arch/sparc/include/asm/fb.h index f699962e9ddf..572ecd3e1cc4 100644 --- a/arch/sparc/include/asm/fb.h +++ b/arch/sparc/include/asm/fb.h @@ -1,34 +1,41 @@ /* SPDX-License-Identifier: GPL-2.0 */ #ifndef _SPARC_FB_H_ #define _SPARC_FB_H_ -#include <linux/console.h> -#include <linux/fb.h> -#include <linux/fs.h> -#include <asm/page.h> -#include <asm/prom.h> +#include <linux/io.h> + +struct fb_info; +struct file; +struct vm_area_struct; + +#ifdef CONFIG_SPARC32 static inline void fb_pgprotect(struct file *file, struct vm_area_struct *vma, unsigned long off) -{ -#ifdef CONFIG_SPARC64 - vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); +{ } +#define fb_pgprotect fb_pgprotect #endif -} -static inline int fb_is_primary_device(struct fb_info *info) -{ - struct device *dev = info->device; - struct device_node *node; +int fb_is_primary_device(struct fb_info *info); +#define fb_is_primary_device fb_is_primary_device - if (console_set_on_cmdline) - return 0; +static inline void fb_memcpy_fromio(void *to, const volatile void __iomem *from, size_t n) +{ + sbus_memcpy_fromio(to, from, n); +} +#define fb_memcpy_fromio fb_memcpy_fromio - node = dev->of_node; - if (node && - node == of_console_device) - return 1; +static inline void fb_memcpy_toio(volatile void __iomem *to, const void *from, size_t n) +{ + sbus_memcpy_toio(to, from, n); +} +#define fb_memcpy_toio fb_memcpy_toio - return 0; +static inline void fb_memset_io(volatile void __iomem *addr, int c, size_t n) +{ + sbus_memset_io(addr, c, n); } +#define fb_memset fb_memset_io + +#include <asm-generic/fb.h> #endif /* _SPARC_FB_H_ */ diff --git a/arch/sparc/video/Makefile b/arch/sparc/video/Makefile new file mode 100644 index 000000000000..6baddbd58e4d --- /dev/null +++ b/arch/sparc/video/Makefile @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: GPL-2.0-only + +obj-$(CONFIG_FB) += fbdev.o diff --git a/arch/sparc/video/fbdev.c b/arch/sparc/video/fbdev.c new file mode 100644 index 000000000000..25837f128132 --- /dev/null +++ b/arch/sparc/video/fbdev.c @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include <linux/console.h> +#include <linux/fb.h> +#include <linux/module.h> + +#include <asm/prom.h> + +int fb_is_primary_device(struct fb_info *info) +{ + struct device *dev = info->device; + struct device_node *node; + + if (console_set_on_cmdline) + return 0; + + node = dev->of_node; + if (node && node == of_console_device) + return 1; + + return 0; +} +EXPORT_SYMBOL(fb_is_primary_device); |