[PATCH] fbcon/fbdev: Move softcursor out of fbdev to fbcon
authorAntonino A. Daplas <adaplas@gmail.com>
Mon, 7 Nov 2005 09:00:35 +0000 (01:00 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Mon, 7 Nov 2005 15:53:50 +0000 (07:53 -0800)
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.

Signed-off-by: Antonino Daplas <adaplas@pol.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
76 files changed:
drivers/video/68328fb.c
drivers/video/Kconfig
drivers/video/Makefile
drivers/video/acornfb.c
drivers/video/amba-clcd.c
drivers/video/amifb.c
drivers/video/arcfb.c
drivers/video/asiliantfb.c
drivers/video/aty/aty128fb.c
drivers/video/aty/atyfb_base.c
drivers/video/aty/radeon_base.c
drivers/video/bw2.c
drivers/video/cg14.c
drivers/video/cg3.c
drivers/video/cg6.c
drivers/video/chipsfb.c
drivers/video/cirrusfb.c
drivers/video/clps711xfb.c
drivers/video/console/Makefile
drivers/video/console/bitblit.c
drivers/video/console/fbcon.h
drivers/video/console/softcursor.c [new file with mode: 0644]
drivers/video/controlfb.c
drivers/video/cyber2000fb.c
drivers/video/cyblafb.c
drivers/video/dnfb.c
drivers/video/epson1355fb.c
drivers/video/ffb.c
drivers/video/fm2fb.c
drivers/video/gbefb.c
drivers/video/geode/Kconfig
drivers/video/geode/gx1fb_core.c
drivers/video/hitfb.c
drivers/video/hpfb.c
drivers/video/imsttfb.c
drivers/video/imxfb.c
drivers/video/intelfb/intelfbdrv.c
drivers/video/kyro/fbdev.c
drivers/video/leo.c
drivers/video/macfb.c
drivers/video/matrox/matroxfb_accel.c
drivers/video/matrox/matroxfb_crtc2.c
drivers/video/maxinefb.c
drivers/video/neofb.c
drivers/video/nvidia/nvidia.c
drivers/video/offb.c
drivers/video/p9100.c
drivers/video/platinumfb.c
drivers/video/pm2fb.c
drivers/video/pmag-ba-fb.c
drivers/video/pmagb-b-fb.c
drivers/video/pvr2fb.c
drivers/video/pxafb.c
drivers/video/q40fb.c
drivers/video/radeonfb.c
drivers/video/s1d13xxxfb.c
drivers/video/s3c2410fb.c
drivers/video/sa1100fb.c
drivers/video/savage/savagefb_driver.c
drivers/video/sgivwfb.c
drivers/video/sis/sis_main.c
drivers/video/skeletonfb.c
drivers/video/softcursor.c [deleted file]
drivers/video/sstfb.c
drivers/video/stifb.c
drivers/video/tcx.c
drivers/video/tdfxfb.c
drivers/video/tgafb.c
drivers/video/tridentfb.c
drivers/video/tx3912fb.c
drivers/video/valkyriefb.c
drivers/video/vesafb.c
drivers/video/vfb.c
drivers/video/vga16fb.c
drivers/video/w100fb.c
include/linux/fb.h

index 6a3cfbdc6dc92ed56d2f522f6ea9b7f18378b4ad..3b0ddc55236b7624a5ee48a2fad150711ad90f35 100644 (file)
@@ -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,
 };
 
index 9c54695911c1468e181de9f60f98c3312a5a4d2f..44b6ca290ce36bdcde56a22a8ec13b02e5fa8fd8 100644 (file)
@@ -65,15 +65,6 @@ config FB_CFB_IMAGEBLIT
          blitting. This is used by drivers that don't provide their own
          (accelerated) version.
 
-config FB_SOFT_CURSOR
-       tristate
-       depends on FB
-       default n
-       ---help---
-         Include the soft_cursor function for generic software cursor support.
-         This is used by drivers that don't provide their own (accelerated)
-         version.
-
 config FB_MACMODES
        tristate
        depends on FB
@@ -114,7 +105,6 @@ config FB_CIRRUS
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        ---help---
          This enables support for Cirrus Logic GD542x/543x based boards on
          Amiga: SD64, Piccolo, Picasso II/II+, Picasso IV, or EGS Spectrum.
@@ -133,7 +123,6 @@ config FB_PM2
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          This is the frame buffer device driver for the Permedia2 AGP frame
          buffer card from ASK, aka `Graphic Blaster Exxtreme'.  There is a
@@ -152,7 +141,6 @@ config FB_ARMCLCD
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          This framebuffer device driver is for the ARM PrimeCell PL110
          Colour LCD controller.  ARM PrimeCells provide the building
@@ -169,7 +157,6 @@ config FB_ACORN
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          This is the frame buffer device driver for the Acorn VIDC graphics
          hardware found in Acorn RISC PCs and other ARM-based machines.  If
@@ -181,7 +168,6 @@ config FB_CLPS711X
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          Say Y to enable the Framebuffer driver for the CLPS7111 and
          EP7212 processors.
@@ -192,7 +178,6 @@ config FB_SA1100
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          This is a framebuffer device for the SA-1100 LCD Controller.
          See <http://www.linux-fbdev.org/> for information on framebuffer
@@ -207,7 +192,6 @@ config FB_IMX
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
 
 config FB_CYBER2000
        tristate "CyberPro 2000/2010/5000 support"
@@ -215,7 +199,6 @@ config FB_CYBER2000
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          This enables support for the Integraphics CyberPro 20x0 and 5000
          VGA chips used in the Rebel.com Netwinder and other machines.
@@ -228,7 +211,6 @@ config FB_APOLLO
        default y
        select FB_CFB_FILLRECT
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
 
 config FB_Q40
        bool
@@ -237,12 +219,10 @@ config FB_Q40
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
 
 config FB_AMIGA
        tristate "Amiga native chipset support"
        depends on FB && AMIGA
-       select FB_SOFT_CURSOR
        help
          This is the frame buffer device driver for the builtin graphics
          chipset found in Amigas.
@@ -282,7 +262,6 @@ config FB_CYBER
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          This enables support for the Cybervision 64 graphics card from
          Phase5. Please note that its use is not all that intuitive (i.e. if
@@ -297,7 +276,6 @@ config FB_VIRGE
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          This enables support for the Cybervision 64/3D graphics card from
          Phase5. Please note that its use is not all that intuitive (i.e. if
@@ -320,7 +298,6 @@ config FB_FM2
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          This is the frame buffer device driver for the Amiga FrameMaster
          card from BSC (exhibited 1992 but not shipped as a CBM product).
@@ -331,7 +308,6 @@ config FB_ARC
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          This enables support for the Arc Monochrome LCD board. The board
          is based on the KS-108 lcd controller and is typically a matrix
@@ -354,7 +330,6 @@ config FB_OF
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        select FB_MACMODES
        help
          Say Y if you want support with Open Firmware for your graphics
@@ -366,7 +341,6 @@ config FB_CONTROL
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        select FB_MACMODES
        help
          This driver supports a frame buffer for the graphics adapter in the
@@ -378,7 +352,6 @@ config FB_PLATINUM
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        select FB_MACMODES
        help
          This driver supports a frame buffer for the "platinum" graphics
@@ -390,7 +363,6 @@ config FB_VALKYRIE
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        select FB_MACMODES
        help
          This driver supports a frame buffer for the "valkyrie" graphics
@@ -402,7 +374,6 @@ config FB_CT65550
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          This is the frame buffer device driver for the Chips & Technologies
          65550 graphics chip in PowerBooks.
@@ -413,13 +384,11 @@ config FB_ASILIANT
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
 
 config FB_IMSTT
        bool "IMS Twin Turbo display support"
        depends on (FB = y) && PCI
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        select FB_MACMODES if PPC
        help
          The IMS Twin Turbo is a PCI-based frame buffer card bundled with
@@ -431,7 +400,6 @@ config FB_VGA16
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          This is the frame buffer device driver for VGA 16 color graphic
          cards. Say Y if you have such a card.
@@ -445,7 +413,6 @@ config FB_STI
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        default y
        ---help---
          STI refers to the HP "Standard Text Interface" which is a set of
@@ -466,7 +433,6 @@ config FB_MAC
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        select FB_MACMODES
 
 #      bool '  Apple DAFB display support' CONFIG_FB_DAFB
@@ -475,7 +441,6 @@ config FB_HP300
        depends on (FB = y) && HP300
        select FB_CFB_FILLRECT
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        default y
 
 config FB_TGA
@@ -484,7 +449,6 @@ config FB_TGA
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          This is the frame buffer device driver for generic TGA graphic
          cards. Say Y if you have one of those.
@@ -495,7 +459,6 @@ config FB_VESA
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          This is the frame buffer device driver for generic VESA 2.0
          compliant graphic cards. The older VESA 1.2 cards are not supported.
@@ -513,7 +476,6 @@ config FB_HGA
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          Say Y here if you have a Hercules mono graphics card.
 
@@ -542,7 +504,6 @@ config FB_SGIVW
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          SGI Visual Workstation support for framebuffer graphics.
 
@@ -552,7 +513,6 @@ config FB_GBE
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          This is the frame buffer device driver for SGI Graphics Backend.
          This chip is used in SGI O2 and Visual Workstation 320/540.
@@ -580,7 +540,6 @@ config FB_BW2
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          This is the frame buffer device driver for the BWtwo frame buffer.
 
@@ -589,7 +548,6 @@ config FB_CG3
        depends on (FB = y) && ((SPARC32 || SPARC64) && FB_SBUS || (SUN3 || SUN3X) && FB_SUN3)
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          This is the frame buffer device driver for the CGthree frame buffer.
 
@@ -598,7 +556,6 @@ config FB_CG6
        depends on (FB = y) && ((SPARC32 || SPARC64) && FB_SBUS || (SUN3 || SUN3X) && FB_SUN3)
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          This is the frame buffer device driver for the CGsix (GX, TurboGX)
          frame buffer.
@@ -609,7 +566,6 @@ config FB_PVR2
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        ---help---
          Say Y here if you have a PowerVR 2 card in your box.  If you plan to
          run linux on your Dreamcast, you will have to say Y here.
@@ -631,7 +587,6 @@ config FB_EPSON1355
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          Build in support for the SED1355 Epson Research Embedded RAMDAC
          LCD/CRT Controller (since redesignated as the S1D13505) as a
@@ -676,7 +631,6 @@ config FB_S1D13XXX
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          Support for S1D13XXX framebuffer device family (currently only
          working with S1D13806). Product specs at
@@ -691,7 +645,6 @@ config FB_NVIDIA
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          This driver supports graphics boards with the nVidia chips, TNT
          and newer. For very old chipsets, such as the RIVA128, then use
@@ -809,7 +762,6 @@ config FB_INTEL
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          This driver supports the on-board graphics built in to the Intel
           830M/845G/852GM/855GM/865G chipsets.
@@ -832,7 +784,6 @@ config FB_MATROX
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        select FB_TILEBLITTING
        select FB_MACMODES if PPC_PMAC
        ---help---
@@ -973,7 +924,6 @@ config FB_RADEON_OLD
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        select FB_MACMODES if PPC
        help
          Choose this option if you want to use an ATI Radeon graphics card as
@@ -991,7 +941,6 @@ config FB_RADEON
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        select FB_MACMODES if PPC_OF
        help
          Choose this option if you want to use an ATI Radeon graphics card as
@@ -1029,7 +978,6 @@ config FB_ATY128
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        select FB_MACMODES if PPC_PMAC
        help
          This driver supports graphics boards with the ATI Rage128 chips.
@@ -1045,7 +993,6 @@ config FB_ATY
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        select FB_MACMODES if PPC
        help
          This driver supports graphics boards with the ATI Mach64 chips.
@@ -1103,7 +1050,6 @@ config FB_SAVAGE
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          This driver supports notebooks and computers with S3 Savage PCI/AGP
          chips.
@@ -1140,7 +1086,6 @@ config FB_SIS
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          This is the frame buffer device driver for the SiS 300, 315, 330
          and 340 series as well as XGI V3XT, V5, V8, Z7 graphics chipsets.
@@ -1170,7 +1115,6 @@ config FB_NEOMAGIC
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          This driver supports notebooks with NeoMagic PCI chips.
          Say Y if you have such a graphics card. 
@@ -1184,7 +1128,6 @@ config FB_KYRO
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          Say Y here if you have a STG4000 / Kyro / PowerVR 3 based
          graphics board.
@@ -1198,7 +1141,6 @@ config FB_3DFX
        select FB_CFB_IMAGEBLIT
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
-       select FB_SOFT_CURSOR
        help
          This driver supports graphics boards with the 3Dfx Banshee/Voodoo3
          chips. Say Y if you have such a graphics board.
@@ -1220,7 +1162,6 @@ config FB_VOODOO1
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        ---help---
          Say Y here if you have a 3Dfx Voodoo Graphics (Voodoo1/sst1) or 
          Voodoo2 (cvg) based graphics card.
@@ -1237,7 +1178,6 @@ config FB_CYBLA
        tristate "Cyberblade/i1 support"
        depends on FB && PCI
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        select VIDEO_SELECT
        ---help---
          This driver is supposed to support the Trident Cyberblade/i1
@@ -1265,7 +1205,6 @@ config FB_TRIDENT
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        ---help---
          This driver is supposed to support graphics boards with the
          Trident CyberXXXX/Image/CyberBlade chips mostly found in laptops
@@ -1314,7 +1253,6 @@ config FB_FFB
        depends on FB_SBUS && SPARC64
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          This is the frame buffer device driver for the Creator, Creator3D,
          and Elite3D graphics boards.
@@ -1325,7 +1263,6 @@ config FB_TCX
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          This is the frame buffer device driver for the TCX 24/8bit frame
          buffer.
@@ -1336,7 +1273,6 @@ config FB_CG14
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          This is the frame buffer device driver for the CGfourteen frame
          buffer on Desktop SPARCsystems with the SX graphics option.
@@ -1347,7 +1283,6 @@ config FB_P9100
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          This is the frame buffer device driver for the P9100 card
          supported on Sparcbook 3 machines.
@@ -1358,7 +1293,6 @@ config FB_LEO
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          This is the frame buffer device driver for the SBUS-based Sun ZX
          (leo) frame buffer cards.
@@ -1373,7 +1307,6 @@ config FB_IGA
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          This is the framebuffer device for the INTERGRAPHICS 1680 and
          successor frame buffer cards.
@@ -1384,7 +1317,6 @@ config FB_HIT
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          This is the frame buffer device driver for the Hitachi HD64461 LCD
          frame buffer card.
@@ -1395,7 +1327,6 @@ config FB_PMAG_AA
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          Support for the PMAG-AA TURBOchannel framebuffer card (1280x1024x1)
          used mainly in the MIPS-based DECstation series.
@@ -1406,7 +1337,6 @@ config FB_PMAG_BA
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          Support for the PMAG-BA TURBOchannel framebuffer card (1024x864x8)
          used mainly in the MIPS-based DECstation series.
@@ -1417,7 +1347,6 @@ config FB_PMAGB_B
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          Support for the PMAGB-B TURBOchannel framebuffer card used mainly
          in the MIPS-based DECstation series. The card is currently only
@@ -1429,7 +1358,6 @@ config FB_MAXINE
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          Support for the onboard framebuffer (1024x768x8) in the Personal
          DECstation series (Personal DECstation 5000/20, /25, /33, /50,
@@ -1441,7 +1369,6 @@ config FB_TX3912
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          The TX3912 is a Toshiba RISC processor based on the MIPS 3900 core
          see <http://www.toshiba.com/taec/components/Generic/risc/tx3912.htm>.
@@ -1454,7 +1381,6 @@ config FB_G364
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          The G364 driver is the framebuffer used in MIPS Magnum 4000 and
          Olivetti M700-10 systems.
@@ -1465,7 +1391,6 @@ config FB_68328
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        help
          Say Y here if you want to support the built-in frame buffer of
          the Motorola 68328 CPU family.
@@ -1476,7 +1401,6 @@ config FB_PXA
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        ---help---
          Frame buffer driver for the built-in LCD controller in the Intel
          PXA2x0 processor.
@@ -1511,7 +1435,6 @@ config FB_W100
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        ---help---
          Frame buffer driver for the w100 as found on the Sharp SL-Cxx series.
 
@@ -1528,7 +1451,6 @@ config FB_S3C2410
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        ---help---
          Frame buffer driver for the built-in LCD controller in the Samsung
          S3C2410 processor.
@@ -1552,7 +1474,6 @@ config FB_VIRTUAL
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
-       select FB_SOFT_CURSOR
        ---help---
          This is a `virtual' frame buffer device. It operates on a chunk of
          unswappable kernel memory instead of on the memory of a graphics
index 97c5d03ac8d99e7d70936d90c466eb62e44ab587..aa434e725c0d844af830a0f273339d26c19d0d1b 100644 (file)
@@ -16,7 +16,6 @@ fb-objs                           := $(fb-y)
 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
index 9b6a39348f81ab4415f01d8837c0990219b88efb..193b482570c7e9cc1ee41303ad67d5871b37db90 100644 (file)
@@ -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,
 };
 
 /*
index 4fc93dc2b4d3eb2e1d09536b657e9875cd5d54b7..467a1d7ebbdecdf14f129a34c172e8e0ae5ae5d9 100644 (file)
@@ -333,7 +333,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,
 };
 
index cf8bb67462dc59de02088f46429a134052d8b53a..d549e215f3c57fe944c39583baa6718d9554ee1b 100644 (file)
@@ -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,
 };
 
index 6aa9f824c185ce62749e276c0e05eb80755e786a..a1fc8bbb1090bfe41bfd6bc8b64e4824bc6fe748 100644 (file)
@@ -511,7 +511,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,
 };
 
index f4729f4df8cec0f28aa8157e35c68051dc924df3..c64de59398f499e80507a3e3d582f90d8515bf19 100644 (file)
@@ -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
index e380ee8b0247d629ed65f62557737c2e28d58524..e686185a076d0ee52fabf164f8fa39abc9a66a0c 100644 (file)
@@ -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
index 037fe9d32fe39bf19ed41ee1c83671565ab748b9..5e4523ae85b108b0fc3e2fd61ea0ea1101a4ab08 100644 (file)
@@ -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
index 7ef4b901b93e0b77b27831d32f28a3f76d8eb38d..29f5b2cdbb7ade0f97dba0d92b9bb4a51e2f8e58 100644 (file)
@@ -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,
 };
 
 
index 3d20b2d47d46cbbcfa7445453faa5ee14ec41040..f53bf3ba127898c01a480b69be8b211bf02ab561 100644 (file)
@@ -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 */
index 18e60b941e214df0311eeeb227f191775881c2d6..030d4b13b1c206a5e0ff8ec61012b00d145d8923 100644 (file)
@@ -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
index 6e7d8d45dc68f4e81fb29f5c1740f6c95ae23aa2..b94eee8c42d5dbacba3f2ef509d58e60726cfa2a 100644 (file)
@@ -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,
 };
 
 
index 49a2545671d99f92d293e66a31deb12d5bfd9d0a..3280bb9560e26b2f1ddf9b79511ac1aac7643b84 100644 (file)
@@ -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 */
index 4131243cfdf85e621263f547b7ebe6baf01985ca..bc061d4ec78695f70369f1276bb45b50cdd6f04f 100644 (file)
@@ -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,
index 3a26f9cc8585e796c9824bef75b7a10559d925d0..2858c5c8ba3c2fbca07c0cc4979f024d0853cd5a 100644 (file)
@@ -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 -------------------------------------------*/
index 8692e002986b39206d566aea80827ff859f753a9..50b78af0fa2412d4c11e5901b391f3912db55306 100644 (file)
@@ -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 
index 42c7b8dcd22073397da5f89bdf94ddc62dc71204..71b4b626e328b9a26cfa621ab8ab3df4c36b4ff8 100644 (file)
@@ -26,7 +26,7 @@ obj-$(CONFIG_PROM_CONSOLE)        += promcon.o promcon_tbl.o
 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
index 9f70e512b88bfe0ea54e09c236ec456f5fdc05ac..67857b3cfc8b416f4fe081e940c634ee85531681 100644 (file)
@@ -272,6 +272,7 @@ static void bit_cursor(struct vc_data *vc, struct fb_info *info,
        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 *vc, struct fb_info *info,
        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;
 }
index 0738cd62def219f743c34b93586efeb9e033596d..b68e0e2c2d1657c1c4c5e1aabd2b26591404bc02 100644 (file)
@@ -167,5 +167,5 @@ extern void fbcon_set_tileops(struct vc_data *vc, struct fb_info *info,
                              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 */
diff --git a/drivers/video/console/softcursor.c b/drivers/video/console/softcursor.c
new file mode 100644 (file)
index 0000000..8529bf0
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * linux/drivers/video/softcursor.c -- Generic software cursor for frame buffer devices
+ *
+ *  Created 14 Nov 2002 by James Simmons
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License.  See the file COPYING in the main directory of this archive
+ * for more details.
+ */
+
+#include <linux/module.h>
+#include <linux/string.h>
+#include <linux/tty.h>
+#include <linux/fb.h>
+#include <linux/slab.h>
+
+#include <asm/uaccess.h>
+#include <asm/io.h>
+
+int soft_cursor(struct fb_info *info, struct fb_cursor *cursor)
+{
+       unsigned int scan_align = info->pixmap.scan_align - 1;
+       unsigned int buf_align = info->pixmap.buf_align - 1;
+       unsigned int i, size, dsize, s_pitch, d_pitch;
+       struct fb_image *image;
+       u8 *dst, *src;
+
+       if (info->state != FBINFO_STATE_RUNNING)
+               return 0;
+
+       s_pitch = (cursor->image.width + 7) >> 3;
+       dsize = s_pitch * cursor->image.height;
+
+       src = kmalloc(dsize + sizeof(struct fb_image), GFP_ATOMIC);
+       if (!src)
+               return -ENOMEM;
+
+       image = (struct fb_image *) (src + dsize);
+       *image = cursor->image;
+       d_pitch = (s_pitch + scan_align) & ~scan_align;
+
+       size = d_pitch * image->height + buf_align;
+       size &= ~buf_align;
+       dst = fb_get_buffer_offset(info, &info->pixmap, size);
+
+       if (cursor->enable) {
+               switch (cursor->rop) {
+               case ROP_XOR:
+                       for (i = 0; i < dsize; i++)
+                               src[i] = image->data[i] ^ cursor->mask[i];
+                       break;
+               case ROP_COPY:
+               default:
+                       for (i = 0; i < dsize; i++)
+                               src[i] = image->data[i] & cursor->mask[i];
+                       break;
+               }
+       } else
+               memcpy(src, image->data, dsize);
+
+       fb_pad_aligned_buffer(dst, d_pitch, src, s_pitch, image->height);
+       image->data = dst;
+       info->fbops->fb_imageblit(info, image);
+       kfree(src);
+       return 0;
+}
+
+EXPORT_SYMBOL(soft_cursor);
+
+MODULE_AUTHOR("James Simmons <jsimmons@users.sf.net>");
+MODULE_DESCRIPTION("Generic software cursor");
+MODULE_LICENSE("GPL");
index 989e700159e011fd6a42a798d3d7a22982c78288..403d17377f8db67fce024dbf52e4091225e6a743 100644 (file)
@@ -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,
 };
 
 
index 3894b2a501d6e7a4636e5f5382c22741cd75ca6c..c589d23e7f914e6301bc39b7ed0d91f4c30ee7a3 100644 (file)
@@ -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,
 };
 
index 6992100a508c09175cd527bcb9d10d977f3a769e..03fbe83d71a840660ac1486111c2707d71db3ba2 100644 (file)
@@ -968,7 +968,6 @@ static struct fb_ops cyblafb_ops __devinitdata = {
        .fb_fillrect = cyblafb_fillrect,
        .fb_copyarea= cyblafb_copyarea,
        .fb_imageblit = cyblafb_imageblit,
-       .fb_cursor = soft_cursor,
 };
 
 //==========================================================================
index 1785686a7f11cc8a6120323a6106bc327eb6f345..957a3ada2b75487c5188b65369ae3121d8866c20 100644 (file)
@@ -116,7 +116,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 = {
index 7363d0b25fdfc12fda931d845e24321e346a82b4..6a81a1dd8f3d0bb357db89877bf53c8e4a745802 100644 (file)
@@ -484,7 +484,6 @@ static struct fb_ops epson1355fb_fbops = {
        .fb_imageblit   = cfb_imageblit,
        .fb_read        = epson1355fb_read,
        .fb_write       = epson1355fb_write,
-       .fb_cursor      = soft_cursor,
 };
 
 /* ------------------------------------------------------------------------- */
index 10cd05059fe9d2e995f0b03a2c25b6687474c09d..04417dc16c2e3572084a9edaad40a7af3982d71b 100644 (file)
@@ -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 */
index a0763283d77651219cacab89273061004c2cd1fb..998374cfae6d0686f992cc00938bf4d460a436ec 100644 (file)
@@ -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,
 };
 
     /*
index ed853bef19e9d85ccf4532f8251d00321b28c814..9d5e4f342110acb4dbf34b3f8a835a2d1daaaf69 100644 (file)
@@ -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,
 };
 
 /*
index 5a9b89c3831b1f7e254be8e047a24a2b4be3f904..42fb9a89a7927f833c8ecf24fc34c465a8d24da9 100644 (file)
@@ -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.
index 74a5fca86b8ac505c32f9041523fbe04c0082e9f..8e8da743399416eafa71a730f50cca80a4b1f1e8 100644 (file)
@@ -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)
index 0d376ba54814f94ea4ed0625a82121cb5a30a0e5..f04ca721f94c53895f19f72b23e2998b48d2ffc7 100644 (file)
@@ -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)
index e97fe8481d59f5b52c17b052dcebd24783c7ca3b..bebdac59d231330c353940a009ba612807f4de37 100644 (file)
@@ -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,
 };
 
index 7b9bf45ab6fe89251e59c19deeb890c9583401f5..7fbe24206b190458b8b9aeb89e123cb47b8b6aa2 100644 (file)
@@ -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,
 };
 
index 64d9bcc38da387fee71f375a0cfde75ce2d9bc4b..e20b9f3a255fb65b99e3a0fd37d276cbbbb8957d 100644 (file)
@@ -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 */
 };
 
 /*
index e6d75b926dc8e19244ecdea897ddd1d6d49575f1..0799b999b3143e361aef7cf39e0a211137ec50de 100644 (file)
@@ -1485,7 +1485,7 @@ intelfb_cursor(struct fb_info *info, struct fb_cursor *cursor)
 #endif
 
        if (!dinfo->hwcursor)
-               return soft_cursor(info, cursor);
+               return -ENODEV;
 
        intelfbhw_cursor_hide(dinfo);
 
index d8bac9e978421b97dcbe09f34f2b8ec893aa6881..5eb4d5c177bd1899a5caeea3d536a7d4ec414e2b 100644 (file)
@@ -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,
index 7e1e7fb168bd3e31dd10b4ad727639389a0b5392..84a7fe435bb82bd082c770b51cbae2b511c8d361 100644 (file)
@@ -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
index 4945a4c02209ed6f87dc98807f03823c9b838721..cfc748e9427260037a075a0ad78ebdc8e90c4560 100644 (file)
@@ -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)
index c7f3e1321224d36e582bab8298f37b54d2b5c86e..a5c825d994661090c990e6423fb6245a063902b1 100644 (file)
@@ -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;
 
index 429047ac615a5cf5d3c3f4a103fc1b869c1516b9..d52d7d825c41439ccb7825b0ea9be41d363ae303 100644 (file)
@@ -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 = {
index f192d995d0303e64dca0bb3a765cc21690aaeb2e..743e7ad26acc3299f32e5903b9c4bc474a249fcb 100644 (file)
@@ -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)
index 5d424a30270acda396d49c204d04241244a18962..8486e77872dc0a6c1789f230ed85dc9717d1ee6d 100644 (file)
@@ -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,
 };
 
 /* --------------------------------------------------------------------- */
index 691151e2bce3addc243b488206a5ffeaff33172b..cbe165bb181db374fb8c9c3ac60ae370d35d098d 100644 (file)
@@ -1433,7 +1433,7 @@ static int __devinit nvidia_set_fbinfo(struct fb_info *info)
        info->pixmap.flags = FB_PIXMAP_SYSTEM;
 
        if (!hwcur)
-           info->fbops->fb_cursor = soft_cursor;
+           info->fbops->fb_cursor = NULL;
 
        info->var.accel_flags = (!noaccel);
 
index 611922c0b22fbb8e4906be82b85c446c5351a1a4..2c856838694e1c87187ebe655c418ff0a63ae651 100644 (file)
@@ -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,
 };
 
     /*
index b76a5a9a125be4dde6d77959e780aed6fa664391..9aaf65fb623ae99e0df6dc2289c1f7e7379af89d 100644 (file)
@@ -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 */
index b00887e9851cf938da8fa6dca5994366ef0982ed..ca4082ae5a18d34313a3a71c7ef2b34b977a484e 100644 (file)
@@ -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,
 };
 
 /*
index 42c17efa9fb086befad749eb6e8f58021fef72d8..f4188fe6dd9a4cc8a9cca6080dbae575d6cba8d5 100644 (file)
@@ -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,
 };
 
 /*
index c98f1c8d7dc27b6127fc430ceea517772b1de11d..f3927b6cda9d4d7f6edc8c29a65be8249577e5fc 100644 (file)
@@ -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,
 };
 
 
index a483b13e117b71f93eab7b0e042075b481adf547..25148de5fe6795799999269bd3a92cb0991a0311 100644 (file)
@@ -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,
 };
 
 
index 31c547fd383bf7d49484667e52a2bf779bbd4018..ec4bacf9dd2e90d2c4b0d696356bdcfff6ee9b53 100644 (file)
@@ -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 = {
index efd9333b05c24001b13a8212be03a91215dbcdaf..f305a5b77b23f8db3311315349a5cb24041ad37f 100644 (file)
@@ -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,
 };
 
index 8416b2e2b501f7cc723f95f55525f21196a429bd..bfc41f2c902a2d93576b3a86f051b927a4e692bd 100644 (file)
@@ -84,7 +84,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)
index a78b9bd8f89752c856d05e06dc4e74c25faecdad..600318f708f294e2aafd4e2c04aa9767778735b8 100644 (file)
@@ -2218,7 +2218,6 @@ static struct fb_ops radeonfb_ops = {
        .fb_copyarea    = cfb_copyarea,
        .fb_imageblit   = cfb_imageblit,
 #endif
-       .fb_cursor      = soft_cursor,
 };
 
 
index f4437430dc5f1bf1633ebd1e00f2d152ce31f452..3edbd14c5c469565500ce970866d2ef24ee86453 100644 (file)
@@ -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 = {
index 3cef90456a4b3fb341c10defa60043aad77404b8..bf679312be060b27c23d6ef57eb36a8fb8a64f69 100644 (file)
@@ -495,7 +495,6 @@ static struct fb_ops s3c2410fb_ops = {
        .fb_fillrect    = cfb_fillrect,
        .fb_copyarea    = cfb_copyarea,
        .fb_imageblit   = cfb_imageblit,
-       .fb_cursor      = soft_cursor,
 };
 
 
index 3d35b28aaac7140affeedd874c4e9e3093b82204..a5184575cfae1696da0709d7db4298d638d93c94 100644 (file)
@@ -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,
 };
 
index 7c285455c924d5c407f13b5a6b5aba55ebf6b694..378ea1e34de76f2b75af9a0baaadc2e3e816bf2b 100644 (file)
@@ -1470,7 +1470,6 @@ static struct fb_ops savagefb_ops = {
        .fb_copyarea    = cfb_copyarea,
        .fb_imageblit   = cfb_imageblit,
 #endif
-       .fb_cursor      = soft_cursor,
 };
 
 /* --------------------------------------------------------------------- */
index 5ce81f44c7692f3d05421930cedc1b43e6a838b9..2e8769dd345a8ec0cedf06b3e7a0c1a857c3a19a 100644 (file)
@@ -126,7 +126,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,
 };
 
index 42c54b69726e8b769ada57f5c90ac7eedd5bf093..dea1a46c67c4fe232e24874fd08f15f46e7702b3 100644 (file)
@@ -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,
index 7b43716ab66565c7d858f6ee2da92fa8318b3f3b..a01e7ecc15ed01daf66d0bcbad8a0834f85688bd 100644 (file)
@@ -457,11 +457,8 @@ void xxxfb_imageblit(struct fb_info *p, const struct fb_image *image)
 }
 
 /**
- *     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,
diff --git a/drivers/video/softcursor.c b/drivers/video/softcursor.c
deleted file mode 100644 (file)
index 229c4bc..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * linux/drivers/video/softcursor.c -- Generic software cursor for frame buffer devices
- *
- *  Created 14 Nov 2002 by James Simmons 
- *
- * This file is subject to the terms and conditions of the GNU General Public
- * License.  See the file COPYING in the main directory of this archive
- * for more details.
- */
-
-#include <linux/module.h>
-#include <linux/string.h>
-#include <linux/tty.h>
-#include <linux/fb.h>
-#include <linux/slab.h>
-
-#include <asm/uaccess.h>
-#include <asm/io.h>
-
-int soft_cursor(struct fb_info *info, struct fb_cursor *cursor)
-{
-       unsigned int scan_align = info->pixmap.scan_align - 1;
-       unsigned int buf_align = info->pixmap.buf_align - 1;
-       unsigned int i, size, dsize, s_pitch, d_pitch;
-       struct fb_image *image;
-       u8 *dst, *src;
-
-       if (info->state != FBINFO_STATE_RUNNING)
-               return 0;
-
-       s_pitch = (cursor->image.width + 7) >> 3;
-       dsize = s_pitch * cursor->image.height;
-
-       src = kmalloc(dsize + sizeof(struct fb_image), GFP_ATOMIC);
-       if (!src)
-               return -ENOMEM;
-
-       image = (struct fb_image *) (src + dsize);
-       *image = cursor->image;
-       d_pitch = (s_pitch + scan_align) & ~scan_align;
-
-       size = d_pitch * image->height + buf_align;
-       size &= ~buf_align;
-       dst = fb_get_buffer_offset(info, &info->pixmap, size);
-
-       if (cursor->enable) {
-               switch (cursor->rop) {
-               case ROP_XOR:
-                       for (i = 0; i < dsize; i++)
-                               src[i] = image->data[i] ^ cursor->mask[i];
-                       break;
-               case ROP_COPY:
-               default:
-                       for (i = 0; i < dsize; i++)
-                               src[i] = image->data[i] & cursor->mask[i];
-                       break;
-               }
-       } else 
-               memcpy(src, image->data, dsize);
-       
-       fb_pad_aligned_buffer(dst, d_pitch, src, s_pitch, image->height);
-       image->data = dst;
-       info->fbops->fb_imageblit(info, image);
-       kfree(src);
-       return 0;
-}
-
-EXPORT_SYMBOL(soft_cursor);
-MODULE_AUTHOR("James Simmons <jsimmons@users.sf.net>");
-MODULE_DESCRIPTION("Generic software cursor");
-MODULE_LICENSE("GPL");
index 663d53657fa4cf7bbdf50cbe769460ac0c432795..e0f14df840d927129bf4865248c1d066b5ebc6d6 100644 (file)
@@ -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,
 };
 
index 9e52794768e6110f21c701d3eaf9b7d95e478250..fbb17332afd7118de3ef96fc07353db72e9c1769 100644 (file)
@@ -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,
 };
 
 
index 1986a8b3833cee1c6cef12a036263abdff7fc640..59fff29bc02e528c8c4d1c845d340da1de88ee35 100644 (file)
@@ -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 */
index 7044226c5d4c929e394bfcec1e9a85d61304deab..9d53387e6a666119337353c3efeb2e42a77f60fd 100644 (file)
@@ -184,7 +184,6 @@ static struct fb_ops tdfxfb_ops = {
        .fb_copyarea    = cfb_copyarea,
        .fb_imageblit   = cfb_imageblit,
 #endif
-       .fb_cursor      = soft_cursor,
 };
 
 /*
index 9d9d2009ad8caa3af457d263afa5c8717227016a..7398bd48ba6c261c1a18079b1dda976446839570 100644 (file)
@@ -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,
 };
 
 
index 81a6d9f188cf76ea4fb0020f71f6b75fc027c7f8..9ac2d3171187855286c7869e1ea33f5f0c7cebe2 100644 (file)
@@ -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);
index 39d9ca71856b12aae581a72832287731e58c75b0..d904da44e1aacf280497bb174f4caccaf7bf4cb8 100644 (file)
@@ -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)
index 31a2bbc53974e2fd785ade7f0cc8f23f4ebaceb4..ce97ec8eae9756792d150ed33e7391dfe7583c7d 100644 (file)
@@ -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 */
index 3cc23106641db10e1a7787f52c5f9c3ee6d4dcf1..4f02615225ac6c92ad9c77276cbb547aaf7f9f6f 100644 (file)
@@ -215,7 +215,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)
index 92d46555dd86e2fd02ee7985ef8ba41ca44d1b48..8794dc5d24667527fdd838481bd5f18f4b3482eb 100644 (file)
@@ -92,7 +92,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,
 };
 
index b46454c55c91b01767753d356c2963e9ca6b080d..690bb6fe82812082d00dc04a410531aa1e7abaef 100644 (file)
@@ -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
index cf8cdb108fd95c0d1eb2f3be7e947804e6a5abb8..48e70f153c4b23857aea147451418547c431f87f 100644 (file)
@@ -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
index c698055266d062b09fa7e19b447144c67fd82c22..008ea71f4d7fbee7f790877cb5e2f5e537728c41 100644 (file)
@@ -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);