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 <s...@chromium.org>
> > 
> > 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 <s...@chromium.org>
> > Cc: Grant Grundler <grund...@chromium.org>
> > Signed-off-by: Naveen Krishna Chatradhi <ch.nav...@samsung.com>
> > Acked-by: Kyungmin Park <kyungmin.p...@samsung.com>
> 
> Applied to for-next, thanks!

Do you consider this relevant for stable?

Attachment: signature.asc
Description: Digital signature

Reply via email to