fbdev/matroxfb: Initialize fb_ops to fbdev I/O-memory helpers
authorThomas Zimmermann <tzimmermann@suse.de>
Wed, 27 Sep 2023 07:26:55 +0000 (09:26 +0200)
committerThomas Zimmermann <tzimmermann@suse.de>
Thu, 19 Oct 2023 10:55:45 +0000 (12:55 +0200)
Initialize each 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.

No functional changes.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Acked-by: Javier Martinez Canillas <javierm@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230927074722.6197-23-tzimmermann@suse.de
drivers/video/fbdev/Kconfig
drivers/video/fbdev/matrox/matroxfb_base.c
drivers/video/fbdev/matrox/matroxfb_crtc2.c

index 2a16ce0ff0cf019c64f720bd3e0b68a3509f9843..58c743baeeb085933a8e0b8a4b327f98387cbdcf 100644 (file)
@@ -903,6 +903,7 @@ config FB_MATROX
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
+       select FB_IOMEM_FOPS
        select FB_TILEBLITTING
        select FB_MACMODES if PPC_PMAC
        select VIDEO_NOMODESET
@@ -989,6 +990,7 @@ config FB_MATROX_I2C
 config FB_MATROX_MAVEN
        tristate "G400 second head support"
        depends on FB_MATROX_G && FB_MATROX_I2C
+       select FB_IOMEM_HELPERS
        help
          WARNING !!! This support does not work with G450 !!!
 
index a043a737ea9f79a71fc34e4fca50ed449640612b..81603ce05a2296d0b70c41467a1159478605e2bf 100644 (file)
@@ -1204,6 +1204,7 @@ static const struct fb_ops matroxfb_ops = {
        .owner =        THIS_MODULE,
        .fb_open =      matroxfb_open,
        .fb_release =   matroxfb_release,
+       __FB_DEFAULT_IOMEM_OPS_RDWR,
        .fb_check_var = matroxfb_check_var,
        .fb_set_par =   matroxfb_set_par,
        .fb_setcolreg = matroxfb_setcolreg,
@@ -1214,6 +1215,7 @@ static const struct fb_ops matroxfb_ops = {
 /*     .fb_copyarea =  <set by matrox_cfbX_init>, */
 /*     .fb_imageblit = <set by matrox_cfbX_init>, */
 /*     .fb_cursor =    <set by matrox_cfbX_init>, */
+       __FB_DEFAULT_IOMEM_OPS_MMAP,
 };
 
 #define RSDepth(X)     (((X) >> 8) & 0x0F)
index 372197c124dec4caadd72e27517b9f493eb6115c..417fc692468daf9de331c9feb8f5917155b56001 100644 (file)
@@ -567,15 +567,13 @@ static const struct fb_ops matroxfb_dh_ops = {
        .owner =        THIS_MODULE,
        .fb_open =      matroxfb_dh_open,
        .fb_release =   matroxfb_dh_release,
+       FB_DEFAULT_IOMEM_OPS,
        .fb_check_var = matroxfb_dh_check_var,
        .fb_set_par =   matroxfb_dh_set_par,
        .fb_setcolreg = matroxfb_dh_setcolreg,
        .fb_pan_display =matroxfb_dh_pan_display,
        .fb_blank =     matroxfb_dh_blank,
        .fb_ioctl =     matroxfb_dh_ioctl,
-       .fb_fillrect =  cfb_fillrect,
-       .fb_copyarea =  cfb_copyarea,
-       .fb_imageblit = cfb_imageblit,
 };
 
 static struct fb_var_screeninfo matroxfb_dh_defined = {