| From 6a6becd1fa5fedfcb8305618fc68a931b0f0ed66 Mon Sep 17 00:00:00 2001 |
| From: Wolfram Sang <wsa@the-dreams.de> |
| Date: Mon, 10 Feb 2014 11:03:56 +0100 |
| Subject: i2c: add deprecation warning for class based instantiation |
| |
| Class based instantiation can cause noticeable delays when booting. This |
| mechanism is used when it is not possible to describe slaves on I2C |
| busses. As we do have other mechanisms, most embedded I2C will not need |
| classes and for embedded it is explicitly not recommended to use them. Add |
| a deprecation warning for drivers which want to disable class based |
| instantiation in the near future to gain boot-up time, so users relying |
| on this technique can switch to something better. They really should. |
| |
| Signed-off-by: Wolfram Sang <wsa@the-dreams.de> |
| (cherry picked from commit 0c176170089c3a7f2a891f9860f5cdc5f481ff78) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| drivers/i2c/i2c-core.c | 7 +++++++ |
| include/linux/i2c.h | 1 + |
| 2 files changed, 8 insertions(+) |
| |
| diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c |
| index 5fb80b8962a2..98a5fd950f16 100644 |
| --- a/drivers/i2c/i2c-core.c |
| +++ b/drivers/i2c/i2c-core.c |
| @@ -1941,6 +1941,13 @@ static int i2c_detect_address(struct i2c_client *temp_client, |
| struct i2c_client *client; |
| |
| /* Detection succeeded, instantiate the device */ |
| + if (adapter->class & I2C_CLASS_DEPRECATED) |
| + dev_warn(&adapter->dev, |
| + "This adapter will soon drop class based instantiation of devices. " |
| + "Please make sure client 0x%02x gets instantiated by other means. " |
| + "Check 'Documentation/i2c/instantiating-devices' for details.\n", |
| + info.addr); |
| + |
| dev_dbg(&adapter->dev, "Creating %s at 0x%02x\n", |
| info.type, info.addr); |
| client = i2c_new_device(adapter, &info); |
| diff --git a/include/linux/i2c.h b/include/linux/i2c.h |
| index deddeb8c337c..b556e0ab946f 100644 |
| --- a/include/linux/i2c.h |
| +++ b/include/linux/i2c.h |
| @@ -487,6 +487,7 @@ void i2c_unlock_adapter(struct i2c_adapter *); |
| #define I2C_CLASS_HWMON (1<<0) /* lm_sensors, ... */ |
| #define I2C_CLASS_DDC (1<<3) /* DDC bus on graphics adapters */ |
| #define I2C_CLASS_SPD (1<<7) /* Memory modules */ |
| +#define I2C_CLASS_DEPRECATED (1<<8) /* Warn users that adapter will stop using classes */ |
| |
| /* Internal numbers to terminate lists */ |
| #define I2C_CLIENT_END 0xfffeU |
| -- |
| 2.1.2 |
| |