Hi!
On 12/03/15 13:37, ext Grygorii Strashko wrote:
>>>> + 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.
>> >
>> > But after re-reading the datasheet, I must conclude, this is almost not
>> > possible.
>> > It will be a dead code. Reset will clear BB anyway and the only
>> > possibility to see
>> > BB set to 1 here is when another master transmits right after our reset.
>> > We cannot
>> > guarantee that we will always catch this here, so this must be any way
>> > handled over
>> > AL interrupt.
> The question here what is worse:
> - silently continue execution with undefined behavior
> - or recheck and return error (That's how it was before).
>
> I like option 2 :) - don't believe HW.
OK, it will at least catch the cases when the bus is short-circuited.
--
Best regards,
Alexander Sverdlin.
--
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