[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)dittoquoted
+ 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