diff options
| author | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2017-02-08 06:26:00 -0500 |
|---|---|---|
| committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2017-02-08 13:23:34 -0500 |
| commit | 0396162ab9c571ee31f01866cbf168066dbf395d (patch) | |
| tree | 87801d3e62d88be595714f6ef0612a2f40714f75 | |
| parent | 82d753567f6f3bb5059bd18e8fd8aa7915fcbe05 (diff) | |
drm/omap: use vblank hooks in struct drm_crtc_funcs
The vblank hooks in struct drm_driver are deprecated and only meant for
legacy drivers. For modern drivers with DRIVER_MODESET flag, the hooks
in struct drm_crtc_funcs should be used instead.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
| -rw-r--r-- | drivers/gpu/drm/omapdrm/omap_crtc.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/omapdrm/omap_drv.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/omapdrm/omap_drv.h | 4 | ||||
| -rw-r--r-- | drivers/gpu/drm/omapdrm/omap_irq.c | 18 |
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 | ||
| 506 | static const struct drm_crtc_helper_funcs omap_crtc_helper_funcs = { | 508 | static 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); | |||
| 112 | int omap_gem_resume(struct device *dev); | 112 | int omap_gem_resume(struct device *dev); |
| 113 | #endif | 113 | #endif |
| 114 | 114 | ||
| 115 | int omap_irq_enable_vblank(struct drm_device *dev, unsigned int pipe); | 115 | int omap_irq_enable_vblank(struct drm_crtc *crtc); |
| 116 | void omap_irq_disable_vblank(struct drm_device *dev, unsigned int pipe); | 116 | void omap_irq_disable_vblank(struct drm_crtc *crtc); |
| 117 | void omap_drm_irq_uninstall(struct drm_device *dev); | 117 | void omap_drm_irq_uninstall(struct drm_device *dev); |
| 118 | int omap_drm_irq_install(struct drm_device *dev); | 118 | int 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 | */ |
| 104 | int omap_irq_enable_vblank(struct drm_device *dev, unsigned int pipe) | 104 | int 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 | */ |
| 129 | void omap_irq_disable_vblank(struct drm_device *dev, unsigned int pipe) | 130 | void 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 | } |
