projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
0208843
)
drm/nv50: fail auxch transaction if reply count not what we expect
author
Ben Skeggs
<bskeggs@redhat.com>
Thu, 21 Jan 2010 23:10:05 +0000
(09:10 +1000)
committer
Ben Skeggs
<bskeggs@redhat.com>
Mon, 25 Jan 2010 00:35:25 +0000
(10:35 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nouveau_dp.c
patch
|
blob
|
history
diff --git
a/drivers/gpu/drm/nouveau/nouveau_dp.c
b/drivers/gpu/drm/nouveau/nouveau_dp.c
index 9e2926c485790f376fce5af52c50cf93922df9f1..dd4937224220429e42fbf4c36e1da04c3fea5e41 100644
(file)
--- a/
drivers/gpu/drm/nouveau/nouveau_dp.c
+++ b/
drivers/gpu/drm/nouveau/nouveau_dp.c
@@
-490,7
+490,8
@@
nouveau_dp_auxch(struct nouveau_i2c_chan *auxch, int cmd, int addr,
if (!nv_wait(NV50_AUXCH_CTRL(index), 0x00010000, 0x00000000)) {
NV_ERROR(dev, "expected bit 16 == 0, got 0x%08x\n",
nv_rd32(dev, NV50_AUXCH_CTRL(index)));
- return -EBUSY;
+ ret = -EBUSY;
+ goto out;
}
udelay(400);
@@
-501,6
+502,11
@@
nouveau_dp_auxch(struct nouveau_i2c_chan *auxch, int cmd, int addr,
break;
}
+ if ((stat & NV50_AUXCH_STAT_COUNT) != data_nr) {
+ ret = -EREMOTEIO;
+ goto out;
+ }
+
if (cmd & 1) {
for (i = 0; i < 4; i++) {
data32[i] = nv_rd32(dev, NV50_AUXCH_DATA_IN(index, i));