]> err.no Git - linux-2.6/blobdiff - drivers/i2c/busses/i2c-mpc.c
Merge master.kernel.org:/home/rmk/linux-2.6-serial
[linux-2.6] / drivers / i2c / busses / i2c-mpc.c
index 75b8d867dae11a5ab0dfb2710479cc1c8928961d..d41ca31dbcb2357cf4a37c2028aefae144c966be 100644 (file)
@@ -55,7 +55,7 @@
 #define CSR_RXAK 0x01
 
 struct mpc_i2c {
-       char *base;
+       void __iomem *base;
        u32 interrupt;
        wait_queue_head_t queue;
        struct i2c_adapter adap;
@@ -325,7 +325,7 @@ static int __devinit mpc_i2c_probe(struct ocp_device *ocp)
        if (i2c->irq != OCP_IRQ_NA)
        {
                if ((result = request_irq(ocp->def->irq, mpc_i2c_isr,
-                                         0, "i2c-mpc", i2c)) < 0) {
+                                         SA_SHIRQ, "i2c-mpc", i2c)) < 0) {
                        printk(KERN_ERR
                               "i2c-mpc - failed to attach interrupt\n");
                        goto fail_irq;
@@ -333,6 +333,9 @@ static int __devinit mpc_i2c_probe(struct ocp_device *ocp)
        } else
                i2c->irq = 0;
 
+       mpc_i2c_setclock(i2c);
+       ocp_set_drvdata(ocp, i2c);
+
        i2c->adap = mpc_ops;
        i2c_set_adapdata(&i2c->adap, i2c);
 
@@ -341,8 +344,6 @@ static int __devinit mpc_i2c_probe(struct ocp_device *ocp)
                goto fail_add;
        }
 
-       mpc_i2c_setclock(i2c);
-       ocp_set_drvdata(ocp, i2c);
        return result;
 
       fail_add:
@@ -358,8 +359,8 @@ static int __devinit mpc_i2c_probe(struct ocp_device *ocp)
 static void __devexit mpc_i2c_remove(struct ocp_device *ocp)
 {
        struct mpc_i2c *i2c = ocp_get_drvdata(ocp);
-       ocp_set_drvdata(ocp, NULL);
        i2c_del_adapter(&i2c->adap);
+       ocp_set_drvdata(ocp, NULL);
 
        if (ocp->def->irq != OCP_IRQ_NA)
                free_irq(i2c->irq, i2c);
@@ -424,12 +425,15 @@ static int fsl_i2c_probe(struct device *device)
 
        if (i2c->irq != 0)
                if ((result = request_irq(i2c->irq, mpc_i2c_isr,
-                                         0, "fsl-i2c", i2c)) < 0) {
+                                         SA_SHIRQ, "i2c-mpc", i2c)) < 0) {
                        printk(KERN_ERR
                               "i2c-mpc - failed to attach interrupt\n");
                        goto fail_irq;
                }
 
+       mpc_i2c_setclock(i2c);
+       dev_set_drvdata(device, i2c);
+
        i2c->adap = mpc_ops;
        i2c_set_adapdata(&i2c->adap, i2c);
        i2c->adap.dev.parent = &pdev->dev;
@@ -438,13 +442,11 @@ static int fsl_i2c_probe(struct device *device)
                goto fail_add;
        }
 
-       mpc_i2c_setclock(i2c);
-       dev_set_drvdata(device, i2c);
        return result;
 
       fail_add:
        if (i2c->irq != 0)
-               free_irq(i2c->irq, 0);
+               free_irq(i2c->irq, NULL);
       fail_irq:
        iounmap(i2c->base);
       fail_map:
@@ -456,8 +458,8 @@ static int fsl_i2c_remove(struct device *device)
 {
        struct mpc_i2c *i2c = dev_get_drvdata(device);
 
-       dev_set_drvdata(device, NULL);
        i2c_del_adapter(&i2c->adap);
+       dev_set_drvdata(device, NULL);
 
        if (i2c->irq != 0)
                free_irq(i2c->irq, i2c);