From ffb00b6de1239bef34b6b7e23402c44d6fc587e6 Mon Sep 17 00:00:00 2001 From: Ben Skeggs Date: Fri, 8 Jul 2011 11:14:50 +1000 Subject: [PATCH] --- yaml --- r: 269643 b: refs/heads/master c: b681993f7a48b847f3129abd8e8b3926c108a0d9 h: refs/heads/master i: 269641: 6fdcc7dd9a7183970140b6b0f6a4445207709922 269639: 2b1b354d09c56718475a131feeea704e2fe67210 v: v3 --- [refs] | 2 +- trunk/drivers/gpu/drm/nouveau/nvd0_display.c | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 2b8023c24aa7..e110aa49ff6c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 629c1b9207386b00abd6453b72a19b15cd2202f8 +refs/heads/master: b681993f7a48b847f3129abd8e8b3926c108a0d9 diff --git a/trunk/drivers/gpu/drm/nouveau/nvd0_display.c b/trunk/drivers/gpu/drm/nouveau/nvd0_display.c index 6720d63cfccc..f4788d819ed6 100644 --- a/trunk/drivers/gpu/drm/nouveau/nvd0_display.c +++ b/trunk/drivers/gpu/drm/nouveau/nvd0_display.c @@ -685,7 +685,22 @@ nvd0_dac_disconnect(struct drm_encoder *encoder) static enum drm_connector_status nvd0_dac_detect(struct drm_encoder *encoder, struct drm_connector *connector) { - return connector_status_disconnected; + enum drm_connector_status status = connector_status_disconnected; + struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder); + struct drm_device *dev = encoder->dev; + int or = nv_encoder->or; + u32 load; + + nv_wr32(dev, 0x61a00c + (or * 0x800), 0x00100000); + udelay(9500); + nv_wr32(dev, 0x61a00c + (or * 0x800), 0x80000000); + + load = nv_rd32(dev, 0x61a00c + (or * 0x800)); + if ((load & 0x38000000) == 0x38000000) + status = connector_status_connected; + + nv_wr32(dev, 0x61a00c + (or * 0x800), 0x00000000); + return status; } static void