diff options
author | Dave Airlie <airlied@redhat.com> | 2014-01-28 18:37:47 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2014-01-28 18:37:47 -0500 |
commit | dee13f12f6ab0c0927adf9168dfc84da93fc9f13 (patch) | |
tree | 593748d4054a7d623ca04be3b93cd9ae7126f961 /drivers/gpu/drm/omapdrm/omap_crtc.c | |
parent | 5a0abe30bebae3e73bf7808f55b2cd0309fa101d (diff) | |
parent | 3d232346c5656b300028b6c920ddc10b229b5264 (diff) |
Merge tag 'omapdrm-3.14' of git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux into drm-next
omapdrm patches for 3.14
* tag 'omapdrm-3.14' of git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux:
drm/omap: Enable DT support for DMM
drm/omap: fix: change dev_unload order
drm/omap: fix: disable encoder before destroying it
drm/omap: fix: disconnect devices when omapdrm module is removed
drm/omap: fix: Defer probe if an omapdss device requests for it at connect
drm/omap: fix (un)registering irqs inside an irq handler
Conflicts:
drivers/gpu/drm/omapdrm/omap_drv.c
Diffstat (limited to 'drivers/gpu/drm/omapdrm/omap_crtc.c')
-rw-r--r-- | drivers/gpu/drm/omapdrm/omap_crtc.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/gpu/drm/omapdrm/omap_crtc.c b/drivers/gpu/drm/omapdrm/omap_crtc.c index 0fd2eb139f6e..4313bb0a49a6 100644 --- a/drivers/gpu/drm/omapdrm/omap_crtc.c +++ b/drivers/gpu/drm/omapdrm/omap_crtc.c | |||
@@ -411,7 +411,7 @@ static void omap_crtc_error_irq(struct omap_drm_irq *irq, uint32_t irqstatus) | |||
411 | struct drm_crtc *crtc = &omap_crtc->base; | 411 | struct drm_crtc *crtc = &omap_crtc->base; |
412 | DRM_ERROR("%s: errors: %08x\n", omap_crtc->name, irqstatus); | 412 | DRM_ERROR("%s: errors: %08x\n", omap_crtc->name, irqstatus); |
413 | /* avoid getting in a flood, unregister the irq until next vblank */ | 413 | /* avoid getting in a flood, unregister the irq until next vblank */ |
414 | omap_irq_unregister(crtc->dev, &omap_crtc->error_irq); | 414 | __omap_irq_unregister(crtc->dev, &omap_crtc->error_irq); |
415 | } | 415 | } |
416 | 416 | ||
417 | static void omap_crtc_apply_irq(struct omap_drm_irq *irq, uint32_t irqstatus) | 417 | static void omap_crtc_apply_irq(struct omap_drm_irq *irq, uint32_t irqstatus) |
@@ -421,13 +421,13 @@ static void omap_crtc_apply_irq(struct omap_drm_irq *irq, uint32_t irqstatus) | |||
421 | struct drm_crtc *crtc = &omap_crtc->base; | 421 | struct drm_crtc *crtc = &omap_crtc->base; |
422 | 422 | ||
423 | if (!omap_crtc->error_irq.registered) | 423 | if (!omap_crtc->error_irq.registered) |
424 | omap_irq_register(crtc->dev, &omap_crtc->error_irq); | 424 | __omap_irq_register(crtc->dev, &omap_crtc->error_irq); |
425 | 425 | ||
426 | if (!dispc_mgr_go_busy(omap_crtc->channel)) { | 426 | if (!dispc_mgr_go_busy(omap_crtc->channel)) { |
427 | struct omap_drm_private *priv = | 427 | struct omap_drm_private *priv = |
428 | crtc->dev->dev_private; | 428 | crtc->dev->dev_private; |
429 | DBG("%s: apply done", omap_crtc->name); | 429 | DBG("%s: apply done", omap_crtc->name); |
430 | omap_irq_unregister(crtc->dev, &omap_crtc->apply_irq); | 430 | __omap_irq_unregister(crtc->dev, &omap_crtc->apply_irq); |
431 | queue_work(priv->wq, &omap_crtc->apply_work); | 431 | queue_work(priv->wq, &omap_crtc->apply_work); |
432 | } | 432 | } |
433 | } | 433 | } |
@@ -623,6 +623,11 @@ void omap_crtc_pre_init(void) | |||
623 | dss_install_mgr_ops(&mgr_ops); | 623 | dss_install_mgr_ops(&mgr_ops); |
624 | } | 624 | } |
625 | 625 | ||
626 | void omap_crtc_pre_uninit(void) | ||
627 | { | ||
628 | dss_uninstall_mgr_ops(); | ||
629 | } | ||
630 | |||
626 | /* initialize crtc */ | 631 | /* initialize crtc */ |
627 | struct drm_crtc *omap_crtc_init(struct drm_device *dev, | 632 | struct drm_crtc *omap_crtc_init(struct drm_device *dev, |
628 | struct drm_plane *plane, enum omap_channel channel, int id) | 633 | struct drm_plane *plane, enum omap_channel channel, int id) |