aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/i2c
diff options
context:
space:
mode:
authorPhil Reid <preid@electromag.com.au>2017-08-24 05:31:04 -0400
committerWolfram Sang <wsa@the-dreams.de>2017-10-28 17:42:58 -0400
commitf8756c67b3de71a46255aa478ab590ff28e60ac9 (patch)
treee4bcc1d725d2047685ddb7bba3326ad9f7b2fb3b /drivers/i2c
parent69d17246ab255dda8e71c8d65396b4aa6121b7ad (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.c9
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
1298out_reg:
1299 init_completion(&adap->dev_released);
1300 device_unregister(&adap->dev);
1301 wait_for_completion(&adap->dev_released);
1293out_list: 1302out_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);