aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/nvidia/nv_accel.c
diff options
context:
space:
mode:
authorAntonino A. Daplas <adaplas@gmail.com>2006-03-27 01:17:22 -0800
committerLinus Torvalds <torvalds@g5.osdl.org>2006-03-27 08:44:55 -0800
commit7a07cd786dbd0111b9dd977e114438220cb4eee5 (patch)
tree5aba3ac594def43624d6014b384b228029b6418c /drivers/video/nvidia/nv_accel.c
parent15bdab959c9bb909c0317480dd9b35748a8f7887 (diff)
downloadlinux-7a07cd786dbd0111b9dd977e114438220cb4eee5.tar.gz
[PATCH] nvidiafb: add suspend and resume hooks
Add suspend and resume hooks to make software suspend more reliable. Resuming from standby should generally work. Resuming from mem and from disk requires that the GPU is disabled. Adding these to the suspend script... fbset -accel false -a /* suspend here */ fbset -accel true -a ... should generally work. In addition, resuming from mem requires that the video card has to be POSTed by the BIOS or some other utility. Signed-off-by: Antonino Daplas <adaplas@pol.net> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/video/nvidia/nv_accel.c')
-rw-r--r--drivers/video/nvidia/nv_accel.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/video/nvidia/nv_accel.c b/drivers/video/nvidia/nv_accel.c
index f377a29ec97a6..4aefb8f416372 100644
--- a/drivers/video/nvidia/nv_accel.c
+++ b/drivers/video/nvidia/nv_accel.c
@@ -300,6 +300,9 @@ int nvidiafb_sync(struct fb_info *info)
{
struct nvidia_par *par = info->par;
+ if (info->state != FBINFO_STATE_RUNNING)
+ return 0;
+
if (!par->lockup)
NVFlush(par);
@@ -313,6 +316,9 @@ void nvidiafb_copyarea(struct fb_info *info, const struct fb_copyarea *region)
{
struct nvidia_par *par = info->par;
+ if (info->state != FBINFO_STATE_RUNNING)
+ return;
+
if (par->lockup)
return cfb_copyarea(info, region);
@@ -329,6 +335,9 @@ void nvidiafb_fillrect(struct fb_info *info, const struct fb_fillrect *rect)
struct nvidia_par *par = info->par;
u32 color;
+ if (info->state != FBINFO_STATE_RUNNING)
+ return;
+
if (par->lockup)
return cfb_fillrect(info, rect);
@@ -412,6 +421,9 @@ void nvidiafb_imageblit(struct fb_info *info, const struct fb_image *image)
{
struct nvidia_par *par = info->par;
+ if (info->state != FBINFO_STATE_RUNNING)
+ return;
+
if (image->depth == 1 && !par->lockup)
nvidiafb_mono_color_expand(info, image);
else