Re: [PATCH 2/3] i2c: davinci: Refactor i2c_davinci_wait_bus_not_busy()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux GPIO]     [Linux SPI]     [Linux Hardward Monitoring]     [LM Sensors]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux