Module Name: src
Committed By: kefren
Date: Mon Dec 14 21:01:07 UTC 2009
Modified Files:
src/sys/external/bsd/drm/dist/bsd-core: radeon_drv.c
Log Message:
add suspend/resume hooks for command processor
To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm/dist/bsd-core/radeon_drv.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/external/bsd/drm/dist/bsd-core/radeon_drv.c
diff -u src/sys/external/bsd/drm/dist/bsd-core/radeon_drv.c:1.5 src/sys/external/bsd/drm/dist/bsd-core/radeon_drv.c:1.6
--- src/sys/external/bsd/drm/dist/bsd-core/radeon_drv.c:1.5 Sat Dec 12 14:15:25 2009
+++ src/sys/external/bsd/drm/dist/bsd-core/radeon_drv.c Mon Dec 14 21:01:07 2009
@@ -134,6 +134,29 @@
#elif defined(__NetBSD__)
+static bool
+radeondrm_suspend(device_t self PMF_FN_ARGS)
+{
+ struct drm_device *rad_dev = device_private(self);
+ drm_radeon_cp_stop_t stop_args;
+
+ stop_args.flush = stop_args.idle = 0;
+ if (radeon_cp_stop(rad_dev, &stop_args, rad_dev->lock.file_priv) != 0)
+ return false;
+
+ return true;
+}
+
+static bool
+radeondrm_resume(device_t self PMF_FN_ARGS)
+{
+ struct drm_device *rad_dev = device_private(self);
+ if (radeon_cp_resume(rad_dev, NULL, NULL) != 0)
+ return false;
+
+ return true;
+}
+
static int
radeondrm_probe(device_t parent, cfdata_t match, void *aux)
{
@@ -152,14 +175,22 @@
radeon_configure(dev);
- if (!pmf_device_register(self, NULL, NULL))
+ if (!pmf_device_register(self, radeondrm_suspend, radeondrm_resume))
aprint_error_dev(self, "couldn't establish power handler\n");
drm_attach(self, pa, radeon_pciidlist);
}
+static int
+radeondrm_detach(device_t self, int flags)
+{
+ pmf_device_deregister(self);
+
+ return drm_detach(self, flags);
+}
+
CFATTACH_DECL_NEW(radeondrm, sizeof(struct drm_device),
- radeondrm_probe, radeondrm_attach, drm_detach, NULL);
+ radeondrm_probe, radeondrm_attach, radeondrm_detach, NULL);
#ifdef _MODULE