diff options
author | Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | 2012-11-02 10:36:49 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2012-11-15 08:34:53 +0100 |
commit | 0e9a078d204d9404b4eb57db11f89d57eb961f00 (patch) | |
tree | 4f80e6792fbd0793b8fc00aca74af4b3289a65a5 /drivers/i2c/i2c.c | |
parent | 9b8fa53626b66eb4c3c3a74122de33c2728d8b00 (diff) | |
download | barebox-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.c | 17 |
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 */ |