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