Skip to content

Commit

Permalink
of/i2c: Fill the archdata for I2C devices
Browse files Browse the repository at this point in the history
For I2C devices we just setting the node pointer in the archdata. This
is needed so that the I2C devices could find their OF tree nodes.

Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
Acked-by: Grant Likely <grant.likely@secretlab.ca>
Signed-off-by: Paul Mackerras <paulus@samba.org>
  • Loading branch information
Anton Vorontsov authored and Paul Mackerras committed Dec 3, 2008
1 parent 3f3b163 commit e6a437e
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions drivers/of/of_i2c.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ void of_register_i2c_devices(struct i2c_adapter *adap,

for_each_child_of_node(adap_node, node) {
struct i2c_board_info info = {};
struct dev_archdata dev_ad = {};
const u32 *addr;
int len;

Expand All @@ -41,6 +42,9 @@ void of_register_i2c_devices(struct i2c_adapter *adap,

info.addr = *addr;

dev_archdata_set_node(&dev_ad, node);
info.archdata = &dev_ad;

request_module("%s", info.type);

result = i2c_new_device(adap, &info);
Expand All @@ -51,6 +55,13 @@ void of_register_i2c_devices(struct i2c_adapter *adap,
irq_dispose_mapping(info.irq);
continue;
}

/*
* Get the node to not lose the dev_archdata->of_node.
* Currently there is no way to put it back, as well as no
* of_unregister_i2c_devices() call.
*/
of_node_get(node);
}
}
EXPORT_SYMBOL(of_register_i2c_devices);
Expand Down

0 comments on commit e6a437e

Please sign in to comment.