Thread (13 messages) 13 messages, 2 authors, 2011-07-29

[PATCHV2 3/5] OMAP: I2C: Remove the reset in the init path

From: Shubhrajyoti <hidden>
Date: 2011-07-29 11:27:44
Also in: linux-i2c, linux-omap

On Thursday 21 July 2011 04:57 PM, Santosh Shilimkar wrote:
Thanks for your review.
On 7/21/2011 4:39 PM, Shubhrajyoti D wrote:
<snip>
quoted
+        /*
+         * Enabling all wakup sources to stop I2C freezing on
+         * WFI instruction.
+         * REVISIT: Some wkup sources might not be needed.
+         */
Surely not related to your patch. But the 'REVISIT:' caught
my attention. Is the comment still valid.
Yes I will look and optimise the settings. Obviously all of them may not 
be needed.
Will get back on this.

Also I see that we are not writing it for " < OMAP_I2C_REV_ON_3530_4430"
I will send a patch correcting the same.
quoted
+        dev->westate = OMAP_I2C_WE_ALL;
+        if (dev->rev<  OMAP_I2C_REV_ON_3530_4430)
Space if (dev->rev <  OMAP_I2C_REV_ON_3530_4430)
quoted
+            omap_i2c_write_reg(dev, OMAP_I2C_WE_REG,
+                            dev->westate);
      }
      omap_i2c_write_reg(dev, OMAP_I2C_CON_REG, 0);
@@ -612,6 +572,11 @@ static int omap_i2c_xfer_msg(struct i2c_adapter 
*adap,
          return r;
      if (r == 0) {
          dev_err(dev->dev, "controller timed out\n");
+        if (dev->device_reset != NULL) {
+            r = dev->device_reset(dev->dev);
+            if (r<  0)
ditto
quoted
+                dev_err(dev->dev, "reset failed\n");
+        }
          omap_i2c_init(dev);
          return -ETIMEDOUT;
      }
@@ -622,6 +587,11 @@ static int omap_i2c_xfer_msg(struct i2c_adapter 
*adap,
      /* We have an error */
      if (dev->cmd_err&  (OMAP_I2C_STAT_AL | OMAP_I2C_STAT_ROVR |
You can fix this one as well.
quoted
                  OMAP_I2C_STAT_XUDF)) {
+        if (dev->device_reset != NULL) {
+            r = dev->device_reset(dev->dev);
+            if (r<  0)
here too.
quoted
+                dev_err(dev->dev, "reset failed\n");
+        }
          omap_i2c_init(dev);
          return -EIO;
      }
@@ -1024,6 +994,7 @@ omap_i2c_probe(struct platform_device *pdev)
      if (pdata != NULL) {
          speed = pdata->clkrate;
          dev->set_mpu_wkup_lat = pdata->set_mpu_wkup_lat;
+        dev->device_reset = pdata->device_reset;
      } else {
          speed = 100;    /* Default speed */
          dev->set_mpu_wkup_lat = NULL;
Regards
Santosh
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help