]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
fbdev/vt8500lcdfb: Initialize fb_ops with fbdev macros
authorThomas Zimmermann <tzimmermann@suse.de>
Mon, 27 Nov 2023 13:15:51 +0000 (14:15 +0100)
committerThomas Zimmermann <tzimmermann@suse.de>
Wed, 29 Nov 2023 11:20:36 +0000 (12:20 +0100)
Initialize the instance of struct fb_ops with fbdev initializer
macros for framebuffers in DMA-able virtual address space. Set the
read/write, draw and mmap callbacks to the correct implementation
and avoid implicit defaults. Also select the necessary helpers in
Kconfig.

Fbdev drivers sometimes rely on the callbacks being NULL for a
default I/O-memory-based 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.

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

index 6fc43b40acac35cb03c317751246e80f95c3ba27..4e06e403d0217866c5e03eeecda73f2207239353 100644 (file)
@@ -1467,6 +1467,7 @@ config FB_VT8500
        select FB_SYS_FILLRECT if (!FB_WMT_GE_ROPS)
        select FB_SYS_COPYAREA if (!FB_WMT_GE_ROPS)
        select FB_SYS_IMAGEBLIT
+       select FB_SYS_FOPS
        select FB_MODE_HELPERS
        select VIDEOMODE_HELPERS
        help
index 42d39a9d5130f98fe9beb56774b0225e0240e2da..42c25dc851976c5fa823b89fc4f72e5826d17459 100644 (file)
@@ -241,6 +241,7 @@ static int vt8500lcd_blank(int blank, struct fb_info *info)
 
 static const struct fb_ops vt8500lcd_ops = {
        .owner          = THIS_MODULE,
+       __FB_DEFAULT_DMAMEM_OPS_RDWR,
        .fb_set_par     = vt8500lcd_set_par,
        .fb_setcolreg   = vt8500lcd_setcolreg,
        .fb_fillrect    = wmt_ge_fillrect,
@@ -250,6 +251,7 @@ static const struct fb_ops vt8500lcd_ops = {
        .fb_ioctl       = vt8500lcd_ioctl,
        .fb_pan_display = vt8500lcd_pan_display,
        .fb_blank       = vt8500lcd_blank,
+       // .fb_mmap needs DMA mmap
 };
 
 static irqreturn_t vt8500lcd_handle_irq(int irq, void *dev_id)
@@ -357,7 +359,7 @@ static int vt8500lcd_probe(struct platform_device *pdev)
 
        fbi->fb.fix.smem_start  = fb_mem_phys;
        fbi->fb.fix.smem_len    = fb_mem_len;
-       fbi->fb.screen_base     = fb_mem_virt;
+       fbi->fb.screen_buffer   = fb_mem_virt;
 
        fbi->palette_size       = PAGE_ALIGN(512);
        fbi->palette_cpu        = dma_alloc_coherent(&pdev->dev,