[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