On 27/07/15 12:55, Sifan Naeem wrote:
> We can mark the transfer as complete without waiting for the stop
> bit. This is important when handling repeated start transfers as
> we have to start the next transfer without the stop bit being issued.
> 
> This doesn't affect the older versions of the IP.
> 
> Signed-off-by: Sifan Naeem <sifan.na...@imgtec.com>
> ---
>  drivers/i2c/busses/i2c-img-scb.c |   15 +++++----------
>  1 file changed, 5 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/i2c/busses/i2c-img-scb.c 
> b/drivers/i2c/busses/i2c-img-scb.c
> index e27c3e0..efad4d7 100644
> --- a/drivers/i2c/busses/i2c-img-scb.c
> +++ b/drivers/i2c/busses/i2c-img-scb.c
> @@ -911,16 +911,11 @@ static unsigned int img_i2c_auto(struct img_i2c *i2c,
>               }
>       } else {
>               if (int_status & INT_FIFO_EMPTY_EMPTYING) {
> -                     /*
> -                      * The write fifo empty indicates that we're in the
> -                      * last byte so it's safe to start a new write
> -                      * transaction without losing any bytes from the
> -                      * previous one.
> -                      * see 2.3.7 Repeated Start Transactions.
> -                      */
> -                     if ((int_status & INT_FIFO_EMPTY) &&
> -                         i2c->msg.len == 0)
> -                             return ISR_WAITSTOP;
> +                     if (i2c->msg.len == 0) {
> +                             if (i2c->last_msg)
> +                                     return ISR_WAITSTOP;
> +                             return ISR_COMPLETE(0);
> +                     }

Again, already happens in img_i2c_isr().

Cheers
James

>                       img_i2c_write_fifo(i2c);
>               }
>       }
> 

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to