On 24 Jun 2010, at 13:35, Naveen Krishna Ch <[email protected]> wrote:

> Hi Mark,
> 
> On 24 June 2010 17:02, Mark Brown <[email protected]> wrote:
>> 
>> On Wed, Jun 23, 2010 at 11:15:55AM +0530, Naveen Krishna Ch wrote:
>> 
>>> Where should i be looking,
>> 
>> I would suggest looking at the driver and comparing it with the
>> datasheet.
>> 
>>> Will changing the spin counts work?
>> 
>> I'd expect this to be unlikely.  Note that if we run out of spins we
>> still go for the 1ms sleep that was being used originally so it's more
>> likely that there's a bug in the chip when that register is being read
>> (though this would be surprising) or some other change in your kernel is
>> causing problems.
> 
>  --- a/drivers/i2c/busses/i2c-s3c2410.c
> +++ b/drivers/i2c/busses/i2c-s3c2410.c
> @@ -527,7 +527,7 @@ static int s3c24xx_i2c_doxfer(struct s3c24xx_i2c *i2c,
>         /* first, try busy waiting briefly */
>         do {
>                 iicstat = readl(i2c->regs + S3C2410_IICSTAT);
> -       } while ((iicstat & S3C2410_IICSTAT_START) && --spins);
> +       } while (--spins && (iicstat & S3C2410_IICSTAT_START));
> 
>         /* if that timed out sleep */
>         if (!spins) {
> 
> Does the trick..

That smells rather like a compiler bug to me - the two versions
ought to be equivalent apart from the ordering of the comparisons.--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to