Samu Onkalo <[email protected]> writes:

> Ordinary I2C read consist of two messages. First a write operation
> to tell register address and then read operation to get data.
> CPU wake up latency is set and removed twice in read case.
> Set latency requirement before the message processing loop
> and remove the requirement after the loop to remove latency
> adjustment operations between the messages.
>
> Signed-off-by: Samu Onkalo <[email protected]>

Acked-by: Kevin Hilman <[email protected]>

Samu,

Can you collect the acks and repost to [email protected] 
and Cc Ben Dooks <[email protected]>.

This one should go upstream via Ben.

Thanks,

Kevin

> ---
>  drivers/i2c/busses/i2c-omap.c |   10 ++++++----
>  1 files changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
> index b33c785..3e9323e 100644
> --- a/drivers/i2c/busses/i2c-omap.c
> +++ b/drivers/i2c/busses/i2c-omap.c
> @@ -616,12 +616,8 @@ static int omap_i2c_xfer_msg(struct i2c_adapter *adap,
>        * REVISIT: We should abort the transfer on signals, but the bus goes
>        * into arbitration and we're currently unable to recover from it.
>        */
> -     if (dev->set_mpu_wkup_lat != NULL)
> -             dev->set_mpu_wkup_lat(dev->dev, dev->latency);
>       r = wait_for_completion_timeout(&dev->cmd_complete,
>                                       OMAP_I2C_TIMEOUT);
> -     if (dev->set_mpu_wkup_lat != NULL)
> -             dev->set_mpu_wkup_lat(dev->dev, -1);
>       dev->buf_len = 0;
>       if (r < 0)
>               return r;
> @@ -672,12 +668,18 @@ omap_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg 
> msgs[], int num)
>       if (r < 0)
>               goto out;
>  
> +     if (dev->set_mpu_wkup_lat != NULL)
> +             dev->set_mpu_wkup_lat(dev->dev, dev->latency);
> +
>       for (i = 0; i < num; i++) {
>               r = omap_i2c_xfer_msg(adap, &msgs[i], (i == (num - 1)));
>               if (r != 0)
>                       break;
>       }
>  
> +     if (dev->set_mpu_wkup_lat != NULL)
> +             dev->set_mpu_wkup_lat(dev->dev, -1);
> +
>       if (r == 0)
>               r = num;
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to