intelfb delousing
authorAl Viro <viro@ftp.linux.org.uk>
Fri, 23 Jun 2006 05:05:39 +0000 (06:05 +0100)
committerDave Airlie <airlied@linux.ie>
Sat, 24 Jun 2006 07:22:17 +0000 (17:22 +1000)
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>
drivers/video/intelfb/intelfb.h
drivers/video/intelfb/intelfbdrv.c
drivers/video/intelfb/intelfbhw.c

index 469b06c2918044f302a71c45ab30d201283fdad6..e290d7460e1bee1840487b5cc84194e9fa1db51e 100644 (file)
@@ -237,7 +237,7 @@ struct intelfb_info {
        u32 fb_start;
 
        /* ring buffer */
-       u8 __iomem *ring_head;
+       u32 ring_head;
        u32 ring_tail;
        u32 ring_tail_mask;
        u32 ring_space;
index 076fa56be192a3df28d06f7ad41903f8ba54ad86..0a0a8b199ecc510f90858dd33cc45f3de34669fb 100644 (file)
@@ -707,7 +707,7 @@ intelfb_pci_register(struct pci_dev *pdev, const struct pci_device_id *ent)
                        + (dinfo->ring.offset << 12);
                dinfo->ring.virtual  = dinfo->aperture.virtual
                        + (dinfo->ring.offset << 12);
-               dinfo->ring_head = dinfo->ring.virtual;
+               dinfo->ring_head = 0;
        }
        if (dinfo->hwcursor) {
                agp_memtype = dinfo->mobile ? AGP_PHYSICAL_MEMORY
@@ -766,18 +766,18 @@ intelfb_pci_register(struct pci_dev *pdev, const struct pci_device_id *ent)
        if (mtrr)
                set_mtrr(dinfo);
 
-       DBG_MSG("fb: 0x%x(+ 0x%x)/0x%x (0x%x)\n",
+       DBG_MSG("fb: 0x%x(+ 0x%x)/0x%x (0x%p)\n",
                dinfo->fb.physical, dinfo->fb.offset, dinfo->fb.size,
-               (u32 __iomem ) dinfo->fb.virtual);
-       DBG_MSG("MMIO: 0x%x/0x%x (0x%x)\n",
+               dinfo->fb.virtual);
+       DBG_MSG("MMIO: 0x%x/0x%x (0x%p)\n",
                dinfo->mmio_base_phys, INTEL_REG_SIZE,
-               (u32 __iomem) dinfo->mmio_base);
-       DBG_MSG("ring buffer: 0x%x/0x%x (0x%x)\n",
+               dinfo->mmio_base);
+       DBG_MSG("ring buffer: 0x%x/0x%x (0x%p)\n",
                dinfo->ring.physical, dinfo->ring.size,
-               (u32 __iomem ) dinfo->ring.virtual);
-       DBG_MSG("HW cursor: 0x%x/0x%x (0x%x) (offset 0x%x) (phys 0x%x)\n",
+               dinfo->ring.virtual);
+       DBG_MSG("HW cursor: 0x%x/0x%x (0x%p) (offset 0x%x) (phys 0x%x)\n",
                dinfo->cursor.physical, dinfo->cursor.size,
-               (u32 __iomem ) dinfo->cursor.virtual, dinfo->cursor.offset,
+               dinfo->cursor.virtual, dinfo->cursor.offset,
                dinfo->cursor.physical);
 
        DBG_MSG("options: vram = %d, accel = %d, hwcursor = %d, fixed = %d, "
index 426b7430b125491e501260f50d1d87ff8f522d04..7533b3dd08ac96b247579dc77f5ec1fe15f8a0d0 100644 (file)
@@ -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);
 }