[PATCH] sparc: vfc __iomem annotations and fixes

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
diff --git a/drivers/sbus/char/vfc.h b/drivers/sbus/char/vfc.h
index a7782e7..8045cd5 100644
--- a/drivers/sbus/char/vfc.h
+++ b/drivers/sbus/char/vfc.h
@@ -125,7 +125,7 @@
 
 
 struct vfc_dev {
-	volatile struct vfc_regs *regs;
+	volatile struct vfc_regs __iomem *regs;
 	struct vfc_regs *phys_regs;
 	unsigned int control_reg;
 	struct semaphore device_lock_sem;
diff --git a/drivers/sbus/char/vfc_dev.c b/drivers/sbus/char/vfc_dev.c
index 7a10369..dfdd6be 100644
--- a/drivers/sbus/char/vfc_dev.c
+++ b/drivers/sbus/char/vfc_dev.c
@@ -149,7 +149,7 @@
 	}
 	printk("Initializing vfc%d\n",instance);
 	dev->regs = NULL;
-	dev->regs = (volatile struct vfc_regs *)
+	dev->regs = (volatile struct vfc_regs __iomem *)
 		sbus_ioremap(&sdev->resource[0], 0,
 			     sizeof(struct vfc_regs), vfcstr);
 	dev->which_io = sdev->reg_addrs[0].which_io;
@@ -319,7 +319,7 @@
 	int timeout = 1000;
 
 	while (!timeout--) {
-		if (dev->regs->control & VFC_STATUS_CAPTURE)
+		if (sbus_readl(&dev->regs->control) & VFC_STATUS_CAPTURE)
 			break;
 		vfc_i2c_delay_no_busy(dev, 100);
 	}
@@ -718,7 +718,7 @@
 	if(dev == NULL)
 		return;
 	devfs_remove("vfc/%d", dev->instance);
-	sbus_iounmap((unsigned long)dev->regs, sizeof(struct vfc_regs));
+	sbus_iounmap(dev->regs, sizeof(struct vfc_regs));
 	kfree(dev);
 }