diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_display.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 16 | 
1 files changed, 14 insertions, 2 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c index 6d520a3eec40..84cee27cd7ef 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c @@ -99,7 +99,7 @@ static void amdgpu_display_flip_work_func(struct work_struct *__work)  	     & (DRM_SCANOUTPOS_VALID | DRM_SCANOUTPOS_IN_VBLANK)) ==  	    (DRM_SCANOUTPOS_VALID | DRM_SCANOUTPOS_IN_VBLANK) &&  	    (int)(work->target_vblank - -		  amdgpu_get_vblank_counter_kms(adev->ddev, amdgpu_crtc->crtc_id)) > 0) { +		  amdgpu_get_vblank_counter_kms(crtc)) > 0) {  		schedule_delayed_work(&work->flip_work, usecs_to_jiffies(1000));  		return;  	} @@ -219,7 +219,7 @@ int amdgpu_display_crtc_page_flip_target(struct drm_crtc *crtc,  	if (!adev->enable_virtual_display)  		work->base = amdgpu_bo_gpu_offset(new_abo);  	work->target_vblank = target - (uint32_t)drm_crtc_vblank_count(crtc) + -		amdgpu_get_vblank_counter_kms(dev, work->crtc_id); +		amdgpu_get_vblank_counter_kms(crtc);  	/* we borrow the event spin lock for protecting flip_wrok */  	spin_lock_irqsave(&crtc->dev->event_lock, flags); @@ -924,3 +924,15 @@ int amdgpu_display_crtc_idx_to_irq_type(struct amdgpu_device *adev, int crtc)  		return AMDGPU_CRTC_IRQ_NONE;  	}  } + +bool amdgpu_crtc_get_scanout_position(struct drm_crtc *crtc, +			bool in_vblank_irq, int *vpos, +			int *hpos, ktime_t *stime, ktime_t *etime, +			const struct drm_display_mode *mode) +{ +	struct drm_device *dev = crtc->dev; +	unsigned int pipe = crtc->index; + +	return amdgpu_display_get_crtc_scanoutpos(dev, pipe, 0, vpos, hpos, +						  stime, etime, mode); +} | 
