aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nouveau_display.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_display.c')
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_display.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c b/drivers/gpu/drm/nouveau/nouveau_display.c
index b186174fa72..3cb52bc52b2 100644
--- a/drivers/gpu/drm/nouveau/nouveau_display.c
+++ b/drivers/gpu/drm/nouveau/nouveau_display.c
@@ -33,6 +33,7 @@
33#include "nouveau_crtc.h" 33#include "nouveau_crtc.h"
34#include "nouveau_dma.h" 34#include "nouveau_dma.h"
35#include "nouveau_connector.h" 35#include "nouveau_connector.h"
36#include "nouveau_gpio.h"
36#include "nv50_display.h" 37#include "nv50_display.h"
37 38
38static void 39static void
@@ -211,11 +212,19 @@ nouveau_display_init(struct drm_device *dev)
211{ 212{
212 struct drm_nouveau_private *dev_priv = dev->dev_private; 213 struct drm_nouveau_private *dev_priv = dev->dev_private;
213 struct nouveau_display_engine *disp = &dev_priv->engine.display; 214 struct nouveau_display_engine *disp = &dev_priv->engine.display;
215 struct drm_connector *connector;
214 int ret; 216 int ret;
215 217
216 ret = disp->init(dev); 218 ret = disp->init(dev);
217 if (ret == 0) { 219 if (ret)
218 drm_kms_helper_poll_enable(dev); 220 return ret;
221
222 drm_kms_helper_poll_enable(dev);
223
224 /* enable hotplug interrupts */
225 list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
226 struct nouveau_connector *conn = nouveau_connector(connector);
227 nouveau_gpio_irq(dev, 0, conn->hpd, 0xff, true);
219 } 228 }
220 229
221 return ret; 230 return ret;
@@ -226,6 +235,13 @@ nouveau_display_fini(struct drm_device *dev)
226{ 235{
227 struct drm_nouveau_private *dev_priv = dev->dev_private; 236 struct drm_nouveau_private *dev_priv = dev->dev_private;
228 struct nouveau_display_engine *disp = &dev_priv->engine.display; 237 struct nouveau_display_engine *disp = &dev_priv->engine.display;
238 struct drm_connector *connector;
239
240 /* disable hotplug interrupts */
241 list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
242 struct nouveau_connector *conn = nouveau_connector(connector);
243 nouveau_gpio_irq(dev, 0, conn->hpd, 0xff, false);
244 }
229 245
230 drm_kms_helper_poll_disable(dev); 246 drm_kms_helper_poll_disable(dev);
231 disp->fini(dev); 247 disp->fini(dev);