diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/evergreen.c')
-rw-r--r-- | drivers/gpu/drm/radeon/evergreen.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c index 0137a4cd90f5..8d86d0568d97 100644 --- a/drivers/gpu/drm/radeon/evergreen.c +++ b/drivers/gpu/drm/radeon/evergreen.c | |||
@@ -39,6 +39,47 @@ | |||
39 | static void evergreen_gpu_init(struct radeon_device *rdev); | 39 | static void evergreen_gpu_init(struct radeon_device *rdev); |
40 | void evergreen_fini(struct radeon_device *rdev); | 40 | void evergreen_fini(struct radeon_device *rdev); |
41 | 41 | ||
42 | void evergreen_pm_misc(struct radeon_device *rdev) | ||
43 | { | ||
44 | |||
45 | } | ||
46 | |||
47 | void evergreen_pm_prepare(struct radeon_device *rdev) | ||
48 | { | ||
49 | struct drm_device *ddev = rdev->ddev; | ||
50 | struct drm_crtc *crtc; | ||
51 | struct radeon_crtc *radeon_crtc; | ||
52 | u32 tmp; | ||
53 | |||
54 | /* disable any active CRTCs */ | ||
55 | list_for_each_entry(crtc, &ddev->mode_config.crtc_list, head) { | ||
56 | radeon_crtc = to_radeon_crtc(crtc); | ||
57 | if (radeon_crtc->enabled) { | ||
58 | tmp = RREG32(EVERGREEN_CRTC_CONTROL + radeon_crtc->crtc_offset); | ||
59 | tmp |= EVERGREEN_CRTC_DISP_READ_REQUEST_DISABLE; | ||
60 | WREG32(EVERGREEN_CRTC_CONTROL + radeon_crtc->crtc_offset, tmp); | ||
61 | } | ||
62 | } | ||
63 | } | ||
64 | |||
65 | void evergreen_pm_finish(struct radeon_device *rdev) | ||
66 | { | ||
67 | struct drm_device *ddev = rdev->ddev; | ||
68 | struct drm_crtc *crtc; | ||
69 | struct radeon_crtc *radeon_crtc; | ||
70 | u32 tmp; | ||
71 | |||
72 | /* enable any active CRTCs */ | ||
73 | list_for_each_entry(crtc, &ddev->mode_config.crtc_list, head) { | ||
74 | radeon_crtc = to_radeon_crtc(crtc); | ||
75 | if (radeon_crtc->enabled) { | ||
76 | tmp = RREG32(EVERGREEN_CRTC_CONTROL + radeon_crtc->crtc_offset); | ||
77 | tmp &= ~EVERGREEN_CRTC_DISP_READ_REQUEST_DISABLE; | ||
78 | WREG32(EVERGREEN_CRTC_CONTROL + radeon_crtc->crtc_offset, tmp); | ||
79 | } | ||
80 | } | ||
81 | } | ||
82 | |||
42 | bool evergreen_hpd_sense(struct radeon_device *rdev, enum radeon_hpd_id hpd) | 83 | bool evergreen_hpd_sense(struct radeon_device *rdev, enum radeon_hpd_id hpd) |
43 | { | 84 | { |
44 | bool connected = false; | 85 | bool connected = false; |