diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/evergreen.c')
-rw-r--r-- | drivers/gpu/drm/radeon/evergreen.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c index ec31a8220836..336f0a56edce 100644 --- a/drivers/gpu/drm/radeon/evergreen.c +++ b/drivers/gpu/drm/radeon/evergreen.c | |||
@@ -1313,7 +1313,7 @@ void dce4_wait_for_vblank(struct radeon_device *rdev, int crtc) | |||
1313 | * double buffered update to take place. | 1313 | * double buffered update to take place. |
1314 | * Returns the current update pending status. | 1314 | * Returns the current update pending status. |
1315 | */ | 1315 | */ |
1316 | u32 evergreen_page_flip(struct radeon_device *rdev, int crtc_id, u64 crtc_base) | 1316 | void evergreen_page_flip(struct radeon_device *rdev, int crtc_id, u64 crtc_base) |
1317 | { | 1317 | { |
1318 | struct radeon_crtc *radeon_crtc = rdev->mode_info.crtcs[crtc_id]; | 1318 | struct radeon_crtc *radeon_crtc = rdev->mode_info.crtcs[crtc_id]; |
1319 | u32 tmp = RREG32(EVERGREEN_GRPH_UPDATE + radeon_crtc->crtc_offset); | 1319 | u32 tmp = RREG32(EVERGREEN_GRPH_UPDATE + radeon_crtc->crtc_offset); |
@@ -1345,9 +1345,23 @@ u32 evergreen_page_flip(struct radeon_device *rdev, int crtc_id, u64 crtc_base) | |||
1345 | /* Unlock the lock, so double-buffering can take place inside vblank */ | 1345 | /* Unlock the lock, so double-buffering can take place inside vblank */ |
1346 | tmp &= ~EVERGREEN_GRPH_UPDATE_LOCK; | 1346 | tmp &= ~EVERGREEN_GRPH_UPDATE_LOCK; |
1347 | WREG32(EVERGREEN_GRPH_UPDATE + radeon_crtc->crtc_offset, tmp); | 1347 | WREG32(EVERGREEN_GRPH_UPDATE + radeon_crtc->crtc_offset, tmp); |
1348 | } | ||
1349 | |||
1350 | /** | ||
1351 | * evergreen_page_flip_pending - check if page flip is still pending | ||
1352 | * | ||
1353 | * @rdev: radeon_device pointer | ||
1354 | * @crtc_id: crtc to check | ||
1355 | * | ||
1356 | * Returns the current update pending status. | ||
1357 | */ | ||
1358 | bool evergreen_page_flip_pending(struct radeon_device *rdev, int crtc_id) | ||
1359 | { | ||
1360 | struct radeon_crtc *radeon_crtc = rdev->mode_info.crtcs[crtc_id]; | ||
1348 | 1361 | ||
1349 | /* Return current update_pending status: */ | 1362 | /* Return current update_pending status: */ |
1350 | return RREG32(EVERGREEN_GRPH_UPDATE + radeon_crtc->crtc_offset) & EVERGREEN_GRPH_SURFACE_UPDATE_PENDING; | 1363 | return !!(RREG32(EVERGREEN_GRPH_UPDATE + radeon_crtc->crtc_offset) & |
1364 | EVERGREEN_GRPH_SURFACE_UPDATE_PENDING); | ||
1351 | } | 1365 | } |
1352 | 1366 | ||
1353 | /* get temperature in millidegrees */ | 1367 | /* get temperature in millidegrees */ |