Commit e77cef9c authored by Jerome Glisse's avatar Jerome Glisse Committed by Dave Airlie

drm: Avoid calling vblank function is vblank wasn't initialized

In some case vblank might not be initialized and we shouldn't
try to use associated function. This patch make sure this is
the case. It also export drm_vblank_cleanup so driver can cleanup
vblank if for any reason IRQ/MSI is not working.
Signed-off-by: default avatarJerome Glisse <jglisse@redhat.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent 059d233f
...@@ -115,6 +115,7 @@ void drm_vblank_cleanup(struct drm_device *dev) ...@@ -115,6 +115,7 @@ void drm_vblank_cleanup(struct drm_device *dev)
dev->num_crtcs = 0; dev->num_crtcs = 0;
} }
EXPORT_SYMBOL(drm_vblank_cleanup);
int drm_vblank_init(struct drm_device *dev, int num_crtcs) int drm_vblank_init(struct drm_device *dev, int num_crtcs)
{ {
...@@ -163,7 +164,6 @@ int drm_vblank_init(struct drm_device *dev, int num_crtcs) ...@@ -163,7 +164,6 @@ int drm_vblank_init(struct drm_device *dev, int num_crtcs)
} }
dev->vblank_disable_allowed = 0; dev->vblank_disable_allowed = 0;
return 0; return 0;
err: err:
...@@ -493,6 +493,9 @@ EXPORT_SYMBOL(drm_vblank_off); ...@@ -493,6 +493,9 @@ EXPORT_SYMBOL(drm_vblank_off);
*/ */
void drm_vblank_pre_modeset(struct drm_device *dev, int crtc) void drm_vblank_pre_modeset(struct drm_device *dev, int crtc)
{ {
/* vblank is not initialized (IRQ not installed ?) */
if (!dev->num_crtcs)
return;
/* /*
* To avoid all the problems that might happen if interrupts * To avoid all the problems that might happen if interrupts
* were enabled/disabled around or between these calls, we just * were enabled/disabled around or between these calls, we just
......
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