Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4c7ffe0b authored by James Simmons's avatar James Simmons Committed by Linus Torvalds
Browse files

[PATCH] fbdev: prevent drivers that have hardware cursors from calling software cursor code



This patch removes drivers that have hardware cursors from calling the
software cursor code.  Also if the driver sets a no hardware cursor flag
then the driver reports a error it someone attempts to use the cursor.

Signed-off-by: default avatarJames Simmons <jsimmons@infradead.org>
Cc: "Antonino A. Daplas" <adaplas@pol.net>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent d2d58384
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -650,7 +650,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
@@ -681,7 +680,6 @@ config FB_RIVA
	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 Riva/Geforce
	  chips.
@@ -720,7 +718,6 @@ config FB_I810
	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 810 
          and 815 chipsets.  Say Y if you have and plan to use such a board.
@@ -763,7 +760,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.
+0 −1
Original line number Diff line number Diff line
@@ -201,7 +201,6 @@
#define HAS_ACCELERATION            2
#define ALWAYS_SYNC                 4
#define LOCKUP                      8
#define USE_HWCUR                  16

struct gtt_data {
	struct agp_memory *i810_fb_memory;
+2 −4
Original line number Diff line number Diff line
@@ -1375,7 +1375,6 @@ static int i810fb_set_par(struct fb_info *info)
	decode_var(&info->var, par);
	i810_load_regs(par);
	i810_init_cursor(par);

	encode_fix(&info->fix, info);

	if (info->var.accel_flags && !(par->dev_flags & LOCKUP)) {
@@ -1418,9 +1417,8 @@ static int i810fb_cursor(struct fb_info *info, struct fb_cursor *cursor)
	struct i810fb_par *par = (struct i810fb_par *)info->par;
	u8 __iomem *mmio = par->mmio_start_virtual;

	if (!(par->dev_flags & USE_HWCUR) || !info->var.accel_flags ||
	    par->dev_flags & LOCKUP)
		return soft_cursor(info, cursor);
	if (!par->dev_flags & LOCKUP)
		return -ENXIO;

	if (cursor->image.width > 64 || cursor->image.height > 64)
		return -ENXIO;
+0 −1
Original line number Diff line number Diff line
@@ -234,7 +234,6 @@ struct intelfb_info {

	/* palette */
	u32 pseudo_palette[17];
	struct { u8 red, green, blue, pad; } palette[256];

	/* chip info */
	int pci_chipset;
+3 −18
Original line number Diff line number Diff line
@@ -117,14 +117,10 @@
#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/fb.h>
#include <linux/console.h>
#include <linux/selection.h>
#include <linux/ioport.h>
#include <linux/init.h>
#include <linux/pci.h>
#include <linux/vmalloc.h>
#include <linux/kd.h>
#include <linux/vt_kern.h>
#include <linux/pagemap.h>
#include <linux/version.h>

@@ -242,7 +238,7 @@ static int voffset = 48;
static char *mode       = NULL;

module_param(accel, bool, S_IRUGO);
MODULE_PARM_DESC(accel, "Enable console acceleration");
MODULE_PARM_DESC(accel, "Enable hardware acceleration");
module_param(vram, int, S_IRUGO);
MODULE_PARM_DESC(vram, "System RAM to allocate to framebuffer in MiB");
module_param(voffset, int, S_IRUGO);
@@ -498,7 +494,7 @@ intelfb_pci_register(struct pci_dev *pdev, const struct pci_device_id *ent)
{
	struct fb_info *info;
	struct intelfb_info *dinfo;
	int i, j, err, dvo;
	int i, err, dvo;
	int aperture_size, stolen_size;
	struct agp_kern_info gtt_info;
	int agp_memtype;
@@ -845,13 +841,6 @@ intelfb_pci_register(struct pci_dev *pdev, const struct pci_device_id *ent)
	if (bailearly == 5)
		bailout(dinfo);

	for (i = 0; i < 16; i++) {
		j = color_table[i];
		dinfo->palette[i].red = default_red[j];
		dinfo->palette[i].green = default_grn[j];
		dinfo->palette[i].blue = default_blu[j];
	}

	if (bailearly == 6)
		bailout(dinfo);

@@ -1363,10 +1352,6 @@ intelfb_setcolreg(unsigned regno, unsigned red, unsigned green,
			green >>= 8;
			blue >>= 8;

			dinfo->palette[regno].red = red;
			dinfo->palette[regno].green = green;
			dinfo->palette[regno].blue = blue;

			intelfbhw_setcolreg(dinfo, regno, red, green, blue,
					    transp);
		}
@@ -1499,7 +1484,7 @@ intelfb_cursor(struct fb_info *info, struct fb_cursor *cursor)
#endif

	if (!dinfo->hwcursor)
		return soft_cursor(info, cursor);
		return -ENXIO;

	intelfbhw_cursor_hide(dinfo);

Loading