summaryrefslogtreecommitdiffstats
path: root/drivers/i2c/i2c.c
diff options
context:
space:
mode:
authorJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>2012-11-02 10:36:49 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2012-11-15 08:34:53 +0100
commit0e9a078d204d9404b4eb57db11f89d57eb961f00 (patch)
tree4f80e6792fbd0793b8fc00aca74af4b3289a65a5 /drivers/i2c/i2c.c
parent9b8fa53626b66eb4c3c3a74122de33c2728d8b00 (diff)
downloadbarebox-0e9a078d204d9404b4eb57db11f89d57eb961f00.tar.gz
barebox-0e9a078d204d9404b4eb57db11f89d57eb961f00.tar.xz
i2c: adapter: register it's own device
so we can show the this of i2c busses set the bus device as parent of all devices. Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/i2c/i2c.c')
-rw-r--r--drivers/i2c/i2c.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/drivers/i2c/i2c.c b/drivers/i2c/i2c.c
index 27fd256cf7..3af5c32ec6 100644
--- a/drivers/i2c/i2c.c
+++ b/drivers/i2c/i2c.c
@@ -80,7 +80,7 @@ int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
*/
for (ret = 0; ret < num; ret++) {
- dev_dbg(adap->dev, "master_xfer[%d] %c, addr=0x%02x, "
+ dev_dbg(&adap->dev, "master_xfer[%d] %c, addr=0x%02x, "
"len=%d\n", ret, (msgs[ret].flags & I2C_M_RD)
? 'R' : 'W', msgs[ret].addr, msgs[ret].len);
}
@@ -256,6 +256,9 @@ struct i2c_client *i2c_new_device(struct i2c_adapter *adapter,
client->adapter = adapter;
client->addr = chip->addr;
+ client->dev.parent = &adapter->dev;
+ dev_add_child(client->dev.parent, &client->dev);
+
status = register_device(&client->dev);
#if 0
@@ -363,9 +366,21 @@ struct i2c_adapter *i2c_get_adapter(int busnum)
*/
int i2c_add_numbered_adapter(struct i2c_adapter *adapter)
{
+ int ret;
+
if (i2c_get_adapter(adapter->nr))
return -EBUSY;
+ adapter->dev.id = adapter->nr;
+ strcpy(adapter->dev.name, "i2c");
+
+ if (adapter->dev.parent)
+ dev_add_child(adapter->dev.parent, &adapter->dev);
+
+ ret = register_device(&adapter->dev);
+ if (ret)
+ return ret;
+
list_add_tail(&adapter->list, &adapter_list);
/* populate children from any i2c device tables */