Re: [PATCH] i2c-s3c2410: Leave the bus disabled unless it is in use

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

 



On Wed, Mar 12, 2014 at 08:27:14PM +0100, Wolfram Sang wrote:
> On Fri, Feb 07, 2014 at 02:24:09PM +0530, Naveen Krishna Chatradhi wrote:
> > From: Simon Glass <sjg@xxxxxxxxxxxx>
> > 
> > There is a rather odd feature of the exynos i2c controller that if it
> > is left enabled, it can lock itself up with the clk line held low.
> > This makes the bus unusable.
> > 
> > Unfortunately, the s3c24xx_i2c_set_master() function does not notice
> > this, and reports a timeout. From then on the bus cannot be used until
> > the AP is rebooted.
> > 
> > The problem happens when any sort of interrupt occurs (e.g. due to a
> > bus transition) when we are not in the middle of a transaction. We
> > have seen many instances of this when U-Boot leaves the bus apparently
> > happy, but Linux cannot access it.
> > 
> > The current code is therefore pretty fragile.
> > 
> > This fixes things by leaving the bus disabled unless we are actually
> > in a transaction. We enable the bus at the start of the transaction and
> > disable it at the end. That way we won't get interrupts and will not
> > lock up the bus.
> > 
> > It might be possible to clear pending interrupts on start-up, but this
> > seems to be a more robust solution. We can't service interrupts when
> > we are not in a transaction, and anyway would rather not lock up the
> > bus while we try.
> > 
> > Signed-off-by: Simon Glass <sjg@xxxxxxxxxxxx>
> > Cc: Grant Grundler <grundler@xxxxxxxxxxxx>
> > Signed-off-by: Naveen Krishna Chatradhi <ch.naveen@xxxxxxxxxxx>
> > Acked-by: Kyungmin Park <kyungmin.park@xxxxxxxxxxx>
> 
> Applied to for-next, thanks!

Do you consider this relevant for stable?

Attachment: signature.asc
Description: Digital signature


[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