[U-Boot] [PATCH v2 02/19] dm: i2c: Add dm_i2c_probe_device() to test the presence of a chip

Simon Glass sjg at chromium.org
Fri Oct 12 00:00:05 UTC 2018


Hi Jean-Jacques,

On 11 October 2018 at 06:01, Jean-Jacques Hiblot <jjhiblot at ti.com> wrote:
> Hi Simon,
>
> thanks for the reviews.
>
>
>
> On 11/10/2018 05:13, Simon Glass wrote:
>>
>> Hi Jean-Jacques,
>>
>> On 5 October 2018 at 10:45, Jean-Jacques Hiblot <jjhiblot at ti.com> wrote:
>>>
>>> In a non-DM environment, it is possible to test the presence of a chip
>>> using i2c_probe(chip_addr).
>>> dm_i2c_probe_device() brings the same functionality with a DM interface.
>>> The intent is to be able to test the presence of a chip for the device
>>> has
>>> been created with i2c_get_chip_for_busnum(bus_num, chip_addr, ...)
>>>
>>> Signed-off-by: Jean-Jacques Hiblot <jjhiblot at ti.com>
>>> ---
>>>
>>> Changes in v2: None
>>>
>>>   drivers/i2c/i2c-uclass.c |  8 ++++++++
>>>   include/i2c.h            | 13 +++++++++++++
>>>   2 files changed, 21 insertions(+)
>>>
>>> diff --git a/drivers/i2c/i2c-uclass.c b/drivers/i2c/i2c-uclass.c
>>> index c5a3c4e..ec88168 100644
>>> --- a/drivers/i2c/i2c-uclass.c
>>> +++ b/drivers/i2c/i2c-uclass.c
>>> @@ -378,6 +378,14 @@ int dm_i2c_probe(struct udevice *bus, uint
>>> chip_addr, uint chip_flags,
>>>          return ret;
>>>   }
>>>
>>> +int dm_i2c_probe_device(struct udevice *dev)
>>> +{
>>> +       struct udevice *bus = dev_get_parent(dev);
>>> +       struct dm_i2c_chip *chip = dev_get_parent_platdata(dev);
>>> +
>>> +       return i2c_probe_chip(bus, chip->chip_addr, chip->flags);
>>> +}
>>
>> Why not just probe the device? That should have the same effect.
>
> The device itself is not probed when using i2c_get_chip_for_busnum(). I
> could have changed it there but was sure about possible side-effects on all
> boards.
> The code that uses the non-DM API usually calls I2C_probe() at some point,
> this function is the equivalent in the DM world.

So if you change your above function to:

int dm_i2c_probe_device(struct udevice *dev)
{
    return device_probe(dev);
}

what happens?

Regards,
Simon


More information about the U-Boot mailing list