|
@@ -286,6 +286,11 @@ static int omap_i2c_init(struct omap_i2c_dev *dev)
|
|
unsigned long internal_clk = 0;
|
|
unsigned long internal_clk = 0;
|
|
|
|
|
|
if (dev->rev >= OMAP_I2C_REV_2) {
|
|
if (dev->rev >= OMAP_I2C_REV_2) {
|
|
|
|
+ /* Disable I2C controller before soft reset */
|
|
|
|
+ omap_i2c_write_reg(dev, OMAP_I2C_CON_REG,
|
|
|
|
+ omap_i2c_read_reg(dev, OMAP_I2C_CON_REG) &
|
|
|
|
+ ~(OMAP_I2C_CON_EN));
|
|
|
|
+
|
|
omap_i2c_write_reg(dev, OMAP_I2C_SYSC_REG, SYSC_SOFTRESET_MASK);
|
|
omap_i2c_write_reg(dev, OMAP_I2C_SYSC_REG, SYSC_SOFTRESET_MASK);
|
|
/* For some reason we need to set the EN bit before the
|
|
/* For some reason we need to set the EN bit before the
|
|
* reset done bit gets set. */
|
|
* reset done bit gets set. */
|