浏览代码

[PATCH] nvidiafb: Fix absence of cursor in nvidiafb

A recent change in nvidiafb caused nvidiafb_cursor to always return -ENXIO
instead of using the soft_cursor.  This will happen if the parameter "hwcur"
is not set, which happens to be the default.

Signed-off-by: Antonino Daplas <adaplas@pol.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Antonino A. Daplas 19 年之前
父节点
当前提交
7a482425f4
共有 2 个文件被更改,包括 5 次插入1 次删除
  1. 1 0
      drivers/video/Kconfig
  2. 4 1
      drivers/video/nvidia/nvidia.c

+ 1 - 0
drivers/video/Kconfig

@@ -650,6 +650,7 @@ config FB_NVIDIA
 	select FB_CFB_FILLRECT
 	select FB_CFB_FILLRECT
 	select FB_CFB_COPYAREA
 	select FB_CFB_COPYAREA
 	select FB_CFB_IMAGEBLIT
 	select FB_CFB_IMAGEBLIT
+	select FB_SOFT_CURSOR
 	help
 	help
 	  This driver supports graphics boards with the nVidia chips, TNT
 	  This driver supports graphics boards with the nVidia chips, TNT
 	  and newer. For very old chipsets, such as the RIVA128, then use
 	  and newer. For very old chipsets, such as the RIVA128, then use

+ 4 - 1
drivers/video/nvidia/nvidia.c

@@ -893,7 +893,7 @@ static int nvidiafb_cursor(struct fb_info *info, struct fb_cursor *cursor)
 	int i, set = cursor->set;
 	int i, set = cursor->set;
 	u16 fg, bg;
 	u16 fg, bg;
 
 
-	if (!hwcur || cursor->image.width > MAX_CURS || cursor->image.height > MAX_CURS)
+	if (cursor->image.width > MAX_CURS || cursor->image.height > MAX_CURS)
 		return -ENXIO;
 		return -ENXIO;
 
 
 	NVShowHideCursor(par, 0);
 	NVShowHideCursor(par, 0);
@@ -1356,6 +1356,9 @@ static int __devinit nvidia_set_fbinfo(struct fb_info *info)
 	info->pixmap.size = 8 * 1024;
 	info->pixmap.size = 8 * 1024;
 	info->pixmap.flags = FB_PIXMAP_SYSTEM;
 	info->pixmap.flags = FB_PIXMAP_SYSTEM;
 
 
+	if (!hwcur)
+	    info->fbops->fb_cursor = soft_cursor;
+
 	info->var.accel_flags = (!noaccel);
 	info->var.accel_flags = (!noaccel);
 
 
 	switch (par->Architecture) {
 	switch (par->Architecture) {