mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-06 05:06:29 +00:00
fbdev/s1d13xxxfb: Initialize fb_ops to fbdev I/O-memory helpers
Initialize the instance of struct fb_ops with fbdev initializer macros for framebuffers in I/O address space. Set the read/write, draw and mmap callbacks to the correct implementation and avoid implicit defaults. Also select the necessary I/O helpers in Kconfig. Fbdev drivers sometimes rely on the callbacks being NULL for a default implementation to be invoked; hence requiring the I/O helpers to be built in any case. Setting all callbacks in all drivers explicitly will allow to make the I/O helpers optional. This benefits systems that do not use these functions. To simplify the conversion, provide a dedicated fb_ops instance for accelerated devices. No functional changes. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Acked-by: Javier Martinez Canillas <javierm@redhat.com> Cc: Kristoffer Ericson <kristoffer.ericson@gmail.com> Link: https://patchwork.freedesktop.org/patch/msgid/20230927074722.6197-32-tzimmermann@suse.de
This commit is contained in:
parent
9880753349
commit
bf0f401f8a
@ -671,6 +671,7 @@ config FB_S1D13XXX
|
||||
select FB_CFB_FILLRECT
|
||||
select FB_CFB_COPYAREA
|
||||
select FB_CFB_IMAGEBLIT
|
||||
select FB_IOMEM_FOPS
|
||||
help
|
||||
Support for S1D13XXX framebuffer device family (currently only
|
||||
working with S1D13806). Product specs at
|
||||
|
@ -596,18 +596,26 @@ s1d13xxxfb_bitblt_solidfill(struct fb_info *info, const struct fb_fillrect *rect
|
||||
}
|
||||
|
||||
/* framebuffer information structures */
|
||||
static struct fb_ops s1d13xxxfb_fbops = {
|
||||
static const struct fb_ops s1d13xxxfb_fbops = {
|
||||
.owner = THIS_MODULE,
|
||||
FB_DEFAULT_IOMEM_OPS,
|
||||
.fb_set_par = s1d13xxxfb_set_par,
|
||||
.fb_setcolreg = s1d13xxxfb_setcolreg,
|
||||
.fb_blank = s1d13xxxfb_blank,
|
||||
|
||||
.fb_pan_display = s1d13xxxfb_pan_display,
|
||||
};
|
||||
|
||||
/* gets replaced at chip detection time */
|
||||
.fb_fillrect = cfb_fillrect,
|
||||
.fb_copyarea = cfb_copyarea,
|
||||
static const struct fb_ops s1d13xxxfb_fbops_s1d13506 = {
|
||||
.owner = THIS_MODULE,
|
||||
__FB_DEFAULT_IOMEM_OPS_RDWR,
|
||||
.fb_set_par = s1d13xxxfb_set_par,
|
||||
.fb_setcolreg = s1d13xxxfb_setcolreg,
|
||||
.fb_blank = s1d13xxxfb_blank,
|
||||
.fb_pan_display = s1d13xxxfb_pan_display,
|
||||
.fb_fillrect = s1d13xxxfb_bitblt_solidfill,
|
||||
.fb_copyarea = s1d13xxxfb_bitblt_copyarea,
|
||||
.fb_imageblit = cfb_imageblit,
|
||||
__FB_DEFAULT_IOMEM_OPS_MMAP,
|
||||
};
|
||||
|
||||
static int s1d13xxxfb_width_tab[2][4] = {
|
||||
@ -869,17 +877,16 @@ static int s1d13xxxfb_probe(struct platform_device *pdev)
|
||||
default_par->regs, info->fix.smem_len / 1024, info->screen_base);
|
||||
|
||||
info->par = default_par;
|
||||
info->flags = FBINFO_HWACCEL_YPAN;
|
||||
info->fbops = &s1d13xxxfb_fbops;
|
||||
|
||||
switch(prod_id) {
|
||||
case S1D13506_PROD_ID: /* activate acceleration */
|
||||
s1d13xxxfb_fbops.fb_fillrect = s1d13xxxfb_bitblt_solidfill;
|
||||
s1d13xxxfb_fbops.fb_copyarea = s1d13xxxfb_bitblt_copyarea;
|
||||
info->flags = FBINFO_HWACCEL_YPAN |
|
||||
FBINFO_HWACCEL_FILLRECT | FBINFO_HWACCEL_COPYAREA;
|
||||
info->fbops = &s1d13xxxfb_fbops_s1d13506;
|
||||
break;
|
||||
default:
|
||||
info->flags = FBINFO_HWACCEL_YPAN;
|
||||
info->fbops = &s1d13xxxfb_fbops;
|
||||
break;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user