Skip to content

Commit

Permalink
[PATCH] fbdev: prevent drivers that have hardware cursors from callin…
Browse files Browse the repository at this point in the history
…g 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: James Simmons <jsimmons@infradead.org>
Cc: "Antonino A. Daplas" <adaplas@pol.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
James Simmons authored and Linus Torvalds committed Sep 9, 2005
1 parent d2d5838 commit 4c7ffe0
Show file tree
Hide file tree
Showing 7 changed files with 6 additions and 35 deletions.
4 changes: 0 additions & 4 deletions drivers/video/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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.
Expand Down
1 change: 0 additions & 1 deletion drivers/video/i810/i810.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
6 changes: 2 additions & 4 deletions drivers/video/i810/i810_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)) {
Expand Down Expand Up @@ -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;
Expand Down
1 change: 0 additions & 1 deletion drivers/video/intelfb/intelfb.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
21 changes: 3 additions & 18 deletions drivers/video/intelfb/intelfbdrv.c
Original file line number Diff line number Diff line change
Expand Up @@ -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>

Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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);

Expand Down Expand Up @@ -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);
}
Expand Down Expand Up @@ -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);

Expand Down
4 changes: 0 additions & 4 deletions drivers/video/intelfb/intelfbhw.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,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>

Expand Down
4 changes: 1 addition & 3 deletions drivers/video/nvidia/nvidia.c
Original file line number Diff line number Diff line change
Expand Up @@ -893,7 +893,7 @@ static int nvidiafb_cursor(struct fb_info *info, struct fb_cursor *cursor)
int i, set = cursor->set;
u16 fg, bg;

if (cursor->image.width > MAX_CURS || cursor->image.height > MAX_CURS)
if (!hwcur || cursor->image.width > MAX_CURS || cursor->image.height > MAX_CURS)
return -ENXIO;

NVShowHideCursor(par, 0);
Expand Down Expand Up @@ -1356,8 +1356,6 @@ static int __devinit nvidia_set_fbinfo(struct fb_info *info)
info->pixmap.size = 8 * 1024;
info->pixmap.flags = FB_PIXMAP_SYSTEM;

if (!hwcur)
info->fbops->fb_cursor = soft_cursor;
info->var.accel_flags = (!noaccel);

switch (par->Architecture) {
Expand Down

0 comments on commit 4c7ffe0

Please sign in to comment.