mirror of
https://github.com/torvalds/linux.git
synced 2024-11-07 12:41:55 +00:00
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: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
629c1b9207
commit
b681993f7a
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user