i2c-ibm_iic: Register child nodes
authorSean MacLennan <smaclennan@pikatech.com>
Mon, 14 Jul 2008 20:38:36 +0000 (22:38 +0200)
committerJean Delvare <khali@mahadeva.delvare>
Mon, 14 Jul 2008 20:38:36 +0000 (22:38 +0200)
This patch completes the conversion of the IBM IIC driver to an
of-platform driver.

It removes the index from the IBM IIC driver and makes it an unnumbered
driver. It then calls of_register_i2c_devices to properly register all
the child nodes in the DTS.

Signed-off-by: Sean MacLennan <smaclennan@pikatech.com>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
drivers/i2c/busses/i2c-ibm_iic.c

index 070f078..651f2f1 100644 (file)
@@ -43,6 +43,7 @@
 #include <linux/i2c.h>
 #include <linux/i2c-id.h>
 #include <linux/of_platform.h>
+#include <linux/of_i2c.h>
 
 #include "i2c-ibm_iic.h"
 
@@ -696,7 +697,7 @@ static int __devinit iic_probe(struct of_device *ofdev,
        struct device_node *np = ofdev->node;
        struct ibm_iic_private *dev;
        struct i2c_adapter *adap;
-       const u32 *indexp, *freq;
+       const u32 *freq;
        int ret;
 
        dev = kzalloc(sizeof(*dev), GFP_KERNEL);
@@ -707,14 +708,6 @@ static int __devinit iic_probe(struct of_device *ofdev,
 
        dev_set_drvdata(&ofdev->dev, dev);
 
-       indexp = of_get_property(np, "index", NULL);
-       if (!indexp) {
-               dev_err(&ofdev->dev, "no index specified\n");
-               ret = -EINVAL;
-               goto error_cleanup;
-       }
-       dev->idx = *indexp;
-
        dev->vaddr = of_iomap(np, 0);
        if (dev->vaddr == NULL) {
                dev_err(&ofdev->dev, "failed to iomap device\n");
@@ -757,14 +750,16 @@ static int __devinit iic_probe(struct of_device *ofdev,
        adap->class = I2C_CLASS_HWMON | I2C_CLASS_SPD;
        adap->algo = &iic_algo;
        adap->timeout = 1;
-       adap->nr = dev->idx;
 
-       ret = i2c_add_numbered_adapter(adap);
+       ret = i2c_add_adapter(adap);
        if (ret  < 0) {
                dev_err(&ofdev->dev, "failed to register i2c adapter\n");
                goto error_cleanup;
        }
 
+       /* Now register all the child nodes */
+       of_register_i2c_devices(adap, np);
+
        dev_info(&ofdev->dev, "using %s mode\n",
                 dev->fast_mode ? "fast (400 kHz)" : "standard (100 kHz)");