aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/omapdrm/omap_crtc.c2
-rw-r--r--drivers/gpu/drm/omapdrm/omap_drv.c2
-rw-r--r--drivers/gpu/drm/omapdrm/omap_drv.h4
-rw-r--r--drivers/gpu/drm/omapdrm/omap_irq.c18
4 files changed, 14 insertions, 12 deletions
diff --git a/drivers/gpu/drm/omapdrm/omap_crtc.c b/drivers/gpu/drm/omapdrm/omap_crtc.c
index dd47dc191e6b..bd18e8c4f1d0 100644
--- a/drivers/gpu/drm/omapdrm/omap_crtc.c
+++ b/drivers/gpu/drm/omapdrm/omap_crtc.c
@@ -501,6 +501,8 @@ static const struct drm_crtc_funcs omap_crtc_funcs = {
501 .atomic_destroy_state = drm_atomic_helper_crtc_destroy_state, 501 .atomic_destroy_state = drm_atomic_helper_crtc_destroy_state,
502 .atomic_set_property = omap_crtc_atomic_set_property, 502 .atomic_set_property = omap_crtc_atomic_set_property,
503 .atomic_get_property = omap_crtc_atomic_get_property, 503 .atomic_get_property = omap_crtc_atomic_get_property,
504 .enable_vblank = omap_irq_enable_vblank,
505 .disable_vblank = omap_irq_disable_vblank,
504}; 506};
505 507
506static const struct drm_crtc_helper_funcs omap_crtc_helper_funcs = { 508static const struct drm_crtc_helper_funcs omap_crtc_helper_funcs = {
diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
index da049a7636ad..586ed630d458 100644
--- a/drivers/gpu/drm/omapdrm/omap_drv.c
+++ b/drivers/gpu/drm/omapdrm/omap_drv.c
@@ -714,8 +714,6 @@ static struct drm_driver omap_drm_driver = {
714 DRIVER_ATOMIC, 714 DRIVER_ATOMIC,
715 .open = dev_open, 715 .open = dev_open,
716 .lastclose = dev_lastclose, 716 .lastclose = dev_lastclose,
717 .enable_vblank = omap_irq_enable_vblank,
718 .disable_vblank = omap_irq_disable_vblank,
719#ifdef CONFIG_DEBUG_FS 717#ifdef CONFIG_DEBUG_FS
720 .debugfs_init = omap_debugfs_init, 718 .debugfs_init = omap_debugfs_init,
721#endif 719#endif
diff --git a/drivers/gpu/drm/omapdrm/omap_drv.h b/drivers/gpu/drm/omapdrm/omap_drv.h
index 36d93ce84a29..dd71234dbe1b 100644
--- a/drivers/gpu/drm/omapdrm/omap_drv.h
+++ b/drivers/gpu/drm/omapdrm/omap_drv.h
@@ -112,8 +112,8 @@ void omap_gem_describe_objects(struct list_head *list, struct seq_file *m);
112int omap_gem_resume(struct device *dev); 112int omap_gem_resume(struct device *dev);
113#endif 113#endif
114 114
115int omap_irq_enable_vblank(struct drm_device *dev, unsigned int pipe); 115int omap_irq_enable_vblank(struct drm_crtc *crtc);
116void omap_irq_disable_vblank(struct drm_device *dev, unsigned int pipe); 116void omap_irq_disable_vblank(struct drm_crtc *crtc);
117void omap_drm_irq_uninstall(struct drm_device *dev); 117void omap_drm_irq_uninstall(struct drm_device *dev);
118int omap_drm_irq_install(struct drm_device *dev); 118int omap_drm_irq_install(struct drm_device *dev);
119 119
diff --git a/drivers/gpu/drm/omapdrm/omap_irq.c b/drivers/gpu/drm/omapdrm/omap_irq.c
index 9adfa7c99695..59f21add6f19 100644
--- a/drivers/gpu/drm/omapdrm/omap_irq.c
+++ b/drivers/gpu/drm/omapdrm/omap_irq.c
@@ -101,16 +101,17 @@ int omap_irq_wait(struct drm_device *dev, struct omap_irq_wait *wait,
101 * Zero on success, appropriate errno if the given @crtc's vblank 101 * Zero on success, appropriate errno if the given @crtc's vblank
102 * interrupt cannot be enabled. 102 * interrupt cannot be enabled.
103 */ 103 */
104int omap_irq_enable_vblank(struct drm_device *dev, unsigned int pipe) 104int omap_irq_enable_vblank(struct drm_crtc *crtc)
105{ 105{
106 struct drm_device *dev = crtc->dev;
106 struct omap_drm_private *priv = dev->dev_private; 107 struct omap_drm_private *priv = dev->dev_private;
107 struct drm_crtc *crtc = priv->crtcs[pipe];
108 unsigned long flags; 108 unsigned long flags;
109 enum omap_channel channel = omap_crtc_channel(crtc);
109 110
110 DBG("dev=%p, crtc=%u", dev, pipe); 111 DBG("dev=%p, crtc=%u", dev, channel);
111 112
112 spin_lock_irqsave(&priv->wait_lock, flags); 113 spin_lock_irqsave(&priv->wait_lock, flags);
113 priv->irq_mask |= dispc_mgr_get_vsync_irq(omap_crtc_channel(crtc)); 114 priv->irq_mask |= dispc_mgr_get_vsync_irq(channel);
114 omap_irq_update(dev); 115 omap_irq_update(dev);
115 spin_unlock_irqrestore(&priv->wait_lock, flags); 116 spin_unlock_irqrestore(&priv->wait_lock, flags);
116 117
@@ -126,16 +127,17 @@ int omap_irq_enable_vblank(struct drm_device *dev, unsigned int pipe)
126 * a hardware vblank counter, this routine should be a no-op, since 127 * a hardware vblank counter, this routine should be a no-op, since
127 * interrupts will have to stay on to keep the count accurate. 128 * interrupts will have to stay on to keep the count accurate.
128 */ 129 */
129void omap_irq_disable_vblank(struct drm_device *dev, unsigned int pipe) 130void omap_irq_disable_vblank(struct drm_crtc *crtc)
130{ 131{
132 struct drm_device *dev = crtc->dev;
131 struct omap_drm_private *priv = dev->dev_private; 133 struct omap_drm_private *priv = dev->dev_private;
132 struct drm_crtc *crtc = priv->crtcs[pipe];
133 unsigned long flags; 134 unsigned long flags;
135 enum omap_channel channel = omap_crtc_channel(crtc);
134 136
135 DBG("dev=%p, crtc=%u", dev, pipe); 137 DBG("dev=%p, crtc=%u", dev, channel);
136 138
137 spin_lock_irqsave(&priv->wait_lock, flags); 139 spin_lock_irqsave(&priv->wait_lock, flags);
138 priv->irq_mask &= ~dispc_mgr_get_vsync_irq(omap_crtc_channel(crtc)); 140 priv->irq_mask &= ~dispc_mgr_get_vsync_irq(channel);
139 omap_irq_update(dev); 141 omap_irq_update(dev);
140 spin_unlock_irqrestore(&priv->wait_lock, flags); 142 spin_unlock_irqrestore(&priv->wait_lock, flags);
141} 143}