[U-Boot] [PATCH 1/2] i2c: at91_i2c: Wait for TXRDY after sending the first byte

Yang, Wenyou Wenyou.Yang at Microchip.com
Thu Nov 30 01:14:08 UTC 2017



On 2017/11/29 11:25, Alan Ott wrote:
> The driver must wait for TXRDY after each byte is pushed into
> the i2c FIFO before pushing the next byte. Previously this was
> not done for the first byte, causing a race condition with zeros
> sometimes being sent for the next byte (which is typically the
> first actual data byte).
>
> Signed-off-by: Alan Ott <alan at softiron.com>
> ---
Acked-by:  Wenyou Yang <wenyou.yang at microchip.com>

Thank you for your patch.

>   drivers/i2c/at91_i2c.c | 2 ++
>   1 file changed, 2 insertions(+)
>
> diff --git a/drivers/i2c/at91_i2c.c b/drivers/i2c/at91_i2c.c
> index d394044..20d0929 100644
> --- a/drivers/i2c/at91_i2c.c
> +++ b/drivers/i2c/at91_i2c.c
> @@ -72,6 +72,8 @@ static int at91_i2c_xfer_msg(struct at91_i2c_bus *bus, struct i2c_msg *msg)
>   
>   	} else {
>   		writel(msg->buf[0], &reg->thr);
> +		ret = at91_wait_for_xfer(bus, TWI_SR_TXRDY);
> +
>   		for (i = 1; !ret && (i < msg->len); i++) {
>   			writel(msg->buf[i], &reg->thr);
>   			ret = at91_wait_for_xfer(bus, TWI_SR_TXRDY);

Best Regards,
Wenyou Yang


More information about the U-Boot mailing list