|
@@ -306,7 +306,7 @@ void radeon_crtc_handle_flip(struct radeon_device *rdev, int crtc_id)
|
|
|
* to complete in this vblank?
|
|
|
*/
|
|
|
if (update_pending &&
|
|
|
- (DRM_SCANOUTPOS_VALID & radeon_get_crtc_scanoutpos(rdev->ddev, crtc_id,
|
|
|
+ (DRM_SCANOUTPOS_VALID & radeon_get_crtc_scanoutpos(rdev->ddev, crtc_id, 0,
|
|
|
&vpos, &hpos, NULL, NULL)) &&
|
|
|
((vpos >= (99 * rdev->mode_info.crtcs[crtc_id]->base.hwmode.crtc_vdisplay)/100) ||
|
|
|
(vpos < 0 && !ASIC_IS_AVIVO(rdev)))) {
|
|
@@ -1610,6 +1610,7 @@ bool radeon_crtc_scaling_mode_fixup(struct drm_crtc *crtc,
|
|
|
*
|
|
|
* \param dev Device to query.
|
|
|
* \param crtc Crtc to query.
|
|
|
+ * \param flags Flags from caller (DRM_CALLED_FROM_VBLIRQ or 0).
|
|
|
* \param *vpos Location where vertical scanout position should be stored.
|
|
|
* \param *hpos Location where horizontal scanout position should go.
|
|
|
* \param *stime Target location for timestamp taken immediately before
|
|
@@ -1631,8 +1632,8 @@ bool radeon_crtc_scaling_mode_fixup(struct drm_crtc *crtc,
|
|
|
* unknown small number of scanlines wrt. real scanout position.
|
|
|
*
|
|
|
*/
|
|
|
-int radeon_get_crtc_scanoutpos(struct drm_device *dev, int crtc, int *vpos, int *hpos,
|
|
|
- ktime_t *stime, ktime_t *etime)
|
|
|
+int radeon_get_crtc_scanoutpos(struct drm_device *dev, int crtc, unsigned int flags,
|
|
|
+ int *vpos, int *hpos, ktime_t *stime, ktime_t *etime)
|
|
|
{
|
|
|
u32 stat_crtc = 0, vbl = 0, position = 0;
|
|
|
int vbl_start, vbl_end, vtotal, ret = 0;
|