diff options
author | Roel Kluin <roel.kluin@gmail.com> | 2009-03-31 18:25:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-04-01 11:59:32 -0400 |
commit | 2bd8c47597b2522795f5eb2e61c22dcfec5dfa6a (patch) | |
tree | 37d6d0617059f42680ec2dc458da2841856064dc /drivers/video/via | |
parent | b83734ec0975e1f53420b7a2d454612fc905a9d0 (diff) |
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>
Diffstat (limited to 'drivers/video/via')
-rw-r--r-- | drivers/video/via/accel.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/video/via/accel.c b/drivers/video/via/accel.c index 632523ff1fb7..45c54bfe99bb 100644 --- a/drivers/video/via/accel.c +++ b/drivers/video/via/accel.c | |||
@@ -267,13 +267,17 @@ int viafb_wait_engine_idle(void) | |||
267 | int loop = 0; | 267 | int loop = 0; |
268 | 268 | ||
269 | while (!(readl(viaparinfo->io_virt + VIA_REG_STATUS) & | 269 | while (!(readl(viaparinfo->io_virt + VIA_REG_STATUS) & |
270 | VIA_VR_QUEUE_BUSY) && (loop++ < MAXLOOP)) | 270 | VIA_VR_QUEUE_BUSY) && (loop < MAXLOOP)) { |
271 | loop++; | ||
271 | cpu_relax(); | 272 | cpu_relax(); |
273 | } | ||
272 | 274 | ||
273 | while ((readl(viaparinfo->io_virt + VIA_REG_STATUS) & | 275 | while ((readl(viaparinfo->io_virt + VIA_REG_STATUS) & |
274 | (VIA_CMD_RGTR_BUSY | VIA_2D_ENG_BUSY | VIA_3D_ENG_BUSY)) && | 276 | (VIA_CMD_RGTR_BUSY | VIA_2D_ENG_BUSY | VIA_3D_ENG_BUSY)) && |
275 | (loop++ < MAXLOOP)) | 277 | (loop < MAXLOOP)) { |
278 | loop++; | ||
276 | cpu_relax(); | 279 | cpu_relax(); |
280 | } | ||
277 | 281 | ||
278 | return loop >= MAXLOOP; | 282 | return loop >= MAXLOOP; |
279 | } | 283 | } |