Skip to contentSkip to conversation

fbcon/fbdev: Move softcursor out of fbdev to fbcon

PATCH In review Antonino A. Daplas 1 participant 1 message Oct 18, 2005

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

PATCH 1/17 fbcon/fbdev: Move softcursor out of fbdev to fbcon

According to Jon Smirl, filling in the field fb_cursor with soft_cursor for drivers that do not support hardware cursors is redundant. The soft_cursor function is usable by all drivers because it is just a wrapper around fb_imageblit. And because soft_cursor is an fbcon-specific hook, the file is moved to the console directory.

Thus, drivers that do not support hardware cursors can leave the fb_cursor field blank. For drivers that do, they can fill up this field with their own version.

The end result is a smaller code size. And if the framebuffer console is not loaded, module/kernel size is also reduced because the soft_cursor module will also not be loaded.

---
 drivers/video/68328fb.c                |    1 
 drivers/video/Kconfig                  |   79 ---------------------------------
 drivers/video/Makefile                 |    1 
 drivers/video/acornfb.c                |    1 
 drivers/video/amba-clcd.c              |    1 
 drivers/video/amifb.c                  |    1 
 drivers/video/arcfb.c                  |    1 
 drivers/video/asiliantfb.c             |    1 
 drivers/video/aty/aty128fb.c           |    1 
 drivers/video/aty/atyfb_base.c         |    1 
 drivers/video/aty/radeon_base.c        |    1 
 drivers/video/bw2.c                    |    1 
 drivers/video/cg14.c                   |    1 
 drivers/video/cg3.c                    |    1 
 drivers/video/cg6.c                    |    1 
 drivers/video/chipsfb.c                |    1 
 drivers/video/cirrusfb.c               |    1 
 drivers/video/clps711xfb.c             |    1 
 drivers/video/console/Makefile         |    2 
 drivers/video/console/bitblit.c        |    7 ++
 drivers/video/console/fbcon.h          |    2 
 drivers/video/console/softcursor.c     |   72 ++++++++++++++++++++++++++++++
 drivers/video/controlfb.c              |    1 
 drivers/video/cyber2000fb.c            |    1 
 drivers/video/cyblafb.c                |    1 
 drivers/video/dnfb.c                   |    1 
 drivers/video/epson1355fb.c            |    1 
 drivers/video/ffb.c                    |    3 -
 drivers/video/fm2fb.c                  |    1 
 drivers/video/gbefb.c                  |    1 
 drivers/video/geode/Kconfig            |    1 
 drivers/video/geode/gx1fb_core.c       |    1 
 drivers/video/hitfb.c                  |    1 
 drivers/video/hpfb.c                   |    1 
 drivers/video/imsttfb.c                |    1 
 drivers/video/imxfb.c                  |    1 
 drivers/video/intelfb/intelfbdrv.c     |    2 
 drivers/video/kyro/fbdev.c             |    1 
 drivers/video/leo.c                    |    1 
 drivers/video/macfb.c                  |    1 
 drivers/video/matrox/matroxfb_accel.c  |    2 
 drivers/video/matrox/matroxfb_crtc2.c  |    1 
 drivers/video/maxinefb.c               |    1 
 drivers/video/neofb.c                  |    1 
 drivers/video/nvidia/nvidia.c          |    2 
 drivers/video/offb.c                   |    1 
 drivers/video/p9100.c                  |    1 
 drivers/video/platinumfb.c             |    1 
 drivers/video/pm2fb.c                  |    1 
 drivers/video/pmag-ba-fb.c             |    1 
 drivers/video/pmagb-b-fb.c             |    1 
 drivers/video/pvr2fb.c                 |    1 
 drivers/video/pxafb.c                  |    1 
 drivers/video/q40fb.c                  |    1 
 drivers/video/radeonfb.c               |    1 
 drivers/video/s1d13xxxfb.c             |    1 
 drivers/video/s3c2410fb.c              |    1 
 drivers/video/sa1100fb.c               |    1 
 drivers/video/savage/savagefb_driver.c |    1 
 drivers/video/sgivwfb.c                |    1 
 drivers/video/sis/sis_main.c           |    2 
 drivers/video/skeletonfb.c             |    9 +--
 drivers/video/softcursor.c             |   72 ------------------------------
 drivers/video/sstfb.c                  |    1 
 drivers/video/stifb.c                  |    1 
 drivers/video/tcx.c                    |    1 
 drivers/video/tdfxfb.c                 |    1 
 drivers/video/tgafb.c                  |    1 
 drivers/video/tridentfb.c              |    1 
 drivers/video/tx3912fb.c               |    1 
 drivers/video/valkyriefb.c             |    1 
 drivers/video/vesafb.c                 |    1 
 drivers/video/vfb.c                    |    1 
 drivers/video/vga16fb.c                |    1 
 drivers/video/w100fb.c                 |    1 
 include/linux/fb.h                     |    1 
 76 files changed, 88 insertions(+), 230 deletions(-)
drivers/video/68328fb.c +0 -1
@@ -113,7 +113,6 @@ static struct fb_ops mc68x328fb_ops = {
 	.fb_fillrect	= cfb_fillrect,
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 	.fb_mmap	= mc68x328fb_mmap,
 };
 
drivers/video/Kconfig +0 -79

502 lines not on this page · raw message

drivers/video/Makefile +0 -1
@@ -16,7 +16,6 @@ fb-objs                           := $(f
 obj-$(CONFIG_FB_CFB_FILLRECT)  += cfbfillrect.o
 obj-$(CONFIG_FB_CFB_COPYAREA)  += cfbcopyarea.o
 obj-$(CONFIG_FB_CFB_IMAGEBLIT) += cfbimgblt.o
-obj-$(CONFIG_FB_SOFT_CURSOR)   += softcursor.o
 obj-$(CONFIG_FB_MACMODES)      += macmodes.o
 
 # Hardware specific drivers go first
drivers/video/acornfb.c +0 -1
@@ -926,7 +926,6 @@ static struct fb_ops acornfb_ops = {
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
 	.fb_mmap	= acornfb_mmap,
-	.fb_cursor	= soft_cursor,
 };
 
 /*
drivers/video/amba-clcd.c +0 -1
@@ -332,7 +332,6 @@ static struct fb_ops clcdfb_ops = {
 	.fb_fillrect	= cfb_fillrect,
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 	.fb_mmap	= clcdfb_mmap,
 };
 
drivers/video/amifb.c +0 -1
@@ -1185,7 +1185,6 @@ static struct fb_ops amifb_ops = {
 	.fb_fillrect	= amifb_fillrect,
 	.fb_copyarea	= amifb_copyarea,
 	.fb_imageblit	= amifb_imageblit,
-	.fb_cursor	= soft_cursor,
 	.fb_ioctl	= amifb_ioctl,
 };
 
drivers/video/arcfb.c +0 -1
@@ -514,7 +514,6 @@ static struct fb_ops arcfb_ops = {
 	.fb_fillrect	= arcfb_fillrect,
 	.fb_copyarea	= arcfb_copyarea,
 	.fb_imageblit	= arcfb_imageblit,
-	.fb_cursor	= soft_cursor,
 	.fb_ioctl 	= arcfb_ioctl,
 };
 
drivers/video/asiliantfb.c +0 -1
@@ -106,7 +106,6 @@ static struct fb_ops asiliantfb_ops = {
 	.fb_fillrect	= cfb_fillrect,
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 };
 
 /* Calculate the ratios for the dot clocks without using a single long long
drivers/video/aty/aty128fb.c +0 -1
@@ -478,7 +478,6 @@ static struct fb_ops aty128fb_ops = {
 	.fb_fillrect	= cfb_fillrect,
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 };
 
 #ifdef CONFIG_PMAC_BACKLIGHT
drivers/video/aty/atyfb_base.c +0 -1
@@ -292,7 +292,6 @@ static struct fb_ops atyfb_ops = {
 	.fb_fillrect	= atyfb_fillrect,
 	.fb_copyarea	= atyfb_copyarea,
 	.fb_imageblit	= atyfb_imageblit,
-	.fb_cursor	= soft_cursor,
 #ifdef __sparc__
 	.fb_mmap	= atyfb_mmap,
 #endif
drivers/video/aty/radeon_base.c +0 -1
@@ -1873,7 +1873,6 @@ static struct fb_ops radeonfb_ops = {
 	.fb_fillrect		= radeonfb_fillrect,
 	.fb_copyarea		= radeonfb_copyarea,
 	.fb_imageblit		= radeonfb_imageblit,
-	.fb_cursor		= soft_cursor,
 };
 
 
drivers/video/bw2.c +0 -1
@@ -51,7 +51,6 @@ static struct fb_ops bw2_ops = {
 	.fb_imageblit		= cfb_imageblit,
 	.fb_mmap		= bw2_mmap,
 	.fb_ioctl		= bw2_ioctl,
-	.fb_cursor		= soft_cursor,
 };
 
 /* OBio addresses for the bwtwo registers */
drivers/video/cg14.c +0 -1
@@ -49,7 +49,6 @@ static struct fb_ops cg14_ops = {
 	.fb_imageblit		= cfb_imageblit,
 	.fb_mmap		= cg14_mmap,
 	.fb_ioctl		= cg14_ioctl,
-	.fb_cursor		= soft_cursor,
 };
 
 #define CG14_MCR_INTENABLE_SHIFT	7
drivers/video/cg3.c +0 -1
@@ -50,7 +50,6 @@ static struct fb_ops cg3_ops = {
 	.fb_imageblit		= cfb_imageblit,
 	.fb_mmap		= cg3_mmap,
 	.fb_ioctl		= cg3_ioctl,
-	.fb_cursor		= soft_cursor,
 };
 
 
drivers/video/cg6.c +0 -1
@@ -54,7 +54,6 @@ static struct fb_ops cg6_ops = {
 	.fb_sync		= cg6_sync,
 	.fb_mmap		= cg6_mmap,
 	.fb_ioctl		= cg6_ioctl,
-	.fb_cursor		= soft_cursor,
 };
 
 /* Offset of interesting structures in the OBIO space */
drivers/video/chipsfb.c +0 -1
@@ -91,7 +91,6 @@ static struct fb_ops chipsfb_ops = {
 	.fb_fillrect	= cfb_fillrect,
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 };
 
 static int chipsfb_check_var(struct fb_var_screeninfo *var,
drivers/video/cirrusfb.c +0 -1
@@ -548,7 +548,6 @@ static struct fb_ops cirrusfb_ops = {
 	.fb_fillrect	= cirrusfb_fillrect,
 	.fb_copyarea	= cirrusfb_copyarea,
 	.fb_imageblit	= cirrusfb_imageblit,
-	.fb_cursor	= soft_cursor,
 };
 
 /*--- Hardware Specific Routines -------------------------------------------*/
drivers/video/clps711xfb.c +0 -1
@@ -219,7 +219,6 @@ static struct fb_ops clps7111fb_ops = {
 	.fb_fillrect	= cfb_fillrect,
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 };
 
 static int 
drivers/video/console/Makefile +1 -1
@@ -26,7 +26,7 @@ obj-$(CONFIG_PROM_CONSOLE)        += pro
 obj-$(CONFIG_STI_CONSOLE)         += sticon.o sticore.o font.o
 obj-$(CONFIG_VGA_CONSOLE)         += vgacon.o
 obj-$(CONFIG_MDA_CONSOLE)         += mdacon.o
-obj-$(CONFIG_FRAMEBUFFER_CONSOLE) += fbcon.o bitblit.o font.o
+obj-$(CONFIG_FRAMEBUFFER_CONSOLE) += fbcon.o bitblit.o font.o softcursor.o
 ifeq ($(CONFIG_FB_TILEBLITTING),y)
 obj-$(CONFIG_FRAMEBUFFER_CONSOLE)     += tileblit.o
 endif
drivers/video/console/bitblit.c +6 -1
@@ -272,6 +272,7 @@ static void bit_cursor(struct vc_data *v
 	int w = (vc->vc_font.width + 7) >> 3, c;
 	int y = real_y(p, vc->vc_y);
 	int attribute, use_sw = (vc->vc_cursor_type & 0x10);
+	int err = 1;
 	char *src;
 
 	cursor.set = 0;
@@ -408,7 +409,11 @@ static void bit_cursor(struct vc_data *v
 	cursor.image.depth = 1;
 	cursor.rop = ROP_XOR;
 
-	info->fbops->fb_cursor(info, &cursor);
+	if (info->fbops->fb_cursor)
+		err = info->fbops->fb_cursor(info, &cursor);
+
+	if (err)
+		soft_cursor(info, &cursor);
 
 	ops->cursor_reset = 0;
 }
drivers/video/console/fbcon.h +1 -1
@@ -167,5 +167,5 @@ extern void fbcon_set_tileops(struct vc_
 			      struct display *p, struct fbcon_ops *ops);
 #endif
 extern void fbcon_set_bitops(struct fbcon_ops *ops);
-
+extern int  soft_cursor(struct fb_info *info, struct fb_cursor *cursor);
 #endif /* _VIDEO_FBCON_H */
drivers/video/console/softcursor.c new file +72 -0

72 lines not on this page · raw message

drivers/video/controlfb.c +0 -1
@@ -176,7 +176,6 @@ static struct fb_ops controlfb_ops = {
 	.fb_fillrect	= cfb_fillrect,
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 };
 
 
drivers/video/cyber2000fb.c +0 -1
@@ -1064,7 +1064,6 @@ static struct fb_ops cyber2000fb_ops = {
 	.fb_fillrect	= cyber2000fb_fillrect,
 	.fb_copyarea	= cyber2000fb_copyarea,
 	.fb_imageblit	= cyber2000fb_imageblit,
-	.fb_cursor	= soft_cursor,
 	.fb_sync	= cyber2000fb_sync,
 };
 
drivers/video/cyblafb.c +0 -1
@@ -968,7 +968,6 @@ static struct fb_ops cyblafb_ops __devin
 	.fb_fillrect = cyblafb_fillrect,
 	.fb_copyarea= cyblafb_copyarea,
 	.fb_imageblit = cyblafb_imageblit,
-	.fb_cursor = soft_cursor,
 };
 
 //==========================================================================
drivers/video/dnfb.c +0 -1
@@ -114,7 +114,6 @@ static struct fb_ops dn_fb_ops = {
 	.fb_fillrect	= cfb_fillrect,
 	.fb_copyarea	= dnfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 };
 
 struct fb_var_screeninfo dnfb_var __devinitdata = {
drivers/video/epson1355fb.c +0 -1
@@ -482,7 +482,6 @@ static struct fb_ops epson1355fb_fbops =
 	.fb_imageblit 	= cfb_imageblit,
 	.fb_read 	= epson1355fb_read,
 	.fb_write 	= epson1355fb_write,
-	.fb_cursor 	= soft_cursor,
 };
 
 /* ------------------------------------------------------------------------- */
drivers/video/ffb.c +0 -3
@@ -57,9 +57,6 @@ static struct fb_ops ffb_ops = {
 	.fb_sync		= ffb_sync,
 	.fb_mmap		= ffb_mmap,
 	.fb_ioctl		= ffb_ioctl,
-
-	/* XXX Use FFB hw cursor once fb cursor API is better understood... */
-	.fb_cursor		= soft_cursor,
 };
 
 /* Register layout and definitions */
drivers/video/fm2fb.c +0 -1
@@ -172,7 +172,6 @@ static struct fb_ops fm2fb_ops = {
 	.fb_fillrect	= cfb_fillrect,
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 };
 
     /*
drivers/video/gbefb.c +0 -1
@@ -1038,7 +1038,6 @@ static struct fb_ops gbefb_ops = {
 	.fb_fillrect	= cfb_fillrect,
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 };
 
 /*
drivers/video/geode/Kconfig +0 -1
@@ -14,7 +14,6 @@ config FB_GEODE_GX1
 	select FB_CFB_FILLRECT
 	select FB_CFB_COPYAREA
 	select FB_CFB_IMAGEBLIT
-	select FB_SOFT_CURSOR
 	---help---
 	  Framebuffer driver for the display controller integrated into the
 	  AMD Geode GX1 processor.
drivers/video/geode/gx1fb_core.c +0 -1
@@ -275,7 +275,6 @@ static struct fb_ops gx1fb_ops = {
 	.fb_fillrect	= cfb_fillrect,
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 };
 
 static struct fb_info * __init gx1fb_init_fbinfo(struct device *dev)
drivers/video/hitfb.c +0 -1
@@ -262,7 +262,6 @@ static struct fb_ops hitfb_ops = {
 	.fb_fillrect	= hitfb_fillrect,
 	.fb_copyarea	= hitfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 };
 
 int __init hitfb_init(void)
drivers/video/hpfb.c +0 -1
@@ -193,7 +193,6 @@ static struct fb_ops hpfb_ops = {
 	.fb_fillrect	= hpfb_fillrect,
 	.fb_copyarea	= hpfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 	.fb_sync	= hpfb_sync,
 };
 
drivers/video/imsttfb.c +0 -1
@@ -1344,7 +1344,6 @@ static struct fb_ops imsttfb_ops = {
 	.fb_fillrect	= imsttfb_fillrect,
 	.fb_copyarea	= imsttfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 	.fb_ioctl 	= imsttfb_ioctl,
 };
 
drivers/video/imxfb.c +0 -1
@@ -298,7 +298,6 @@ static struct fb_ops imxfb_ops = {
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
 	.fb_blank	= imxfb_blank,
-	.fb_cursor	= soft_cursor, /* FIXME: i.MX can do hardware cursor */
 };
 
 /*
drivers/video/intelfb/intelfbdrv.c +1 -1
@@ -1485,7 +1485,7 @@ intelfb_cursor(struct fb_info *info, str
 #endif
 
 	if (!dinfo->hwcursor)
-		return soft_cursor(info, cursor);
+		return -ENODEV;
 
 	intelfbhw_cursor_hide(dinfo);
 
drivers/video/kyro/fbdev.c +0 -1
@@ -669,7 +669,6 @@ static struct fb_ops kyrofb_ops = {
 	.fb_fillrect	= cfb_fillrect,
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 };
 
 static int __devinit kyrofb_probe(struct pci_dev *pdev,
drivers/video/leo.c +0 -1
@@ -51,7 +51,6 @@ static struct fb_ops leo_ops = {
 	.fb_imageblit		= cfb_imageblit,
 	.fb_mmap		= leo_mmap,
 	.fb_ioctl		= leo_ioctl,
-	.fb_cursor		= soft_cursor,
 };
 
 #define LEO_OFF_LC_SS0_KRN	0x00200000UL
drivers/video/macfb.c +0 -1
@@ -589,7 +589,6 @@ static struct fb_ops macfb_ops = {
 	.fb_fillrect	= cfb_fillrect,
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 };
 
 void __init macfb_setup(char *options)
drivers/video/matrox/matroxfb_accel.c +1 -1
@@ -122,7 +122,7 @@ void matrox_cfbX_init(WPMINFO2) {
 	ACCESS_FBINFO(fbops).fb_copyarea = cfb_copyarea;
 	ACCESS_FBINFO(fbops).fb_fillrect = cfb_fillrect;
 	ACCESS_FBINFO(fbops).fb_imageblit = cfb_imageblit;
-	ACCESS_FBINFO(fbops).fb_cursor = soft_cursor;
+	ACCESS_FBINFO(fbops).fb_cursor = NULL;
 
 	accel = (ACCESS_FBINFO(fbcon).var.accel_flags & FB_ACCELF_TEXT) == FB_ACCELF_TEXT;
 
drivers/video/matrox/matroxfb_crtc2.c +0 -1
@@ -576,7 +576,6 @@ static struct fb_ops matroxfb_dh_ops = {
 	.fb_fillrect =	cfb_fillrect,
 	.fb_copyarea =	cfb_copyarea,
 	.fb_imageblit =	cfb_imageblit,
-	.fb_cursor =	soft_cursor,
 };
 
 static struct fb_var_screeninfo matroxfb_dh_defined = {
drivers/video/maxinefb.c +0 -1
@@ -113,7 +113,6 @@ static struct fb_ops maxinefb_ops = {
 	.fb_fillrect	= cfb_fillrect,
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 };
 
 int __init maxinefb_init(void)
drivers/video/neofb.c +0 -1
@@ -1665,7 +1665,6 @@ static struct fb_ops neofb_ops = {
 	.fb_fillrect	= neofb_fillrect,
 	.fb_copyarea	= neofb_copyarea,
 	.fb_imageblit	= neofb_imageblit,
-	.fb_cursor	= soft_cursor,
 };
 
 /* --------------------------------------------------------------------- */
drivers/video/nvidia/nvidia.c +1 -1
@@ -1425,7 +1425,7 @@ static int __devinit nvidia_set_fbinfo(s
 	info->pixmap.flags = FB_PIXMAP_SYSTEM;
 
 	if (!hwcur)
-	    info->fbops->fb_cursor = soft_cursor;
+	    info->fbops->fb_cursor = NULL;
 
 	info->var.accel_flags = (!noaccel);
 
drivers/video/offb.c +0 -1
@@ -85,7 +85,6 @@ static struct fb_ops offb_ops = {
 	.fb_fillrect	= cfb_fillrect,
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 };
 
     /*
drivers/video/p9100.c +0 -1
@@ -48,7 +48,6 @@ static struct fb_ops p9100_ops = {
 	.fb_imageblit		= cfb_imageblit,
 	.fb_mmap		= p9100_mmap,
 	.fb_ioctl		= p9100_ioctl,
-	.fb_cursor		= soft_cursor,
 };
 
 /* P9100 control registers */
drivers/video/platinumfb.c +0 -1
@@ -109,7 +109,6 @@ static struct fb_ops platinumfb_ops = {
 	.fb_fillrect	= cfb_fillrect,
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 };
 
 /*
drivers/video/pm2fb.c +0 -1
@@ -1034,7 +1034,6 @@ static struct fb_ops pm2fb_ops = {
 	.fb_fillrect	= cfb_fillrect,
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 };
 
 /*
drivers/video/pmag-ba-fb.c +0 -1
@@ -128,7 +128,6 @@ static struct fb_ops pmagbafb_ops = {
 	.fb_fillrect	= cfb_fillrect,
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 };
 
 
drivers/video/pmagb-b-fb.c +0 -1
@@ -132,7 +132,6 @@ static struct fb_ops pmagbbfb_ops = {
 	.fb_fillrect	= cfb_fillrect,
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 };
 
 
drivers/video/pvr2fb.c +0 -1
@@ -230,7 +230,6 @@ static struct fb_ops pvr2fb_ops = {
 	.fb_fillrect 	= cfb_fillrect,
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 };
 
 static struct fb_videomode pvr2_modedb[] __initdata = {
drivers/video/pxafb.c +0 -1
@@ -418,7 +418,6 @@ static struct fb_ops pxafb_ops = {
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
 	.fb_blank	= pxafb_blank,
-	.fb_cursor	= soft_cursor,
 	.fb_mmap	= pxafb_mmap,
 };
 
drivers/video/q40fb.c +0 -1
@@ -83,7 +83,6 @@ static struct fb_ops q40fb_ops = {
 	.fb_fillrect	= cfb_fillrect,
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 };
 
 static int __init q40fb_probe(struct device *device)
drivers/video/radeonfb.c +0 -1
@@ -2218,7 +2218,6 @@ static struct fb_ops radeonfb_ops = {
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
 #endif
-	.fb_cursor	= soft_cursor,
 };
 
 
drivers/video/s1d13xxxfb.c +0 -1
@@ -388,7 +388,6 @@ static struct fb_ops s1d13xxxfb_fbops = 
 	.fb_fillrect	= cfb_fillrect,
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor
 };
 
 static int s1d13xxxfb_width_tab[2][4] __devinitdata = {
drivers/video/s3c2410fb.c +0 -1
@@ -494,7 +494,6 @@ static struct fb_ops s3c2410fb_ops = {
 	.fb_fillrect	= cfb_fillrect,
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 };
 
 
drivers/video/sa1100fb.c +0 -1
@@ -853,7 +853,6 @@ static struct fb_ops sa1100fb_ops = {
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
 	.fb_blank	= sa1100fb_blank,
-	.fb_cursor	= soft_cursor,
 	.fb_mmap	= sa1100fb_mmap,
 };
 
drivers/video/savage/savagefb_driver.c +0 -1
@@ -1470,7 +1470,6 @@ static struct fb_ops savagefb_ops = {
 	.fb_copyarea    = cfb_copyarea,
 	.fb_imageblit   = cfb_imageblit,
 #endif
-	.fb_cursor      = soft_cursor,
 };
 
 /* --------------------------------------------------------------------- */
drivers/video/sgivwfb.c +0 -1
@@ -124,7 +124,6 @@ static struct fb_ops sgivwfb_ops = {
 	.fb_fillrect	= cfb_fillrect,
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 	.fb_mmap	= sgivwfb_mmap,
 };
 
drivers/video/sis/sis_main.c +2 -0
@@ -2002,7 +2002,9 @@ static struct fb_ops sisfb_ops = {
 	.fb_fillrect	= fbcon_sis_fillrect,
 	.fb_copyarea	= fbcon_sis_copyarea,
 	.fb_imageblit	= cfb_imageblit,
+#ifdef CONFIG_FB_SOFT_CURSOR
 	.fb_cursor	= soft_cursor,
+#endif
 	.fb_sync	= fbcon_sis_sync,
 #ifdef SIS_NEW_CONFIG_COMPAT
 	.fb_compat_ioctl= sisfb_compat_ioctl,
drivers/video/skeletonfb.c +3 -6
@@ -457,11 +457,8 @@ void xxxfb_imageblit(struct fb_info *p, 
 }
 
 /**
- *	xxxfb_cursor - 	REQUIRED function. If your hardware lacks support
- *			for a cursor you can use the default cursor whose
- *			function is called soft_cursor. It will always 
- *			work since it uses xxxfb_imageblit function which 
- *			is required. 	  	 
+ *	xxxfb_cursor - 	OPTIONAL. If your hardware lacks support
+ *			for a cursor, leave this field NULL.
  *
  *      @info: frame buffer structure that represents a single frame buffer
  *	@cursor: structure defining the cursor to draw.
@@ -663,7 +660,7 @@ static struct fb_ops xxxfb_ops = {
 	.fb_fillrect	= xxxfb_fillrect, 	/* Needed !!! */ 
 	.fb_copyarea	= xxxfb_copyarea,	/* Needed !!! */ 
 	.fb_imageblit	= xxxfb_imageblit,	/* Needed !!! */
-	.fb_cursor	= xxxfb_cursor,		/* Needed !!! */
+	.fb_cursor	= xxxfb_cursor,		/* Optional !!! */
 	.fb_rotate	= xxxfb_rotate,
 	.fb_poll	= xxxfb_poll,
 	.fb_sync	= xxxfb_sync,
drivers/video/softcursor.c +0 -72

72 lines not on this page · raw message

drivers/video/sstfb.c +0 -1
@@ -1382,7 +1382,6 @@ static struct fb_ops sstfb_ops = {
 	.fb_fillrect	= cfb_fillrect, /* sstfb_fillrect */
 	.fb_copyarea	= cfb_copyarea, /* sstfb_copyarea */
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 	.fb_ioctl	= sstfb_ioctl,
 };
 
drivers/video/stifb.c +0 -1
@@ -1147,7 +1147,6 @@ static struct fb_ops stifb_ops = {
 	.fb_fillrect	= cfb_fillrect,
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor      = soft_cursor,
 };
 
 
drivers/video/tcx.c +0 -1
@@ -52,7 +52,6 @@ static struct fb_ops tcx_ops = {
 	.fb_imageblit		= cfb_imageblit,
 	.fb_mmap		= tcx_mmap,
 	.fb_ioctl		= tcx_ioctl,
-	.fb_cursor		= soft_cursor,
 };
 
 /* THC definitions */
drivers/video/tdfxfb.c +0 -1
@@ -184,7 +184,6 @@ static struct fb_ops tdfxfb_ops = {
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
 #endif
-	.fb_cursor	= soft_cursor,
 };
 
 /*
drivers/video/tgafb.c +0 -1
@@ -63,7 +63,6 @@ static struct fb_ops tgafb_ops = {
 	.fb_fillrect		= tgafb_fillrect,
 	.fb_copyarea		= tgafb_copyarea,
 	.fb_imageblit		= tgafb_imageblit,
-	.fb_cursor		= soft_cursor,
 };
 
 
drivers/video/tridentfb.c +0 -1
@@ -1293,7 +1293,6 @@ static struct fb_ops tridentfb_ops = {
 	.fb_fillrect = tridentfb_fillrect,
 	.fb_copyarea= tridentfb_copyarea,
 	.fb_imageblit = cfb_imageblit,
-	.fb_cursor = soft_cursor,
 };
 
 module_init(tridentfb_init);
drivers/video/tx3912fb.c +0 -1
@@ -89,7 +89,6 @@ static struct fb_ops tx3912fb_ops = {
 	.fb_fillrect	= cfb_fillrect,
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 };
 
 static int tx3912fb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
drivers/video/valkyriefb.c +0 -1
@@ -135,7 +135,6 @@ static struct fb_ops valkyriefb_ops = {
 	.fb_fillrect	= cfb_fillrect,
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 };
 
 /* Sets the video mode according to info->var */
drivers/video/vesafb.c +0 -1
@@ -213,7 +213,6 @@ static struct fb_ops vesafb_ops = {
 	.fb_fillrect	= cfb_fillrect,
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 };
 
 static int __init vesafb_setup(char *options)
drivers/video/vfb.c +0 -1
@@ -90,7 +90,6 @@ static struct fb_ops vfb_ops = {
 	.fb_fillrect	= cfb_fillrect,
 	.fb_copyarea	= cfb_copyarea,
 	.fb_imageblit	= cfb_imageblit,
-	.fb_cursor	= soft_cursor,
 	.fb_mmap	= vfb_mmap,
 };
 
drivers/video/vga16fb.c +0 -1
@@ -1326,7 +1326,6 @@ static struct fb_ops vga16fb_ops = {
 	.fb_fillrect	= vga16fb_fillrect,
 	.fb_copyarea	= vga16fb_copyarea,
 	.fb_imageblit	= vga16fb_imageblit,
-	.fb_cursor      = soft_cursor,
 };
 
 #ifndef MODULE
drivers/video/w100fb.c +0 -1
@@ -397,7 +397,6 @@ static struct fb_ops w100fb_ops = {
 	.fb_fillrect  = cfb_fillrect,
 	.fb_copyarea  = cfb_copyarea,
 	.fb_imageblit = cfb_imageblit,
-	.fb_cursor    = soft_cursor,
 };
 
 #ifdef CONFIG_PM
include/linux/fb.h +0 -1
@@ -810,7 +810,6 @@ struct fb_info {
 extern int fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var); 
 extern int fb_pan_display(struct fb_info *info, struct fb_var_screeninfo *var); 
 extern int fb_blank(struct fb_info *info, int blank);
-extern int soft_cursor(struct fb_info *info, struct fb_cursor *cursor);
 extern void cfb_fillrect(struct fb_info *info, const struct fb_fillrect *rect); 
 extern void cfb_copyarea(struct fb_info *info, const struct fb_copyarea *area); 
 extern void cfb_imageblit(struct fb_info *info, const struct fb_image *image);

-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions, and more. http://solutions.newsforge.com/ibmarch.tmpl