Commit b681993f authored by Ben Skeggs's avatar Ben Skeggs

drm/nvd0/disp: dac load detect

VBIOS does more than this, as does nv50/nvc0 driver in nouveau.  Traces
of the NVIDIA binary driver however, show pretty much just this being
done...  Seems to work for me, it'll be fine for the moment.
Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 629c1b92
...@@ -685,7 +685,22 @@ nvd0_dac_disconnect(struct drm_encoder *encoder) ...@@ -685,7 +685,22 @@ nvd0_dac_disconnect(struct drm_encoder *encoder)
static enum drm_connector_status static enum drm_connector_status
nvd0_dac_detect(struct drm_encoder *encoder, struct drm_connector *connector) 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 static void
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment