diff options
author | Al Viro <viro@ftp.linux.org.uk> | 2006-06-23 06:05:39 +0100 |
---|---|---|
committer | Dave Airlie <airlied@linux.ie> | 2006-06-24 17:22:17 +1000 |
commit | 0fe6e2d2928e089d16ec5ed7ba634c1d60916020 (patch) | |
tree | 00b045e1d693d2dfa5a8e89e7129592f176ae902 /drivers/video/intelfb/intelfbhw.c | |
parent | d384ea691fe4ea8c2dd5b9b8d9042eb181776f18 (diff) |
intelfb delousing
ring_head is offset in card memory, not iomem pointer. Fixed, removed
fuckloads of amazingly bogus casts somebody had sprinkled all over the
place.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Dave Airlie <airlied@linux.ie>
Diffstat (limited to 'drivers/video/intelfb/intelfbhw.c')
-rw-r--r-- | drivers/video/intelfb/intelfbhw.c | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/drivers/video/intelfb/intelfbhw.c b/drivers/video/intelfb/intelfbhw.c index 426b7430b12..7533b3dd08a 100644 --- a/drivers/video/intelfb/intelfbhw.c +++ b/drivers/video/intelfb/intelfbhw.c @@ -1423,19 +1423,17 @@ wait_ring(struct intelfb_info *dinfo, int n) end = jiffies + (HZ * 3); while (dinfo->ring_space < n) { - dinfo->ring_head = (u8 __iomem *)(INREG(PRI_RING_HEAD) & - RING_HEAD_MASK); - if (dinfo->ring_tail + RING_MIN_FREE < - (u32 __iomem) dinfo->ring_head) - dinfo->ring_space = (u32 __iomem) dinfo->ring_head + dinfo->ring_head = INREG(PRI_RING_HEAD) & RING_HEAD_MASK; + if (dinfo->ring_tail + RING_MIN_FREE < dinfo->ring_head) + dinfo->ring_space = dinfo->ring_head - (dinfo->ring_tail + RING_MIN_FREE); else dinfo->ring_space = (dinfo->ring.size + - (u32 __iomem) dinfo->ring_head) + dinfo->ring_head) - (dinfo->ring_tail + RING_MIN_FREE); - if ((u32 __iomem) dinfo->ring_head != last_head) { + if (dinfo->ring_head != last_head) { end = jiffies + (HZ * 3); - last_head = (u32 __iomem) dinfo->ring_head; + last_head = dinfo->ring_head; } i++; if (time_before(end, jiffies)) { @@ -1495,15 +1493,13 @@ refresh_ring(struct intelfb_info *dinfo) DBG_MSG("refresh_ring\n"); #endif - dinfo->ring_head = (u8 __iomem *) (INREG(PRI_RING_HEAD) & - RING_HEAD_MASK); + dinfo->ring_head = INREG(PRI_RING_HEAD) & RING_HEAD_MASK; dinfo->ring_tail = INREG(PRI_RING_TAIL) & RING_TAIL_MASK; - if (dinfo->ring_tail + RING_MIN_FREE < (u32 __iomem)dinfo->ring_head) - dinfo->ring_space = (u32 __iomem) dinfo->ring_head + if (dinfo->ring_tail + RING_MIN_FREE < dinfo->ring_head) + dinfo->ring_space = dinfo->ring_head - (dinfo->ring_tail + RING_MIN_FREE); else - dinfo->ring_space = (dinfo->ring.size + - (u32 __iomem) dinfo->ring_head) + dinfo->ring_space = (dinfo->ring.size + dinfo->ring_head) - (dinfo->ring_tail + RING_MIN_FREE); } |