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_irq.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_irq.c')
-rw-r--r-- | drivers/gpu/drm/omapdrm/omap_irq.c | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/drivers/gpu/drm/omapdrm/omap_irq.c b/drivers/gpu/drm/omapdrm/omap_irq.c index 0e5336e5a791..f035d2bceae7 100644 --- a/drivers/gpu/drm/omapdrm/omap_irq.c +++ b/drivers/gpu/drm/omapdrm/omap_irq.c | |||
@@ -45,12 +45,11 @@ static void omap_irq_update(struct drm_device *dev) | |||
45 | dispc_read_irqenable(); /* flush posted write */ | 45 | dispc_read_irqenable(); /* flush posted write */ |
46 | } | 46 | } |
47 | 47 | ||
48 | void omap_irq_register(struct drm_device *dev, struct omap_drm_irq *irq) | 48 | void __omap_irq_register(struct drm_device *dev, struct omap_drm_irq *irq) |
49 | { | 49 | { |
50 | struct omap_drm_private *priv = dev->dev_private; | 50 | struct omap_drm_private *priv = dev->dev_private; |
51 | unsigned long flags; | 51 | unsigned long flags; |
52 | 52 | ||
53 | dispc_runtime_get(); | ||
54 | spin_lock_irqsave(&list_lock, flags); | 53 | spin_lock_irqsave(&list_lock, flags); |
55 | 54 | ||
56 | if (!WARN_ON(irq->registered)) { | 55 | if (!WARN_ON(irq->registered)) { |
@@ -60,14 +59,21 @@ void omap_irq_register(struct drm_device *dev, struct omap_drm_irq *irq) | |||
60 | } | 59 | } |
61 | 60 | ||
62 | spin_unlock_irqrestore(&list_lock, flags); | 61 | spin_unlock_irqrestore(&list_lock, flags); |
62 | } | ||
63 | |||
64 | void omap_irq_register(struct drm_device *dev, struct omap_drm_irq *irq) | ||
65 | { | ||
66 | dispc_runtime_get(); | ||
67 | |||
68 | __omap_irq_register(dev, irq); | ||
69 | |||
63 | dispc_runtime_put(); | 70 | dispc_runtime_put(); |
64 | } | 71 | } |
65 | 72 | ||
66 | void omap_irq_unregister(struct drm_device *dev, struct omap_drm_irq *irq) | 73 | void __omap_irq_unregister(struct drm_device *dev, struct omap_drm_irq *irq) |
67 | { | 74 | { |
68 | unsigned long flags; | 75 | unsigned long flags; |
69 | 76 | ||
70 | dispc_runtime_get(); | ||
71 | spin_lock_irqsave(&list_lock, flags); | 77 | spin_lock_irqsave(&list_lock, flags); |
72 | 78 | ||
73 | if (!WARN_ON(!irq->registered)) { | 79 | if (!WARN_ON(!irq->registered)) { |
@@ -77,6 +83,14 @@ void omap_irq_unregister(struct drm_device *dev, struct omap_drm_irq *irq) | |||
77 | } | 83 | } |
78 | 84 | ||
79 | spin_unlock_irqrestore(&list_lock, flags); | 85 | spin_unlock_irqrestore(&list_lock, flags); |
86 | } | ||
87 | |||
88 | void omap_irq_unregister(struct drm_device *dev, struct omap_drm_irq *irq) | ||
89 | { | ||
90 | dispc_runtime_get(); | ||
91 | |||
92 | __omap_irq_unregister(dev, irq); | ||
93 | |||
80 | dispc_runtime_put(); | 94 | dispc_runtime_put(); |
81 | } | 95 | } |
82 | 96 | ||