
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