[RFC PATCH 08/13] i2c: core: Add support for 'i2c-bus' subnode
Jon Hunter
jonathanh at nvidia.com
Mon Jun 20 08:57:46 UTC 2016
On 17/06/16 17:24, Thierry Reding wrote:
> * PGP Signed by an unknown key
>
> On Fri, Jun 17, 2016 at 01:03:42PM +0100, Jon Hunter wrote:
>> If the 'i2c-bus' device-tree node is present for an I2C adapter then
>> parse this subnode for I2C slaves.
>>
>> Signed-off-by: Jon Hunter <jonathanh at nvidia.com>
>> ---
>> drivers/i2c/i2c-core.c | 11 +++++++++--
>> 1 file changed, 9 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
>> index 952d2f0c02c5..f552d97bad32 100644
>> --- a/drivers/i2c/i2c-core.c
>> +++ b/drivers/i2c/i2c-core.c
>> @@ -1452,7 +1452,7 @@ static struct i2c_client *of_i2c_register_device(struct i2c_adapter *adap,
>>
>> static void of_i2c_register_devices(struct i2c_adapter *adap)
>> {
>> - struct device_node *node;
>> + struct device_node *bus, *node;
>>
>> /* Only register child devices if the adapter has a node pointer set */
>> if (!adap->dev.of_node)
>> @@ -1460,11 +1460,18 @@ static void of_i2c_register_devices(struct i2c_adapter *adap)
>>
>> dev_dbg(&adap->dev, "of_i2c: walking child nodes\n");
>>
>> - for_each_available_child_of_node(adap->dev.of_node, node) {
>> + bus = of_get_child_by_name(adap->dev.of_node, "i2c-bus");
>> + if (!bus)
>> + bus = adap->dev.of_node;
>
> Maybe
> bus = of_node_get(adap->dev.of_node);
>
> here...
>
>> +
>> + for_each_available_child_of_node(bus, node) {
>> if (of_node_test_and_set_flag(node, OF_POPULATED))
>> continue;
>> of_i2c_register_device(adap, node);
>> }
>> +
>> + if (bus != adap->dev.of_node)
>> + of_node_put(bus);
>
> ... and drop the extra check here?
Yes makes sense.
Jon
--
nvpublic
More information about the dri-devel
mailing list