i2c: Deprecate i2c_driver.attach_adapter and .detach_adapter
authorJean Delvare <khali@linux-fr.org>
Sun, 20 Mar 2011 13:50:53 +0000 (14:50 +0100)
committerJean Delvare <khali@endymion.delvare>
Sun, 20 Mar 2011 13:50:53 +0000 (14:50 +0100)
The last legitimate user of i2c_driver.attach_adapter and
.detach_adapter is gone, so we can finally deprecate these callbacks.
The last few drivers which still use these will have to be updated to
make use of standard I2C device instantiation ways instead.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Documentation/feature-removal-schedule.txt
drivers/i2c/Makefile
drivers/i2c/i2c-core.c
include/linux/i2c.h

index f487c6918d7870c57bec4202cf22482af21b3d6f..7ce623bb9637421d14c1ecc9ce4e6516fc0de10a 100644 (file)
@@ -645,3 +645,12 @@ Who:       Florian Westphal <fw@strlen.de>
 Files: include/linux/netfilter_ipv4/ipt_addrtype.h
 
 ----------------------------
+
+What:  i2c_driver.attach_adapter
+       i2c_driver.detach_adapter
+When:  September 2011
+Why:   These legacy callbacks should no longer be used as i2c-core offers
+       a variety of preferable alternative ways to instantiate I2C devices.
+Who:   Jean Delvare <khali@linux-fr.org>
+
+----------------------------
index 23ac61e2db398363ccb4bb742d8f07aff0aa7e60..beee6b2d361db458a1336a48bd13b5166d6d013c 100644 (file)
@@ -10,3 +10,4 @@ obj-$(CONFIG_I2C_MUX)         += i2c-mux.o
 obj-y                          += algos/ busses/ muxes/
 
 ccflags-$(CONFIG_I2C_DEBUG_CORE) := -DDEBUG
+CFLAGS_i2c-core.o := -Wno-deprecated-declarations
index b9fa1d0320b43f3d01bcd8282dec9ce0a16c09a1..e5f76a0372fd6f6e9d1fa063b60a07ffb08fb781 100644 (file)
@@ -797,6 +797,9 @@ static int i2c_do_add_adapter(struct i2c_driver *driver,
 
        /* Let legacy drivers scan this bus for matching devices */
        if (driver->attach_adapter) {
+               dev_warn(&adap->dev, "attach_adapter method is deprecated\n");
+               dev_warn(&adap->dev, "Please use another way to instantiate "
+                        "your i2c_client\n");
                /* We ignore the return code; if it fails, too bad */
                driver->attach_adapter(adap);
        }
@@ -981,6 +984,7 @@ static int i2c_do_del_adapter(struct i2c_driver *driver,
 
        if (!driver->detach_adapter)
                return 0;
+       dev_warn(&adapter->dev, "detach_adapter method is deprecated\n");
        res = driver->detach_adapter(adapter);
        if (res)
                dev_err(&adapter->dev, "detach_adapter failed (%d) "
index 4df12c7e69d7375a3631f317a271367d70782c03..cd2f75b742ec7e49eab29e21c5b85dc9c1e523af 100644 (file)
@@ -104,8 +104,8 @@ extern s32 i2c_smbus_write_i2c_block_data(const struct i2c_client *client,
 /**
  * struct i2c_driver - represent an I2C device driver
  * @class: What kind of i2c device we instantiate (for detect)
- * @attach_adapter: Callback for bus addition (for legacy drivers)
- * @detach_adapter: Callback for bus removal (for legacy drivers)
+ * @attach_adapter: Callback for bus addition (deprecated)
+ * @detach_adapter: Callback for bus removal (deprecated)
  * @probe: Callback for device binding
  * @remove: Callback for device unbinding
  * @shutdown: Callback for device shutdown
@@ -143,11 +143,11 @@ struct i2c_driver {
        unsigned int class;
 
        /* Notifies the driver that a new bus has appeared or is about to be
-        * removed. You should avoid using this if you can, it will probably
-        * be removed in a near future.
+        * removed. You should avoid using this, it will be removed in a
+        * near future.
         */
-       int (*attach_adapter)(struct i2c_adapter *);
-       int (*detach_adapter)(struct i2c_adapter *);
+       int (*attach_adapter)(struct i2c_adapter *) __deprecated;
+       int (*detach_adapter)(struct i2c_adapter *) __deprecated;
 
        /* Standard driver model interfaces */
        int (*probe)(struct i2c_client *, const struct i2c_device_id *);