Commit 63a11ada authored by Thomas Zimmermann's avatar Thomas Zimmermann
Browse files

fbdev/vt8500lcdfb: Initialize fb_ops with fbdev macros



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: default avatarThomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: default avatarJavier Martinez Canillas <javierm@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20231127131655.4020-23-tzimmermann@suse.de
parent dec2d609
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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
+3 −1
Original line number Diff line number Diff line
@@ -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,