Re: [PATCH V8 1/2] i2c/adapter: Add bus recovery infrastructure

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

 



On 24 January 2013 16:24, Uwe Kleine-König
<u.kleine-koenig@xxxxxxxxxxxxxx> wrote:
> On Thu, Jan 24, 2013 at 08:24:45AM +0100, Wolfram Sang wrote:
> Some more comments below.

Always welcomed :)

>> * if (val && bri->get_sda)
>>
>> > +                   /* Check SCL again to see fault condition */
>> > +                   if (!bri->get_scl(adap)) {
>> > +                           dev_err(&adap->dev, "SCL is stuck Low during recovery, exiting recovery.\n");
>>
>> > +                           goto unprepare;
>> > +                   }
>> > +
>> > +                   if (bri->get_sda(adap))
>> > +                           break;
> Indention suggests that you want this in the body of the if (val &&
> bri->get_sda). Unfortunately the C-Compiler won't notice without braces.

Wow!! It was a blunder. Don't know how the braces got dropped.

My bad, but the new patchset (already posted), must have fixed it by
mistake :)

>> Checking SDA should be done before setting SCL? That would
>>
>> a) let us escape early if SDA got HIGH magically somehow until we enter
>>    the for loop for the first time
>> b) breaking out of the for loop after the last pulse is moot
> You mean:
>
>         val = 0;
>
>         for (i = 0; i < RECOVERY_CLK_CNT * 2; i++, val = !val) {
>                 if (!val && !bri->get_scl(adap))
>                                 scl stuck low (or wait a bit to sort out clock streching)
>                 if (bri->get_sda && bri->get_sda(adap))
>                         break;
>
>                 bri->set_scl(adap, val);
>                 ndelay(clk_delay);
>         }
>
> Looks ok I think. This would also get rid of the seperate scl check
> before the loop.

I have done something similar in V9..
--
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