viafb: returns 0 two too early

Otherwise this will already return 0 if iteration MAXLOOP-2 occurs in the
first loop.

Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
Cc: Joseph Chan <josephchan@via.com.tw>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Roel Kluin 2009-03-31 15:25:36 -07:00 коммит произвёл Linus Torvalds
Родитель b83734ec09
Коммит 2bd8c47597
1 изменённых файлов: 6 добавлений и 2 удалений

Просмотреть файл

@ -267,13 +267,17 @@ int viafb_wait_engine_idle(void)
int loop = 0; int loop = 0;
while (!(readl(viaparinfo->io_virt + VIA_REG_STATUS) & while (!(readl(viaparinfo->io_virt + VIA_REG_STATUS) &
VIA_VR_QUEUE_BUSY) && (loop++ < MAXLOOP)) VIA_VR_QUEUE_BUSY) && (loop < MAXLOOP)) {
loop++;
cpu_relax(); cpu_relax();
}
while ((readl(viaparinfo->io_virt + VIA_REG_STATUS) & while ((readl(viaparinfo->io_virt + VIA_REG_STATUS) &
(VIA_CMD_RGTR_BUSY | VIA_2D_ENG_BUSY | VIA_3D_ENG_BUSY)) && (VIA_CMD_RGTR_BUSY | VIA_2D_ENG_BUSY | VIA_3D_ENG_BUSY)) &&
(loop++ < MAXLOOP)) (loop < MAXLOOP)) {
loop++;
cpu_relax(); cpu_relax();
}
return loop >= MAXLOOP; return loop >= MAXLOOP;
} }