Hi!

Grygorii.Strashko@... <grygorii.strashko@...> writes:
> > +/*
> > + * Wait until specific bit in status register has particular value
> > + * Function returns 0 if condition was met,
> > + * -ETIMEDOUT in case of timeout.
> > + */
> > +static int i2c_davinci_wait_status_change(struct davinci_i2c_dev *dev, 
u16 mask,
> > +                                          u16 val)
> 
> do we really need it as separate function? (even if it looks good:)

Initially I had a patch for "recover" function also, but I've dropped it and 
I'm going to test your series. It might be re-used in case if we want to 
wait for something in the recover...
 
> > +{
> > +   unsigned long timeout = jiffies + dev->adapter.timeout;
> > +
> > +   while ((davinci_i2c_read_reg(dev, DAVINCI_I2C_STR_REG) & mask) != 
val) {
> > +           if (time_after(jiffies, timeout))
> > +                   return -ETIMEDOUT;
> > +           set_current_state(TASK_UNINTERRUPTIBLE);
> > +           schedule_timeout(1);
> 
> schedule_timeout_uninterruptible()

Will do in v2...

[...]

> > +   if (i2c_davinci_wait_status_change(dev, DAVINCI_I2C_STR_BB, 0)) {
> > +           dev_warn(dev->dev, "timeout waiting for bus ready\n");
> > +           davinci_i2c_recover_bus(dev);
> > +           i2c_davinci_init(dev);
> > +           /*
> > +            * the bus should not be busy after init, otherwise 
something
> > +            * is badly broken
> > +            */
> 
> I think you should recheck BB and return error if it's still detected.

Good idea! Will do in v2...

> >     }
> >
> >     return 0;
> >  <at>  <at>  -449,7 +456,7  <at>  <at>  i2c_davinci_xfer(struct 
i2c_adapter *adap, struct i2c_msg msgs[], int num)
> >
> >     dev_dbg(dev->dev, "%s: msgs: %d\n", __func__, num);
> >
> > -   ret = i2c_davinci_wait_bus_not_busy(dev, 1);
> > +   ret = i2c_davinci_wait_bus_not_busy(dev);
> >     if (ret < 0) {
> >             dev_warn(dev->dev, "timeout waiting for bus ready\n");
> >             return ret;


Alex.


--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to