diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_drv.c')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_drv.c | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c index 637bd7faf13..71af746a4e4 100644 --- a/drivers/gpu/drm/radeon/radeon_drv.c +++ b/drivers/gpu/drm/radeon/radeon_drv.c | |||
@@ -52,6 +52,28 @@ static int dri_library_name(struct drm_device *dev, char *buf) | |||
52 | "r300")); | 52 | "r300")); |
53 | } | 53 | } |
54 | 54 | ||
55 | static int radeon_suspend(struct drm_device *dev, pm_message_t state) | ||
56 | { | ||
57 | drm_radeon_private_t *dev_priv = dev->dev_private; | ||
58 | |||
59 | /* Disable *all* interrupts */ | ||
60 | if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_RS690) | ||
61 | RADEON_WRITE(R500_DxMODE_INT_MASK, 0); | ||
62 | RADEON_WRITE(RADEON_GEN_INT_CNTL, 0); | ||
63 | return 0; | ||
64 | } | ||
65 | |||
66 | static int radeon_resume(struct drm_device *dev) | ||
67 | { | ||
68 | drm_radeon_private_t *dev_priv = dev->dev_private; | ||
69 | |||
70 | /* Restore interrupt registers */ | ||
71 | if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_RS690) | ||
72 | RADEON_WRITE(R500_DxMODE_INT_MASK, dev_priv->r500_disp_irq_reg); | ||
73 | RADEON_WRITE(RADEON_GEN_INT_CNTL, dev_priv->irq_enable_reg); | ||
74 | return 0; | ||
75 | } | ||
76 | |||
55 | static struct pci_device_id pciidlist[] = { | 77 | static struct pci_device_id pciidlist[] = { |
56 | radeon_PCI_IDS | 78 | radeon_PCI_IDS |
57 | }; | 79 | }; |
@@ -59,8 +81,7 @@ static struct pci_device_id pciidlist[] = { | |||
59 | static struct drm_driver driver = { | 81 | static struct drm_driver driver = { |
60 | .driver_features = | 82 | .driver_features = |
61 | DRIVER_USE_AGP | DRIVER_USE_MTRR | DRIVER_PCI_DMA | DRIVER_SG | | 83 | DRIVER_USE_AGP | DRIVER_USE_MTRR | DRIVER_PCI_DMA | DRIVER_SG | |
62 | DRIVER_HAVE_IRQ | DRIVER_HAVE_DMA | DRIVER_IRQ_SHARED | | 84 | DRIVER_HAVE_IRQ | DRIVER_HAVE_DMA | DRIVER_IRQ_SHARED, |
63 | DRIVER_IRQ_VBL | DRIVER_IRQ_VBL2, | ||
64 | .dev_priv_size = sizeof(drm_radeon_buf_priv_t), | 85 | .dev_priv_size = sizeof(drm_radeon_buf_priv_t), |
65 | .load = radeon_driver_load, | 86 | .load = radeon_driver_load, |
66 | .firstopen = radeon_driver_firstopen, | 87 | .firstopen = radeon_driver_firstopen, |
@@ -69,8 +90,11 @@ static struct drm_driver driver = { | |||
69 | .postclose = radeon_driver_postclose, | 90 | .postclose = radeon_driver_postclose, |
70 | .lastclose = radeon_driver_lastclose, | 91 | .lastclose = radeon_driver_lastclose, |
71 | .unload = radeon_driver_unload, | 92 | .unload = radeon_driver_unload, |
72 | .vblank_wait = radeon_driver_vblank_wait, | 93 | .suspend = radeon_suspend, |
73 | .vblank_wait2 = radeon_driver_vblank_wait2, | 94 | .resume = radeon_resume, |
95 | .get_vblank_counter = radeon_get_vblank_counter, | ||
96 | .enable_vblank = radeon_enable_vblank, | ||
97 | .disable_vblank = radeon_disable_vblank, | ||
74 | .dri_library_name = dri_library_name, | 98 | .dri_library_name = dri_library_name, |
75 | .irq_preinstall = radeon_driver_irq_preinstall, | 99 | .irq_preinstall = radeon_driver_irq_preinstall, |
76 | .irq_postinstall = radeon_driver_irq_postinstall, | 100 | .irq_postinstall = radeon_driver_irq_postinstall, |