]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/i2c/busses/i2c-ixp4xx.c
Merge branch 'master' into gfs2
[linux-2.6-omap-h63xx.git] / drivers / i2c / busses / i2c-ixp4xx.c
index cc652c3508149b73ed03ed3ef990c0365efd3fcc..ab573254a8aa305c1703f4005b9477e296819397 100644 (file)
@@ -35,8 +35,6 @@
 
 #include <asm/hardware.h>      /* Pick up IXP4xx-specific bits */
 
-static struct device_driver ixp4xx_i2c_driver;
-
 static inline int ixp4xx_scl_pin(void *data)
 {
        return ((struct ixp4xx_i2c_pins*)data)->scl_pin;
@@ -87,12 +85,11 @@ struct ixp4xx_i2c_data {
        struct i2c_algo_bit_data algo_data;
 };
 
-static int ixp4xx_i2c_remove(struct device *dev)
+static int ixp4xx_i2c_remove(struct platform_device *plat_dev)
 {
-       struct platform_device *plat_dev = to_platform_device(dev);
-       struct ixp4xx_i2c_data *drv_data = dev_get_drvdata(&plat_dev->dev);
+       struct ixp4xx_i2c_data *drv_data = platform_get_drvdata(plat_dev);
 
-       dev_set_drvdata(&plat_dev->dev, NULL);
+       platform_set_drvdata(plat_dev, NULL);
 
        i2c_bit_del_bus(&drv_data->adapter);
 
@@ -101,10 +98,9 @@ static int ixp4xx_i2c_remove(struct device *dev)
        return 0;
 }
 
-static int ixp4xx_i2c_probe(struct device *dev)
+static int ixp4xx_i2c_probe(struct platform_device *plat_dev)
 {
        int err;
-       struct platform_device *plat_dev = to_platform_device(dev);
        struct ixp4xx_i2c_pins *gpio = plat_dev->dev.platform_data;
        struct ixp4xx_i2c_data *drv_data = 
                kzalloc(sizeof(struct ixp4xx_i2c_data), GFP_KERNEL);
@@ -126,11 +122,11 @@ static int ixp4xx_i2c_probe(struct device *dev)
        drv_data->algo_data.getsda = ixp4xx_bit_getsda;
        drv_data->algo_data.getscl = ixp4xx_bit_getscl;
        drv_data->algo_data.udelay = 10;
-       drv_data->algo_data.mdelay = 10;
        drv_data->algo_data.timeout = 100;
 
        drv_data->adapter.id = I2C_HW_B_IXP4XX;
-       strlcpy(drv_data->adapter.name, ixp4xx_i2c_driver.name,
+       drv_data->adapter.class = I2C_CLASS_HWMON;
+       strlcpy(drv_data->adapter.name, plat_dev->dev.driver->name,
                I2C_NAME_SIZE);
        drv_data->adapter.algo_data = &drv_data->algo_data;
 
@@ -142,33 +138,34 @@ static int ixp4xx_i2c_probe(struct device *dev)
        gpio_line_set(gpio->sda_pin, 0);
 
        if ((err = i2c_bit_add_bus(&drv_data->adapter) != 0)) {
-               printk(KERN_ERR "ERROR: Could not install %s\n", dev->bus_id);
+               printk(KERN_ERR "ERROR: Could not install %s\n", plat_dev->dev.bus_id);
 
                kfree(drv_data);
                return err;
        }
 
-       dev_set_drvdata(&plat_dev->dev, drv_data);
+       platform_set_drvdata(plat_dev, drv_data);
 
        return 0;
 }
 
-static struct device_driver ixp4xx_i2c_driver = {
-       .owner          = THIS_MODULE,
-       .name           = "IXP4XX-I2C",
-       .bus            = &platform_bus_type,
+static struct platform_driver ixp4xx_i2c_driver = {
        .probe          = ixp4xx_i2c_probe,
        .remove         = ixp4xx_i2c_remove,
+       .driver         = {
+               .name   = "IXP4XX-I2C",
+               .owner  = THIS_MODULE,
+       },
 };
 
 static int __init ixp4xx_i2c_init(void)
 {
-       return driver_register(&ixp4xx_i2c_driver);
+       return platform_driver_register(&ixp4xx_i2c_driver);
 }
 
 static void __exit ixp4xx_i2c_exit(void)
 {
-       driver_unregister(&ixp4xx_i2c_driver);
+       platform_driver_unregister(&ixp4xx_i2c_driver);
 }
 
 module_init(ixp4xx_i2c_init);