summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Hourihane <alanh@fairlite.demon.co.uk>2005-06-28 08:03:33 +0000
committerAlan Hourihane <alanh@fairlite.demon.co.uk>2005-06-28 08:03:33 +0000
commitb6b270a2607088997a0ec74cb1d618f140a382f7 (patch)
tree04bad1e8ba035c41857b9fa0a993d9d26580a0fc
parent75ba453365380851d3297a9d553302021af923b2 (diff)
Given that BenH says using the sysdev approach for DRM is bogus, I'll yank
the code for it, rather than introducing something that isn't going to work 100% of the time.
-rw-r--r--linux-core/Makefile.kernel2
-rw-r--r--linux-core/drmP.h4
-rw-r--r--linux-core/drm_drv.c8
-rw-r--r--linux-core/drm_pm.c152
-rw-r--r--linux-core/drm_stub.c4
-rw-r--r--linux-core/i915_drv.c1
-rw-r--r--shared-core/i915_pm.c26
7 files changed, 1 insertions, 196 deletions
diff --git a/linux-core/Makefile.kernel b/linux-core/Makefile.kernel
index bced069b..36cd2e3d 100644
--- a/linux-core/Makefile.kernel
+++ b/linux-core/Makefile.kernel
@@ -10,7 +10,7 @@
drm-objs := drm_auth.o drm_bufs.o drm_context.o drm_dma.o drm_drawable.o \
drm_drv.o drm_fops.o drm_ioctl.o drm_irq.o \
drm_lock.o drm_memory.o drm_proc.o drm_stub.o drm_vm.o \
- drm_sysfs.o drm_pci.o drm_pm.o drm_agpsupport.o drm_scatter.o \
+ drm_sysfs.o drm_pci.o drm_agpsupport.o drm_scatter.o \
drm_memory_debug.o ati_pcigart.o
tdfx-objs := tdfx_drv.o
r128-objs := r128_drv.o r128_cce.o r128_state.o r128_irq.o
diff --git a/linux-core/drmP.h b/linux-core/drmP.h
index f38c57d4..ff2af8cf 100644
--- a/linux-core/drmP.h
+++ b/linux-core/drmP.h
@@ -80,7 +80,6 @@
#endif
#include <linux/poll.h>
#include <asm/pgalloc.h>
-#include <linux/sysdev.h>
#include "drm.h"
#define __OS_HAS_AGP (defined(CONFIG_AGP) || (defined(CONFIG_AGP_MODULE) && defined(MODULE)))
@@ -542,7 +541,6 @@ struct drm_driver {
int new);
int (*kernel_context_switch_unlock) (struct drm_device * dev);
int (*vblank_wait) (struct drm_device * dev, unsigned int *sequence);
- int (*power) (struct drm_device * dev, unsigned int state);
/**
* Called by \c drm_device_is_agp. Typically used to determine if a
@@ -722,8 +720,6 @@ typedef struct drm_device {
struct drm_driver *driver;
drm_local_map_t *agp_buffer_map;
drm_head_t primary; /**< primary screen head */
-
- struct sys_device sysdev; /**< Power Management device structure */
} drm_device_t;
static __inline__ int drm_core_check_feature(struct drm_device *dev,
diff --git a/linux-core/drm_drv.c b/linux-core/drm_drv.c
index f981631b..6ed5ce1e 100644
--- a/linux-core/drm_drv.c
+++ b/linux-core/drm_drv.c
@@ -268,9 +268,6 @@ int drm_takedown(drm_device_t * dev)
if (drm_core_check_feature(dev, DRIVER_HAVE_DMA))
drm_dma_takedown(dev);
- if (drm_fb_loaded)
- drm_pm_takedown(dev);
-
if (dev->lock.hw_lock) {
dev->sigdata.lock = dev->lock.hw_lock = NULL; /* SHM removed */
dev->lock.filp = NULL;
@@ -339,9 +336,6 @@ int drm_init(struct drm_driver *driver,
if (!drm_fb_loaded)
pci_register_driver(&driver->pci_driver);
else {
- if ((rc = drm_pm_init()))
- return rc;
-
for (i = 0; pciidlist[i].vendor != 0; i++) {
pid = &pciidlist[i];
@@ -355,7 +349,6 @@ int drm_init(struct drm_driver *driver,
pci_dev_get(pdev);
if ((rc = drm_get_dev(pdev, &pciidlist[i], driver))) {
pci_dev_put(pdev);
- drm_pm_exit();
return rc;
}
}
@@ -542,7 +535,6 @@ static void __exit drm_core_exit(void)
unregister_chrdev(DRM_MAJOR, "drm");
drm_free(drm_heads, sizeof(*drm_heads) * cards_limit, DRM_MEM_STUB);
- drm_pm_exit();
}
module_init(drm_core_init);
diff --git a/linux-core/drm_pm.c b/linux-core/drm_pm.c
deleted file mode 100644
index 1e93e1da..00000000
--- a/linux-core/drm_pm.c
+++ /dev/null
@@ -1,152 +0,0 @@
-/**
- * \file drm_pm.h
- * Power management support
- *
- * \author José Fonseca <jrfonseca@tungstengraphics.com>
- */
-
-/*
- * Copyright 2004 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-#define __NO_VERSION__
-#include "drmP.h"
-
-#include <linux/device.h>
-#include <linux/sysdev.h>
-
-
-static int drm_suspend(struct sys_device *sysdev, u32 state)
-{
- struct drm_device *dev =
- container_of(sysdev, struct drm_device, sysdev);
-
- DRM_DEBUG("state=%d\n", state);
-
- if (dev->driver->power)
- return dev->driver->power(dev, state);
- else
- return 0;
-}
-
-static int drm_resume(struct sys_device *sysdev)
-{
- struct drm_device *dev =
- container_of(sysdev, struct drm_device, sysdev);
-
- DRM_DEBUG("\n");
-
- if (dev->driver->power)
- return dev->driver->power(dev, 0);
- else
- return 0;
-}
-
-static int shutdown(struct sys_device *sysdev)
-{
- return 0;
-}
-
-static atomic_t sysdev_loaded = ATOMIC_INIT(-1);
-static struct sysdev_class drm_sysdev_class = {
- set_kset_name("drm"),
- .resume = drm_resume,
- .suspend = drm_suspend,
- .shutdown = shutdown,
-};
-
-
-/**
- * Initialize the Power Management data.
- *
- * \param dev DRM device.
- * \return zero on success or a negative value on failure.
- */
-int drm_pm_setup(drm_device_t *dev)
-{
- int rc;
-
- if (atomic_read(&sysdev_loaded) == -1)
- return 0;
-
- DRM_DEBUG("\n");
-
- dev->sysdev.id = dev->primary.minor;
- dev->sysdev.cls = &drm_sysdev_class;
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,4)
- rc = sys_device_register(&dev->sysdev);
-#else
- rc = sysdev_register(&dev->sysdev);
-#endif
- return rc;
-}
-
-/**
- * Cleanup the Power Management resources.
- *
- * \param dev DRM device.
- */
-void drm_pm_takedown(drm_device_t *dev)
-{
- if (atomic_read(&sysdev_loaded) == -1)
- return;
-
- DRM_DEBUG("\n");
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,4)
- sys_device_unregister(&dev->sysdev);
-#else
- sysdev_unregister(&dev->sysdev);
-#endif
-}
-
-int drm_pm_init(void)
-{
- int rc;
- DRM_DEBUG("\n");
-
- /* triggers on -1 to 0 transition */
- if (!atomic_inc_and_test(&sysdev_loaded))
- return 0;
-
- if ((rc = sysdev_class_register(&drm_sysdev_class))) {
- /* reset it back to -1 */
- atomic_dec(&sysdev_loaded);
- } else {
- /* inc it up to 1 so that unload will trigger on 1->0 */
- atomic_inc(&sysdev_loaded);
- DRM_DEBUG("registered\n");
- }
- return rc;
-}
-
-void __exit drm_pm_exit(void)
-{
- DRM_DEBUG("\n");
- /* triggers on the 1 to 0 transistion */
- if (atomic_dec_and_test(&sysdev_loaded)) {
- sysdev_class_unregister(&drm_sysdev_class);
- DRM_DEBUG("unregisted\n");
- }
-}
diff --git a/linux-core/drm_stub.c b/linux-core/drm_stub.c
index d7baeb84..7d0e075a 100644
--- a/linux-core/drm_stub.c
+++ b/linux-core/drm_stub.c
@@ -94,10 +94,6 @@ static int fill_in_dev(drm_device_t * dev, struct pci_dev *pdev,
dev->driver = driver;
- if (drm_fb_loaded)
- if ((retcode = drm_pm_setup( dev )))
- goto error_out_unreg;
-
if (dev->driver->preinit)
if ((retcode = dev->driver->preinit(dev, ent->driver_data)))
goto error_out_unreg;
diff --git a/linux-core/i915_drv.c b/linux-core/i915_drv.c
index 28154c8c..de6780ec 100644
--- a/linux-core/i915_drv.c
+++ b/linux-core/i915_drv.c
@@ -90,7 +90,6 @@ static struct drm_driver driver = {
.postinit = postinit,
.version = version,
.ioctls = i915_ioctls,
- .power = i915_power,
.fops = {
.owner = THIS_MODULE,
.open = drm_open,
diff --git a/shared-core/i915_pm.c b/shared-core/i915_pm.c
index d2914aa4..e4bda0ce 100644
--- a/shared-core/i915_pm.c
+++ b/shared-core/i915_pm.c
@@ -165,29 +165,3 @@ int i915_resume( struct pci_dev *pdev )
return 0;
}
-
-int i915_power( drm_device_t *dev, unsigned int state )
-{
- drm_i915_private_t *dev_priv =
- (drm_i915_private_t *)dev->dev_private;
-
- DRM_DEBUG("%s state=%d\n", __FUNCTION__, state);
-
- if (!dev_priv) return 0;
-
- /* Save state for power up later */
- if (state != 0) {
- I915_WRITE( SRX_INDEX, SR01 );
- dev_priv->sr01 = I915_READ( SRX_DATA );
- dev_priv->dvoc = I915_READ( DVOC );
- dev_priv->dvob = I915_READ( DVOB );
- dev_priv->lvds = I915_READ( LVDS );
- dev_priv->adpa = I915_READ( ADPA );
- dev_priv->ppcr = I915_READ( PPCR );
- }
-
- /* D0: set DPMS mode on */
- i915_set_dpms(dev, state);
-
- return 0;
-}