diff options
author | Mark Brown <broonie@linaro.org> | 2013-10-04 00:30:17 +0100 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2013-10-04 00:30:17 +0100 |
commit | 18d8ff256f495bee7bcf016d9006d4b330e29260 (patch) | |
tree | e3d01967862b312711e27bd790c57e20c723d0c1 /drivers/gpu/drm/nouveau/core/engine/disp/dacnv50.c | |
parent | 2a0458773656240cf6fa97f1126c92dcddf8ab90 (diff) | |
parent | 8c15abc94c737f9120d3d4a550abbcbb9be121f6 (diff) |
Merge tag 'v3.10.14' into linux-linaro-lsk
This is the 3.10.14 stable release
Diffstat (limited to 'drivers/gpu/drm/nouveau/core/engine/disp/dacnv50.c')
-rw-r--r-- | drivers/gpu/drm/nouveau/core/engine/disp/dacnv50.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/drivers/gpu/drm/nouveau/core/engine/disp/dacnv50.c b/drivers/gpu/drm/nouveau/core/engine/disp/dacnv50.c index f02fd9f443f..a66b27c0fca 100644 --- a/drivers/gpu/drm/nouveau/core/engine/disp/dacnv50.c +++ b/drivers/gpu/drm/nouveau/core/engine/disp/dacnv50.c @@ -49,18 +49,23 @@ int nv50_dac_sense(struct nv50_disp_priv *priv, int or, u32 loadval) { const u32 doff = (or * 0x800); - int load = -EINVAL; + nv_mask(priv, 0x61a004 + doff, 0x807f0000, 0x80150000); nv_wait(priv, 0x61a004 + doff, 0x80000000, 0x00000000); + nv_wr32(priv, 0x61a00c + doff, 0x00100000 | loadval); mdelay(9); udelay(500); - nv_wr32(priv, 0x61a00c + doff, 0x80000000); - load = (nv_rd32(priv, 0x61a00c + doff) & 0x38000000) >> 27; - nv_wr32(priv, 0x61a00c + doff, 0x00000000); + loadval = nv_mask(priv, 0x61a00c + doff, 0xffffffff, 0x00000000); + nv_mask(priv, 0x61a004 + doff, 0x807f0000, 0x80550000); nv_wait(priv, 0x61a004 + doff, 0x80000000, 0x00000000); - return load; + + nv_debug(priv, "DAC%d sense: 0x%08x\n", or, loadval); + if (!(loadval & 0x80000000)) + return -ETIMEDOUT; + + return (loadval & 0x38000000) >> 27; } int |