[U-Boot] [PATCH v2 3/9] kmp204x: I2C deblocking for I2C-bus1 added

Boschung, Rainer
2014-01-30T09:17:40Z

On 01/30/2014 08:32 AM, Valentin Longchamp wrote:
> On 01/30/2014 03:30 AM, York Sun wrote:
>> On 01/27/2014 02:49 AM, Valentin Longchamp wrote:
>>> From: Rainer Boschung <rainer.boschung@keymile.com>
>>>
>>> -uses common deblocking algorithm from ../common/common.c
>>
>> I don't see any algorithm in the common.c file.
>
> The file is board/keymile/common/common.c, where the i2c_make_abort() and the
> i2c_write_start_seq() functions are defined. I guess that's what Rainer means with "algorithm".

That is what I meant. I will add a more precise comment.
>
> I agree that the relative path for the file is not very fortunate and that's why you have not found the functions.
>
>>
>>> -supports deblocking of of I2C-bus1 by means of QRIO GPIO
>>> - SCL1 = GPIO_A16
>>> - SDA1 = GPIO_A17
>>>
>>> QRIO GPIOs act in an open-drain-like manner, for 0 GPIO drives low
>>> and for 1 the GPIO is an input and must be pulled up externaly!
>>>
>>> Signed-off-by: Rainer Boschung <rainer.boschung@keymile.com>
>>> Signed-off-by: Valentin Longchamp <valentin.longchamp@keymile.com>
>>> ---
>>>
>>> Changes in v2: None
>>>
>>> board/keymile/kmp204x/kmp204x.c | 53 ++++++++++++++++++++++++++++++++++---
>>> include/configs/km/kmp204x-common.h | 10 +++++++
>>> 2 files changed, 60 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/board/keymile/kmp204x/kmp204x.c
>>> b/board/keymile/kmp204x/kmp204x.c index bbb2453..8d6eecb 100644
>>> --- a/board/keymile/kmp204x/kmp204x.c
>>> +++ b/board/keymile/kmp204x/kmp204x.c
>>> @@ -33,12 +33,51 @@ int checkboard(void)
>>> return 0;
>>> }
>>>
>>> -/* TODO: implement the I2C deblocking function */ -int
>>> i2c_make_abort(void)
>>> +/* I2C deblocking uses the algorithm defined in ../common/common.c,
>>> +which
>>> + * makes use of 2 QRIO GPIOs to act on the SCL and SDA signals of an I2C bus.
>>> + * According to the standard I2C IOs must not drive HI-Levels, so
>>> +the
>>> + * QRIO GPIOs are used in open-drain fashion:
>>> + * -> 0 GPIO configured as output that drives low
>>> + * -> 1 GPIO configured as input pull-up ties high */
>>> +
>>
>> I failed to understand these comments as well. Are these comments copy-n-paste?
>>
>
> I will let Rainer answer this as he has written this comment. But I don't think it's copy-n-paste. It's maybe not very clear for people who don't know the hardware.

No the comment isn't copy-n-paste. The GPIO just drives low states, for a high states the pin is not driven (= GPIO configured as input), it is pull-up by a resistor.
I will try to clarify this comment.

>
> Valentin

Rainer