Ping ... Hi Michel, Could you please help to review this? Thanks very much. Best Wishes, Emily Deng > -----Original Message----- > From: amd-gfx [mailto:amd-gfx-bounces at lists.freedesktop.org] On Behalf Of > Emily Deng > Sent: Tuesday, August 16, 2016 6:15 PM > To: amd-gfx at lists.freedesktop.org > Cc: Deng, Emily <Emily.Deng at amd.com> > Subject: [PATCH] drm/amdgpu: For virtual_display feature, the > vblank_get_counter hook is always return 0 when there's no hardware frame > counter which can be used. > > Signed-off-by: Emily Deng <Emily.Deng at amd.com> > --- > drivers/gpu/drm/amd/amdgpu/dce_virtual.c | 16 ++++------------ > 1 file changed, 4 insertions(+), 12 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/dce_virtual.c > b/drivers/gpu/drm/amd/amdgpu/dce_virtual.c > index 2ce5f90..85f14a6 100644 > --- a/drivers/gpu/drm/amd/amdgpu/dce_virtual.c > +++ b/drivers/gpu/drm/amd/amdgpu/dce_virtual.c > @@ -55,10 +55,7 @@ static void dce_virtual_vblank_wait(struct > amdgpu_device *adev, int crtc) > > static u32 dce_virtual_vblank_get_counter(struct amdgpu_device *adev, int > crtc) { > - if (crtc >= adev->mode_info.num_crtc) > - return 0; > - else > - return adev->ddev->vblank[crtc].count; > + return 0; > } > > static void dce_virtual_page_flip(struct amdgpu_device *adev, @@ -70,13 > +67,10 @@ static void dce_virtual_page_flip(struct amdgpu_device *adev, > static int dce_virtual_crtc_get_scanoutpos(struct amdgpu_device *adev, int > crtc, > u32 *vbl, u32 *position) > { > - if ((crtc < 0) || (crtc >= adev->mode_info.num_crtc)) > - return -EINVAL; > - > *vbl = 0; > *position = 0; > > - return 0; > + return -EINVAL; > } > > static bool dce_virtual_hpd_sense(struct amdgpu_device *adev, @@ -405,6 > +399,8 @@ static int dce_virtual_sw_init(void *handle) > if (r) > return r; > > + adev->ddev->max_vblank_count = 0; > + > adev->ddev->mode_config.funcs = &amdgpu_mode_funcs; > > adev->ddev->mode_config.max_width = 16384; @@ -653,7 +649,6 > @@ static enum hrtimer_restart dce_virtual_vblank_timer_handle(struct > hrtimer *vbla > struct amdgpu_mode_info *mode_info = container_of(vblank_timer, > struct amdgpu_mode_info ,vblank_timer); > struct amdgpu_device *adev = container_of(mode_info, struct > amdgpu_device ,mode_info); > unsigned crtc = 0; > - adev->ddev->vblank[0].count++; > 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); @@ -680,8 +675,6 > @@ static void dce_virtual_set_crtc_vblank_interrupt_state(struct > amdgpu_device *ad > hrtimer_cancel(&adev->mode_info.vblank_timer); > } > > - if (!state || (state && !adev->mode_info.vsync_timer_enabled)) > - adev->ddev->vblank[0].count = 0; > adev->mode_info.vsync_timer_enabled = state; > DRM_DEBUG("[FM]set crtc %d vblank interrupt state %d\n", crtc, > state); } @@ -718,7 +711,6 @@ static int dce_virtual_crtc_irq(struct > amdgpu_device *adev, > unsigned crtc = 0; > unsigned irq_type = AMDGPU_CRTC_IRQ_VBLANK1; > > - adev->ddev->vblank[crtc].count++; > dce_virtual_crtc_vblank_int_ack(adev, crtc); > > if (amdgpu_irq_enabled(adev, source, irq_type)) { > -- > 1.9.1 > > _______________________________________________ > amd-gfx mailing list > amd-gfx at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx