drm/nv50: fail auxch transaction if reply count not what we expect
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
0208843dd5
commit
0107bae01a
@ -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)) {
|
if (!nv_wait(NV50_AUXCH_CTRL(index), 0x00010000, 0x00000000)) {
|
||||||
NV_ERROR(dev, "expected bit 16 == 0, got 0x%08x\n",
|
NV_ERROR(dev, "expected bit 16 == 0, got 0x%08x\n",
|
||||||
nv_rd32(dev, NV50_AUXCH_CTRL(index)));
|
nv_rd32(dev, NV50_AUXCH_CTRL(index)));
|
||||||
return -EBUSY;
|
ret = -EBUSY;
|
||||||
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
udelay(400);
|
udelay(400);
|
||||||
@ -501,6 +502,11 @@ nouveau_dp_auxch(struct nouveau_i2c_chan *auxch, int cmd, int addr,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((stat & NV50_AUXCH_STAT_COUNT) != data_nr) {
|
||||||
|
ret = -EREMOTEIO;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
if (cmd & 1) {
|
if (cmd & 1) {
|
||||||
for (i = 0; i < 4; i++) {
|
for (i = 0; i < 4; i++) {
|
||||||
data32[i] = nv_rd32(dev, NV50_AUXCH_DATA_IN(index, i));
|
data32[i] = nv_rd32(dev, NV50_AUXCH_DATA_IN(index, i));
|
||||||
|
Loading…
Reference in New Issue
Block a user