On 01/31/2014 04:46 AM, Valentin Longchamp wrote: > From: Rainer Boschung <rainer.bosch...@keymile.com> > > This patch adds support for using some GPIOs that are connected to the > I2C bus to force the bus lines state and perform some bus deblocking > sequences. > > The KM common deblocking algorithm from board/keymile/common/common.c is > used. The GPIO lines used for deblocking the I2C bus are some external > GPIOs provided by the QRIO CPLD: > - SCL = GPIOA_20 > - SDA = GPIOA_21 > > The QRIO GPIOs act in an open-drain-like manner, for 0 the line is > driven low and for 1 the GPIO is set as input and the line gets > pulled-up. > > Signed-off-by: Rainer Boschung <rainer.bosch...@keymile.com> > Signed-off-by: Valentin Longchamp <valentin.longch...@keymile.com> > > --- > > Changes in v3: > - rewrite the commit message and and the comments for more clarity > - fix the GPIO numbers that where not correct > > 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..726d26e 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 board/keymile/common/common.c > + * 2 dedicated QRIO GPIOs externally pull the SCL and SDA lines > + * For I2C only the low state is activly driven and high state is pulled-up > + * by a resistor. Therefore the deblock GPIOs are used > + * -> as an active output to drive a low state > + * -> as an open-drain input to have a pulled-up high state > + */ > + > +/* QRIO GPIOs used for deblocking */ > +#define DEBLOCK_PORT1 GPIO_A > +#define DEBLOCK_SCL1 20 > +#define DEBLOCK_SDA1 21
You changed these macros but didn't change those below. This causes compiling errors. Please fix it and compile before sending v4. > + > +/* By default deblock GPIOs are floating */ > +static void i2c_deblock_gpio_cfg(void) > +{ > + /* set I2C bus 1 deblocking GPIOs input, but 0 value for open drain */ > + qrio_gpio_direction_input(DBLK_PORT1, DBLK_SCL1); > + qrio_gpio_direction_input(DBLK_PORT1, DBLK_SDA1); > + > + qrio_set_gpio(DBLK_PORT1, DBLK_SCL1, 0); > + qrio_set_gpio(DBLK_PORT1, DBLK_SDA1, 0); > +} York _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot