include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit...
[safe/jmp/linux-2.6] / drivers / i2c / busses / i2c-mv64xxx.c
index eeda276..3623a44 100644 (file)
@@ -10,6 +10,7 @@
  * or implied.
  */
 #include <linux/kernel.h>
+#include <linux/slab.h>
 #include <linux/module.h>
 #include <linux/spinlock.h>
 #include <linux/i2c.h>
@@ -293,13 +294,13 @@ mv64xxx_i2c_do_action(struct mv64xxx_i2c_data *drv_data)
        }
 }
 
-static int
+static irqreturn_t
 mv64xxx_i2c_intr(int irq, void *dev_id)
 {
        struct mv64xxx_i2c_data *drv_data = dev_id;
        unsigned long   flags;
        u32             status;
-       int             rc = IRQ_NONE;
+       irqreturn_t     rc = IRQ_NONE;
 
        spin_lock_irqsave(&drv_data->lock, flags);
        while (readl(drv_data->reg_base + MV64XXX_I2C_REG_CONTROL) &
@@ -338,9 +339,6 @@ mv64xxx_i2c_prepare_for_io(struct mv64xxx_i2c_data *drv_data,
        if (msg->flags & I2C_M_RD)
                dir = 1;
 
-       if (msg->flags & I2C_M_REV_DIR_ADDR)
-               dir ^= 1;
-
        if (msg->flags & I2C_M_TEN) {
                drv_data->addr1 = 0xf0 | (((u32)msg->addr & 0x300) >> 7) | dir;
                drv_data->addr2 = (u32)msg->addr & 0xff;
@@ -358,7 +356,7 @@ mv64xxx_i2c_wait_for_completion(struct mv64xxx_i2c_data *drv_data)
        char            abort = 0;
 
        time_left = wait_event_interruptible_timeout(drv_data->waitq,
-               !drv_data->block, msecs_to_jiffies(drv_data->adapter.timeout));
+               !drv_data->block, drv_data->adapter.timeout);
 
        spin_lock_irqsave(&drv_data->lock, flags);
        if (!time_left) { /* Timed out */
@@ -374,8 +372,7 @@ mv64xxx_i2c_wait_for_completion(struct mv64xxx_i2c_data *drv_data)
                spin_unlock_irqrestore(&drv_data->lock, flags);
 
                time_left = wait_event_timeout(drv_data->waitq,
-                       !drv_data->block,
-                       msecs_to_jiffies(drv_data->adapter.timeout));
+                       !drv_data->block, drv_data->adapter.timeout);
 
                if ((time_left <= 0) && drv_data->block) {
                        drv_data->state = MV64XXX_I2C_STATE_IDLE;
@@ -470,7 +467,7 @@ mv64xxx_i2c_map_regs(struct platform_device *pd,
        if (!r)
                return -ENODEV;
 
-       size = r->end - r->start + 1;
+       size = resource_size(r);
 
        if (!request_mem_region(r->start, size, drv_data->adapter.name))
                return -EBUSY;
@@ -482,7 +479,7 @@ mv64xxx_i2c_map_regs(struct platform_device *pd,
        return 0;
 }
 
-static void __devexit
+static void
 mv64xxx_i2c_unmap_regs(struct mv64xxx_i2c_data *drv_data)
 {
        if (drv_data->reg_base) {
@@ -530,7 +527,7 @@ mv64xxx_i2c_probe(struct platform_device *pd)
        drv_data->adapter.algo = &mv64xxx_i2c_algo;
        drv_data->adapter.owner = THIS_MODULE;
        drv_data->adapter.class = I2C_CLASS_HWMON | I2C_CLASS_SPD;
-       drv_data->adapter.timeout = pdata->timeout;
+       drv_data->adapter.timeout = msecs_to_jiffies(pdata->timeout);
        drv_data->adapter.nr = pd->id;
        platform_set_drvdata(pd, drv_data);
        i2c_set_adapdata(&drv_data->adapter, drv_data);
@@ -577,7 +574,7 @@ mv64xxx_i2c_remove(struct platform_device *dev)
 
 static struct platform_driver mv64xxx_i2c_driver = {
        .probe  = mv64xxx_i2c_probe,
-       .remove = mv64xxx_i2c_remove,
+       .remove = __devexit_p(mv64xxx_i2c_remove),
        .driver = {
                .owner  = THIS_MODULE,
                .name   = MV64XXX_I2C_CTLR_NAME,