drm: qxl: Don't initialize vblank support
qxl don't have support for hardware vblanks so we can't initialize it here, otherwise we risk getting stuck in drm_wait_one_vblank. Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.co.uk> Link: http://patchwork.freedesktop.org/patch/msgid/20170227204328.18761-4-krisman@collabora.co.uk Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:

committed by
Gerd Hoffmann

parent
715a11fabb
commit
64ca824e71
@@ -293,14 +293,11 @@ static int qxl_crtc_page_flip(struct drm_crtc *crtc,
|
|||||||
qxl_draw_dirty_fb(qdev, qfb_src, bo, 0, 0,
|
qxl_draw_dirty_fb(qdev, qfb_src, bo, 0, 0,
|
||||||
&norect, one_clip_rect, inc);
|
&norect, one_clip_rect, inc);
|
||||||
|
|
||||||
drm_crtc_vblank_get(crtc);
|
|
||||||
|
|
||||||
if (event) {
|
if (event) {
|
||||||
spin_lock_irqsave(&dev->event_lock, flags);
|
spin_lock_irqsave(&dev->event_lock, flags);
|
||||||
drm_crtc_send_vblank_event(crtc, event);
|
drm_crtc_send_vblank_event(crtc, event);
|
||||||
spin_unlock_irqrestore(&dev->event_lock, flags);
|
spin_unlock_irqrestore(&dev->event_lock, flags);
|
||||||
}
|
}
|
||||||
drm_crtc_vblank_put(crtc);
|
|
||||||
|
|
||||||
qxl_bo_unpin(bo);
|
qxl_bo_unpin(bo);
|
||||||
|
|
||||||
@@ -532,29 +529,12 @@ static int qxl_crtc_cursor_move(struct drm_crtc *crtc,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static u32 qxl_noop_get_vblank_counter(struct drm_crtc *crtc)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int qxl_noop_enable_vblank(struct drm_crtc *crtc)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void qxl_noop_disable_vblank(struct drm_crtc *crtc)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
static const struct drm_crtc_funcs qxl_crtc_funcs = {
|
static const struct drm_crtc_funcs qxl_crtc_funcs = {
|
||||||
.cursor_set2 = qxl_crtc_cursor_set2,
|
.cursor_set2 = qxl_crtc_cursor_set2,
|
||||||
.cursor_move = qxl_crtc_cursor_move,
|
.cursor_move = qxl_crtc_cursor_move,
|
||||||
.set_config = drm_crtc_helper_set_config,
|
.set_config = drm_crtc_helper_set_config,
|
||||||
.destroy = qxl_crtc_destroy,
|
.destroy = qxl_crtc_destroy,
|
||||||
.page_flip = qxl_crtc_page_flip,
|
.page_flip = qxl_crtc_page_flip,
|
||||||
.get_vblank_counter = qxl_noop_get_vblank_counter,
|
|
||||||
.enable_vblank = qxl_noop_enable_vblank,
|
|
||||||
.disable_vblank = qxl_noop_disable_vblank,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void qxl_user_framebuffer_destroy(struct drm_framebuffer *fb)
|
void qxl_user_framebuffer_destroy(struct drm_framebuffer *fb)
|
||||||
|
@@ -83,13 +83,9 @@ qxl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||||||
if (ret)
|
if (ret)
|
||||||
goto disable_pci;
|
goto disable_pci;
|
||||||
|
|
||||||
ret = drm_vblank_init(&qdev->ddev, 1);
|
|
||||||
if (ret)
|
|
||||||
goto unload;
|
|
||||||
|
|
||||||
ret = qxl_modeset_init(qdev);
|
ret = qxl_modeset_init(qdev);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto vblank_cleanup;
|
goto unload;
|
||||||
|
|
||||||
drm_kms_helper_poll_init(&qdev->ddev);
|
drm_kms_helper_poll_init(&qdev->ddev);
|
||||||
|
|
||||||
@@ -102,8 +98,6 @@ qxl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||||||
|
|
||||||
modeset_cleanup:
|
modeset_cleanup:
|
||||||
qxl_modeset_fini(qdev);
|
qxl_modeset_fini(qdev);
|
||||||
vblank_cleanup:
|
|
||||||
drm_vblank_cleanup(&qdev->ddev);
|
|
||||||
unload:
|
unload:
|
||||||
qxl_device_fini(qdev);
|
qxl_device_fini(qdev);
|
||||||
disable_pci:
|
disable_pci:
|
||||||
|
Reference in New Issue
Block a user