diff options
author | Phil Reid <preid@electromag.com.au> | 2017-08-24 05:31:04 -0400 |
---|---|---|
committer | Wolfram Sang <wsa@the-dreams.de> | 2017-10-28 17:42:58 -0400 |
commit | f8756c67b3de71a46255aa478ab590ff28e60ac9 (patch) | |
tree | e4bcc1d725d2047685ddb7bba3326ad9f7b2fb3b /drivers/i2c | |
parent | 69d17246ab255dda8e71c8d65396b4aa6121b7ad (diff) |
i2c: core: call of_i2c_setup_smbus_alert in i2c_register_adapter
Add a call to of_i2c_setup_smbus_alert when a i2c adapter is registered
so the the smbalert driver can be registered.
Signed-off-by: Phil Reid <preid@electromag.com.au>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Diffstat (limited to 'drivers/i2c')
-rw-r--r-- | drivers/i2c/i2c-core-base.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c index 56e46581b84b..130d22bed563 100644 --- a/drivers/i2c/i2c-core-base.c +++ b/drivers/i2c/i2c-core-base.c | |||
@@ -29,6 +29,7 @@ | |||
29 | #include <linux/errno.h> | 29 | #include <linux/errno.h> |
30 | #include <linux/gpio.h> | 30 | #include <linux/gpio.h> |
31 | #include <linux/i2c.h> | 31 | #include <linux/i2c.h> |
32 | #include <linux/i2c-smbus.h> | ||
32 | #include <linux/idr.h> | 33 | #include <linux/idr.h> |
33 | #include <linux/init.h> | 34 | #include <linux/init.h> |
34 | #include <linux/irqflags.h> | 35 | #include <linux/irqflags.h> |
@@ -1259,6 +1260,10 @@ static int i2c_register_adapter(struct i2c_adapter *adap) | |||
1259 | goto out_list; | 1260 | goto out_list; |
1260 | } | 1261 | } |
1261 | 1262 | ||
1263 | res = of_i2c_setup_smbus_alert(adap); | ||
1264 | if (res) | ||
1265 | goto out_reg; | ||
1266 | |||
1262 | dev_dbg(&adap->dev, "adapter [%s] registered\n", adap->name); | 1267 | dev_dbg(&adap->dev, "adapter [%s] registered\n", adap->name); |
1263 | 1268 | ||
1264 | pm_runtime_no_callbacks(&adap->dev); | 1269 | pm_runtime_no_callbacks(&adap->dev); |
@@ -1290,6 +1295,10 @@ static int i2c_register_adapter(struct i2c_adapter *adap) | |||
1290 | 1295 | ||
1291 | return 0; | 1296 | return 0; |
1292 | 1297 | ||
1298 | out_reg: | ||
1299 | init_completion(&adap->dev_released); | ||
1300 | device_unregister(&adap->dev); | ||
1301 | wait_for_completion(&adap->dev_released); | ||
1293 | out_list: | 1302 | out_list: |
1294 | mutex_lock(&core_lock); | 1303 | mutex_lock(&core_lock); |
1295 | idr_remove(&i2c_adapter_idr, adap->nr); | 1304 | idr_remove(&i2c_adapter_idr, adap->nr); |