* Cory Maccarrone <darkstar6...@gmail.com> [091222 17:05]:
> Commit ef871432... (i2c-omap: OMAP3: PM: (re)init for every transfer
> to support off-mode) introduced a change which make the dev->iestate
> contents be written to the OMAP_I2C_IE_REG every time omap_i2c_unidle
> is called.  Previously, the state was only written if it wasn't equal
> to zero.
> 
> In omap_i2c_probe, omap_i2c_unidle() is called prior to omap_i2c_init(),
> in which case dev->iestate has not yet been initialized and will be set
> to zero.  Having this value written to the registers causes deadlock
> while booting.
> 
> As such, this change restores the original functionality.

Looks like initializing dev->iestate to something before calling
omap_i2c_unidle in omap_i2c_probe is not an option in this case.
We'd want to initialize it to zero, which causes the deadlock..

Acked-by: Tony Lindgren <t...@atomide.com>


> 
> Signed-off-by: Cory Maccarrone <darkstar6...@gmail.com>
> ---
>  drivers/i2c/busses/i2c-omap.c |    8 +++++++-
>  1 files changed, 7 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
> index 3440d88..c0bb9eb 100644
> --- a/drivers/i2c/busses/i2c-omap.c
> +++ b/drivers/i2c/busses/i2c-omap.c
> @@ -248,7 +248,13 @@ static void omap_i2c_unidle(struct omap_i2c_dev *dev)
>               omap_i2c_write_reg(dev, OMAP_I2C_CON_REG, OMAP_I2C_CON_EN);
>       }
>       dev->idle = 0;
> -     omap_i2c_write_reg(dev, OMAP_I2C_IE_REG, dev->iestate);
> +
> +     /*
> +      * Don't write to this register if the IE state is 0 as it can
> +      * cause deadlock.
> +      */
> +     if (dev->iestate)
> +             omap_i2c_write_reg(dev, OMAP_I2C_IE_REG, dev->iestate);
>  }
>  
>  static void omap_i2c_idle(struct omap_i2c_dev *dev)
> -- 
> 1.6.3.3
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to