Commit 6b5084cc authored by Emily Deng's avatar Emily Deng Committed by Alex Deucher

drm/amdgpu: Call pageflip irq funtion when receiced vsync interrupt.

For virtual display feature, as there is no dce engine, so no pageflip irq
generated. So directly call pageflip irq funtion when received vysn interrupt.
Signed-off-by: default avatarEmily Deng <Emily.Deng@amd.com>
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 46ac3622
...@@ -36,6 +36,9 @@ ...@@ -36,6 +36,9 @@
static void dce_virtual_set_display_funcs(struct amdgpu_device *adev); static void dce_virtual_set_display_funcs(struct amdgpu_device *adev);
static void dce_virtual_set_irq_funcs(struct amdgpu_device *adev); static void dce_virtual_set_irq_funcs(struct amdgpu_device *adev);
static int dce_virtual_pageflip_irq(struct amdgpu_device *adev,
struct amdgpu_irq_src *source,
struct amdgpu_iv_entry *entry);
/** /**
* dce_virtual_vblank_wait - vblank wait asic callback. * dce_virtual_vblank_wait - vblank wait asic callback.
...@@ -650,6 +653,7 @@ static enum hrtimer_restart dce_virtual_vblank_timer_handle(struct hrtimer *vbla ...@@ -650,6 +653,7 @@ static enum hrtimer_restart dce_virtual_vblank_timer_handle(struct hrtimer *vbla
unsigned crtc = 0; unsigned crtc = 0;
adev->ddev->vblank[0].count++; adev->ddev->vblank[0].count++;
drm_handle_vblank(adev->ddev, crtc); drm_handle_vblank(adev->ddev, crtc);
dce_virtual_pageflip_irq(adev, NULL, NULL);
hrtimer_start(vblank_timer, ktime_set(0, DCE_VIRTUAL_VBLANK_PERIOD), HRTIMER_MODE_REL); hrtimer_start(vblank_timer, ktime_set(0, DCE_VIRTUAL_VBLANK_PERIOD), HRTIMER_MODE_REL);
return HRTIMER_NORESTART; return HRTIMER_NORESTART;
} }
...@@ -706,8 +710,8 @@ static void dce_virtual_crtc_vblank_int_ack(struct amdgpu_device *adev, ...@@ -706,8 +710,8 @@ static void dce_virtual_crtc_vblank_int_ack(struct amdgpu_device *adev,
} }
static int dce_virtual_crtc_irq(struct amdgpu_device *adev, static int dce_virtual_crtc_irq(struct amdgpu_device *adev,
struct amdgpu_irq_src *source, struct amdgpu_irq_src *source,
struct amdgpu_iv_entry *entry) struct amdgpu_iv_entry *entry)
{ {
unsigned crtc = 0; unsigned crtc = 0;
unsigned irq_type = AMDGPU_CRTC_IRQ_VBLANK1; unsigned irq_type = AMDGPU_CRTC_IRQ_VBLANK1;
...@@ -718,7 +722,7 @@ static int dce_virtual_crtc_irq(struct amdgpu_device *adev, ...@@ -718,7 +722,7 @@ static int dce_virtual_crtc_irq(struct amdgpu_device *adev,
if (amdgpu_irq_enabled(adev, source, irq_type)) { if (amdgpu_irq_enabled(adev, source, irq_type)) {
drm_handle_vblank(adev->ddev, crtc); drm_handle_vblank(adev->ddev, crtc);
} }
dce_virtual_pageflip_irq(adev, NULL, NULL);
DRM_DEBUG("IH: D%d vblank\n", crtc + 1); DRM_DEBUG("IH: D%d vblank\n", crtc + 1);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment